> ## Documentation Index
> Fetch the complete documentation index at: https://openrouter.ai/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Models

> Model information endpoints

## Overview

Model information endpoints

### Available Operations

* [get](#get) - Get a model by its slug
* [list](#list) - List all models and their properties
* [count](#count) - Get total count of available models
* [list\_for\_user](#list_for_user) - List models filtered by user provider preferences, privacy settings, and guardrails

## get

Returns full details for a single model identified by its author and slug (e.g. openai/gpt-4). Supports variant suffixes (e.g. openai/gpt-4:free) and resolves known slug aliases.

### Example Usage

```python theme={null}
from openrouter import OpenRouter
import os


with OpenRouter(
    http_referer="<value>",
    x_open_router_title="<value>",
    x_open_router_categories="<value>",
    api_key=os.getenv("OPENROUTER_API_KEY", ""),
) as open_router:

    res = open_router.models.get(author="openai", slug="gpt-4")

    # Handle response
    print(res)

```

### Parameters

| Parameter | Type | Required | Description | Example |
| - | - | - | - | - |
| `author` | *str* | :heavy\_check\_mark: | The author/organization of the model | openai |
| `slug` | *str* | :heavy\_check\_mark: | The model slug, optionally including a variant suffix (e.g. gpt-4 or gpt-4:free) | gpt-4 |
| `http_referer` | *Optional\[str]* | :heavy\_minus\_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.<br />This is used to track API usage per application.<br /> | |
| `x_open_router_title` | *Optional\[str]* | :heavy\_minus\_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.<br /> | |
| `x_open_router_categories` | *Optional\[str]* | :heavy\_minus\_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.<br /> | |
| `retries` | [Optional\[utils.RetryConfig\]](../../models/utils/retryconfig.mdx) | :heavy\_minus\_sign: | Configuration to override the default retry behavior of the client. | |

### Response

**[components.ModelResponse](../../components/modelresponse.mdx)**

### Errors

| Error Type | Status Code | Content Type |
| - | - | - |
| errors.ForbiddenResponseError | 403 | application/json |
| errors.NotFoundResponseError | 404 | application/json |
| errors.InternalServerResponseError | 500 | application/json |
| errors.OpenRouterDefaultError | 4XX, 5XX | \*/\* |

## list

List all models and their properties

### Example Usage

```python theme={null}
from openrouter import OpenRouter
import os


with OpenRouter(
    http_referer="<value>",
    x_open_router_title="<value>",
    x_open_router_categories="<value>",
    api_key=os.getenv("OPENROUTER_API_KEY", ""),
) as open_router:

    res = open_router.models.list(offset=0, limit=500)

    while res is not None:
        # Handle items

        res = res.next()

```

### Parameters

| Parameter | Type | Required | Description | Example |
| - | - | - | - | - |
| `http_referer` | *Optional\[str]* | :heavy\_minus\_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.<br />This is used to track API usage per application.<br /> | |
| `x_open_router_title` | *Optional\[str]* | :heavy\_minus\_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.<br /> | |
| `x_open_router_categories` | *Optional\[str]* | :heavy\_minus\_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.<br /> | |
| `offset` | *OptionalNullable\[int]* | :heavy\_minus\_sign: | Number of records to skip for pagination. When both offset and limit are omitted, the full list is returned | 0 |
| `limit` | *Optional\[int]* | :heavy\_minus\_sign: | Maximum number of records to return (max 1000). When both offset and limit are omitted, the full list is returned | 500 |
| `category` | [Optional\[operations.GetModelsCategory\]](../../operations/getmodelscategory.mdx) | :heavy\_minus\_sign: | Filter models by use case category | programming |
| `supported_parameters` | *Optional\[str]* | :heavy\_minus\_sign: | Filter models by supported parameter (comma-separated) | temperature |
| `output_modalities` | *Optional\[str]* | :heavy\_minus\_sign: | Filter models by output modality. Accepts a comma-separated list of modalities (text, image, embeddings, audio, video, rerank, decisions, speech, transcription) or "all" to include all models. Defaults to "text". | text |
| `sort` | [Optional\[operations.GetModelsSort\]](../../operations/getmodelssort.mdx) | :heavy\_minus\_sign: | Sort the returned models server-side. Prefer this over fetching the full list and sorting client-side. Options: pricing-low-to-high, pricing-high-to-low (average prompt/completion price), context-high-to-low (context length), throughput-high-to-low, latency-low-to-high (recent median performance), most-popular, top-weekly (tokens processed in the last week), newest (creation date), intelligence-high-to-low, coding-high-to-low, agentic-high-to-low (Artificial Analysis indices), design-arena-elo-high-to-low (best Design Arena ELO across arenas). Models without a score for the chosen benchmark are placed last. When omitted, the existing default ordering is preserved. | newest |
| `q` | *Optional\[str]* | :heavy\_minus\_sign: | Free-text search by model name or slug. | gpt-4 |
| `input_modalities` | *Optional\[str]* | :heavy\_minus\_sign: | Filter models by input modality. Comma-separated list of: text, image, audio, file. | text,image |
| `context` | *Optional\[int]* | :heavy\_minus\_sign: | Minimum context length (tokens). Models with smaller context are excluded. | 128000 |
| `min_price` | *OptionalNullable\[float]* | :heavy\_minus\_sign: | Minimum prompt price in \$/M tokens. | 0 |
| `max_price` | *OptionalNullable\[float]* | :heavy\_minus\_sign: | Maximum prompt price in \$/M tokens. | 10 |
| `arch` | *Optional\[str]* | :heavy\_minus\_sign: | Filter models by architecture/model family (e.g. GPT, Claude, Gemini, Llama). | GPT |
| `model_authors` | *Optional\[str]* | :heavy\_minus\_sign: | Filter models by the organization that created the model. Comma-separated list of author slugs. | openai,anthropic |
| `providers` | *Optional\[str]* | :heavy\_minus\_sign: | Filter models by hosting provider. Comma-separated list of provider names. | OpenAI,Anthropic |
| `distillable` | [Optional\[operations.Distillable\]](../../operations/distillable.mdx) | :heavy\_minus\_sign: | Filter by distillation capability. "true" returns only distillable models, "false" excludes them. | true |
| `zdr` | [Optional\[operations.Zdr\]](../../operations/zdr.mdx) | :heavy\_minus\_sign: | When set to "true", return only models with zero data retention endpoints. | true |
| `region` | [Optional\[operations.Region\]](../../operations/region.mdx) | :heavy\_minus\_sign: | Filter to models with endpoints in the given data region ("eu" or "us"). | eu |
| `min_output_price` | *OptionalNullable\[float]* | :heavy\_minus\_sign: | Minimum completion (output) price in \$/M tokens. | 0 |
| `max_output_price` | *OptionalNullable\[float]* | :heavy\_minus\_sign: | Maximum completion (output) price in \$/M tokens. | 10 |
| `min_age_days` | *OptionalNullable\[int]* | :heavy\_minus\_sign: | Minimum model age in days since its creation date. | 0 |
| `max_age_days` | *OptionalNullable\[int]* | :heavy\_minus\_sign: | Maximum model age in days since its creation date. | 90 |
| `min_intelligence_index` | *OptionalNullable\[float]* | :heavy\_minus\_sign: | Minimum Artificial Analysis intelligence index. | 50 |
| `max_intelligence_index` | *OptionalNullable\[float]* | :heavy\_minus\_sign: | Maximum Artificial Analysis intelligence index. | 100 |
| `min_coding_index` | *OptionalNullable\[float]* | :heavy\_minus\_sign: | Minimum Artificial Analysis coding index. | 50 |
| `max_coding_index` | *OptionalNullable\[float]* | :heavy\_minus\_sign: | Maximum Artificial Analysis coding index. | 100 |
| `min_agentic_index` | *OptionalNullable\[float]* | :heavy\_minus\_sign: | Minimum Artificial Analysis agentic index. | 50 |
| `max_agentic_index` | *OptionalNullable\[float]* | :heavy\_minus\_sign: | Maximum Artificial Analysis agentic index. | 100 |
| `min_tool_success_rate` | *OptionalNullable\[float]* | :heavy\_minus\_sign: | Minimum tool-calling success rate, as a fraction in \[0, 1] (e.g. 0.9 = 90% of requests finishing with a tool\_calls finish reason). | 0.9 |
| `max_tool_success_rate` | *OptionalNullable\[float]* | :heavy\_minus\_sign: | Maximum tool-calling success rate, as a fraction in \[0, 1]. | 1 |
| `retries` | [Optional\[utils.RetryConfig\]](../../models/utils/retryconfig.mdx) | :heavy\_minus\_sign: | Configuration to override the default retry behavior of the client. | |

### Response

**[operations.GetModelsResponse](../../operations/getmodelsresponse.mdx)**

### Errors

| Error Type | Status Code | Content Type |
| - | - | - |
| errors.BadRequestResponseError | 400 | application/json |
| errors.ForbiddenResponseError | 403 | application/json |
| errors.InternalServerResponseError | 500 | application/json |
| errors.OpenRouterDefaultError | 4XX, 5XX | \*/\* |

## count

Get total count of available models

### Example Usage

```python theme={null}
from openrouter import OpenRouter
import os


with OpenRouter(
    http_referer="<value>",
    x_open_router_title="<value>",
    x_open_router_categories="<value>",
    api_key=os.getenv("OPENROUTER_API_KEY", ""),
) as open_router:

    res = open_router.models.count()

    # Handle response
    print(res)

```

### Parameters

| Parameter | Type | Required | Description | Example |
| - | - | - | - | - |
| `http_referer` | *Optional\[str]* | :heavy\_minus\_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.<br />This is used to track API usage per application.<br /> | |
| `x_open_router_title` | *Optional\[str]* | :heavy\_minus\_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.<br /> | |
| `x_open_router_categories` | *Optional\[str]* | :heavy\_minus\_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.<br /> | |
| `output_modalities` | *Optional\[str]* | :heavy\_minus\_sign: | Filter models by output modality. Accepts a comma-separated list of modalities (text, image, embeddings, audio, video, rerank, decisions, speech, transcription) or "all" to include all models. Defaults to "text". | text |
| `retries` | [Optional\[utils.RetryConfig\]](../../models/utils/retryconfig.mdx) | :heavy\_minus\_sign: | Configuration to override the default retry behavior of the client. | |

### Response

**[components.ModelsCountResponse](../../components/modelscountresponse.mdx)**

### Errors

| Error Type | Status Code | Content Type |
| - | - | - |
| errors.BadRequestResponseError | 400 | application/json |
| errors.ForbiddenResponseError | 403 | application/json |
| errors.InternalServerResponseError | 500 | application/json |
| errors.OpenRouterDefaultError | 4XX, 5XX | \*/\* |

## list\_for\_user

List models filtered by user provider preferences, [privacy settings](https://openrouter.ai/docs/guides/privacy/provider-logging), and [guardrails](https://openrouter.ai/docs/guides/features/guardrails). Returns text-output models by default; pass `output_modalities` (a comma-separated list of `text`, `image`, `embeddings`, `audio`, `video`, `rerank`, `speech`, `transcription`, or `all`) to include other modalities. If requesting through a regional hostname, the results will be filtered to models that satisfy in-region routing for that region.

### Example Usage

```python theme={null}
from openrouter import OpenRouter, operations
import os


with OpenRouter(
    http_referer="<value>",
    x_open_router_title="<value>",
    x_open_router_categories="<value>",
) as open_router:

    res = open_router.models.list_for_user(security=operations.ListModelsUserSecurity(
        bearer=os.getenv("OPENROUTER_BEARER", ""),
    ), offset=0, limit=500)

    while res is not None:
        # Handle items

        res = res.next()

```

### Parameters

| Parameter | Type | Required | Description | Example |
| - | - | - | - | - |
| `security` | [operations.ListModelsUserSecurity](../../operations/listmodelsusersecurity.mdx) | :heavy\_check\_mark: | N/A | |
| `http_referer` | *Optional\[str]* | :heavy\_minus\_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.<br />This is used to track API usage per application.<br /> | |
| `x_open_router_title` | *Optional\[str]* | :heavy\_minus\_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.<br /> | |
| `x_open_router_categories` | *Optional\[str]* | :heavy\_minus\_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.<br /> | |
| `offset` | *OptionalNullable\[int]* | :heavy\_minus\_sign: | Number of records to skip for pagination. When both offset and limit are omitted, the full list is returned | 0 |
| `limit` | *Optional\[int]* | :heavy\_minus\_sign: | Maximum number of records to return (max 1000). When both offset and limit are omitted, the full list is returned | 500 |
| `output_modalities` | *Optional\[str]* | :heavy\_minus\_sign: | Filter models by output modality. Accepts a comma-separated list of modalities (text, image, embeddings, audio, video, rerank, decisions, speech, transcription) or "all" to include all models. Defaults to "text". | text |
| `retries` | [Optional\[utils.RetryConfig\]](../../models/utils/retryconfig.mdx) | :heavy\_minus\_sign: | Configuration to override the default retry behavior of the client. | |

### Response

**[operations.ListModelsUserResponse](../../operations/listmodelsuserresponse.mdx)**

### Errors

| Error Type | Status Code | Content Type |
| - | - | - |
| errors.UnauthorizedResponseError | 401 | application/json |
| errors.ForbiddenResponseError | 403 | application/json |
| errors.NotFoundResponseError | 404 | application/json |
| errors.InternalServerResponseError | 500 | application/json |
| errors.OpenRouterDefaultError | 4XX, 5XX | \*/\* |
