# Models API

https://modelportal.ai/docs/api-models

## GET /v1/models

OpenAI format, key required. Returns only models this key may call (subject to the key's allowed models) that have an available endpoint.

```bash
curl https://modelportal.ai/v1/models -H "Authorization: Bearer YOUR_API_KEY"
```

```json
{"object": "list", "data": [{"id": "deepseek/deepseek-v3.2", "object": "model", "created": 1767225600, "owned_by": "modelportal"}]}
```

The Anthropic format (with an `anthropic-version` header) and the Gemini format (`GET /v1beta/models`) follow the same rules.

## GET /api/v1/models

Platform format, no auth needed.

| Query parameter | Meaning |
| --- | --- |
| `q` | Search by model name, model ID or publisher |
| `capability` | Filter by capability: `tools`, `vision`, `reasoning`, `structured_output` |
| `provider` | Filter by provider identifier |
| `data_policy`, `data_region` | `data_policy` takes `no_retention` or `no_training`; `data_region` takes `us`, `eu`, `apac` or `cn` |
| `limit`, `cursor` | Pagination; when the response has `next_cursor`, pass it to get the next page |

Each model carries `slug` (the model ID), `display_name`, `capabilities`, `status`, `availability`, `input_limits`, `price_summary`, `provider_count`, publisher details and more, plus `offerings`: one entry per routable endpoint with the fields listed under the detail below, and also:

| Field | Meaning |
| --- | --- |
| `config_version` | The current configuration version; the current price version is `price.version` |
| `rpm_limit`, `tpm_limit` | Declared rate limits; `null` when not declared |
| `stats_24h` | Success rate and time to first token over 24 hours; `null` with too few samples |
| `rating` | Eagle Eye rating summary; not connected yet, so `null` |

Responses may be cached for up to 60 seconds.

## GET /api/v1/models/{model ID}

One model in detail, no auth needed; write the `/` in the model ID as `%2F`. Besides the list fields, it returns `offerings`, one entry per routable endpoint:

| Field | Meaning |
| --- | --- |
| `offering_id` | Endpoint identifier, starting with `route_`; usable in `provider.only` |
| `supplier.slug` | Provider identifier; usable in `provider.order`, `only` and `ignore` |
| `status` | Endpoint status, such as available or degraded |
| `variant`, `upstream_model`, `source_type` | Variant name, upstream model name, supply type |
| `config` | Declared configuration: `quantization`, `context_length`, `max_output_tokens`, `capabilities`, `sampling_params` and more |
| `data_policy` | Retention, retention days, training use, data processing region and privacy policy link; undeclared items are `null` |
| `forbidden_regions` | Regions the endpoint does not serve |
| `price`, `next_price` | The price version in effect and the earliest pending one |
| `stats_7d` | Success rate and time to first token over 7 days; `null` with too few samples |

```bash
curl https://modelportal.ai/api/v1/models/deepseek%2Fdeepseek-v3.2
```
