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

# List models

> Discover the models enabled in your workspace.

`GET /v1/models` returns callable active models in the API key's workspace,
filtered by the key's model allowlist and available channels/runtime. Always use
your own response to choose a model. A disabled model disappears and new requests
for it fail with `404 model_unavailable`; a key restricted to other models receives
`403 model_not_allowed`.

```bash cURL theme={null}
curl https://api.omnirelay.ai/v1/models \
  -H "Authorization: Bearer $OMNIRELAY_API_KEY"
```

```python Python theme={null}
for model in client.models.list():
    print(model.id, model.owned_by)
```

```javascript JavaScript theme={null}
for await (const model of client.models.list()) {
  console.log(model.id, model.owned_by);
}
```

The example below shows selected fields from an enabled workspace; it is not a fixed list for every account.

```json theme={null}
{
  "object": "list",
  "data": [
    {
      "id": "gpt-5.4-mini",
      "object": "model",
      "owned_by": "OpenAI",
      "mode": "live",
      "context_length": 400000,
      "capabilities": {
        "text": true,
        "stream": true,
        "system": true,
        "developer": false,
        "reasoning_content": false,
        "tools": true,
        "vision": false,
        "structured_output": true,
        "json_object": true,
        "json_schema": true,
        "responses": true,
        "embeddings": false
      },
      "limits": {
        "output_tokens": 256,
        "default_output_tokens": 64
      },
      "reasoning_efforts": [
        "none"
      ],
      "default_reasoning_effort": "none"
    }
  ]
}
```

## Fields

Every entry keeps the OpenAI fields (`id`, `object`, `owned_by`), so existing clients are unaffected. The rest tells you what a model accepts and what it costs you:

| Field | Meaning |
| - | - |
| `name` | Display name. |
| `context_length` | Context window in tokens. |
| `mode` | `live`: the model calls a real provider. |
| `capabilities` | What the model accepts through this gateway. A request that uses a capability marked `false` is rejected rather than silently ignored. |
| `pricing` | Input/output rates in `pricing_unit`. Rates are base rates; apply the customer discount to the full rounded request charge. |
| `list_pricing` | The price before any discount. |
| `discount` | Share taken off the list price for your workspace and this model: `0.2` means 20% off. |
| `limits` | Gateway limits, including live `output_tokens` maximum and `default_output_tokens`; these are smaller than manufacturer limits where the gateway restricts them. |
| `reservation` | Holds in micro-USD at current customer prices; not settled charges. `minimum_customer_hold` and `default_customer_hold` are for the shortest request with one and the default output tokens; `maximum_customer_hold` is a request at the input ceiling with maximum output. A longer prompt holds more, about one input token per request byte. |
| `reasoning_efforts`, `default_reasoning_effort` | Allowed effort values and the effort injected when omitted. |
| `context_verified`, `context_basis` | Whether the context contract is verified; `input-plus-output` describes the physical joint context. |
| `max_input_tokens` | Reviewed input ceiling; it is not measured input for your prompt. |
| `token_budget_mode` | `provider-context-ceiling` caps the reserved input at the model's independent input ceiling. |
| `input_bound_basis` | `provider-enforced-input-ceiling`: the reserved input is an estimate, a third of the request's byte length plus 4,096 tokens of fixed overhead, never more than the provider-enforced ceiling. Settlement may exceed the hold by up to twice when your funds cover it. |
| `context_fit_validation` | `provider`: the model provider, rather than a local exact tokenizer, decides whether this prompt fits. |
| `reservation_basis` | `independent-input-output-ceilings`: reserve input and requested output bounds separately without enlarging physical context. |
| `price_version`, `cache_pricing`, `input_tiers` | Frozen price identifier and customer cache/tier base rates where relevant. Internal costs and routing are not exposed. |
| `reasoning_price`, `request_fee_microusd` | Customer reasoning-output base rate per million tokens and fixed request fee in micro-USD; the initial endpoint has no request fee. |
| `customer_discount_bps`, `customer_discount_source` | Live price factor in basis points (`10000` = full price), selected from workspace or model; model overrides do not stack. |

Prices are integers in micro-USD per 1M tokens: `2500000` is \$2.50 per million tokens.

## Integrated live text models

As of 2026-10-11, the reviewed production catalog has 19 live text IDs, and all of them support SSE: `claude-fable-5`, `claude-fable-5-1`, `claude-opus-4-8`, `claude-opus-5`, `claude-sonnet-5`, `claude-sonnet-5-5`, `deepseek-v4-pro`, `gemini-3.1-pro-preview`, `gemini-3.6-flash`, `glm-5.3`, `gpt-5.4-mini`, `gpt-5.6-luna`, `gpt-5.6-sol`, `gpt-5.6-terra`, `gpt-6-astra`, `gpt-6-luna`, `gpt-6-sol`, `gpt-6.1-sol` and `kimi-k3`. DeepSeek V4 Pro and GLM 5.3 can return reasoning content. This is an integration snapshot, not access for every workspace; your own key response controls availability. `gemini-3.1-pro-preview`, `gemini-3.6-flash` and `kimi-k3` are new in this snapshot and `gpt-5.6-luna` is available again. The DeepSeek V3.2 routes (`deepseek-v3.2-exp`, `deepseek-v3.2-exp-thinking`, `deepseek-v3.2-thinking`), Claude Haiku 4.5, Claude Opus 4.7 and Claude Sonnet 4.6 were withdrawn and are no longer callable.

Most integrated text models allow up to 128,000 output tokens and default to 32,000 (Gemini 3.1 Pro Preview and Gemini 3.6 Flash: at most 65,536); DeepSeek V4 Pro, GLM 5.3 and Kimi K3 default to and allow at most 4,096; GPT 5.4 Mini defaults to 64 and allows at most 256. Only request streaming when `capabilities.stream` is true; reasoning text requires `capabilities.reasoning_content`. Omit reasoning effort when `reasoning_efforts` is empty. GPT 5.4 Mini additionally supports function tools, JSON object/schema and Responses. Read `capabilities.tools`, `json_object`, `json_schema` and `responses`; vision and sampling remain unavailable.

Public catalog entries marked pending are not callable. Image and video generation have no public endpoints; models with unverified billing are not enabled either.

### GPT 5.4 Mini example

An explicitly enabled workspace can include `gpt-5.4-mini` with `mode: live`.
This does not make every account or catalog model callable. Its physical
context is 400,000 tokens; service output is default 64 and maximum 256 tokens.
Text, `system` messages and SSE are supported. Only reasoning `none` is allowed
and is injected by default. Function tools, JSON object/schema and Responses are supported; strict tools, named function selection, vision and sampling remain disabled. The `capabilities` map includes `system`, `developer`
and `reasoning_content` so clients can check those distinctions.

Selected fields of an enabled model, before any customer discount:

```json theme={null}
{
  "id": "gpt-5.4-mini", "mode": "live", "context_length": 400000,
  "pricing": { "input": 750000, "output": 4500000 },
  "cache_pricing": { "read": 75000, "write": 0, "unit": "micro-USD / 1M tokens" },
  "discount": 0, "customer_discount_bps": 10000,
  "limits": { "output_tokens": 256, "default_output_tokens": 64 },
  "reasoning_efforts": ["none"], "default_reasoning_effort": "none",
  "context_verified": true, "context_basis": "input-plus-output", "max_input_tokens": 400000,
  "token_budget_mode": "provider-context-ceiling",
  "input_bound_basis": "provider-enforced-input-ceiling",
  "context_fit_validation": "provider",
  "reservation_basis": "independent-input-output-ceilings"
}
```

The maximum hold depends on current workspace prices. It is not the actual fee
and does not advertise 400,256 usable context tokens; the provider can reject a
prompt that does not fit. See [Usage and billing](https://omnirelay.ai/docs/general/usage-billing.md).

See the [List models](https://omnirelay.ai/docs/api-reference/models/list-models.md) for the full schema.

## Image models

Image models (`gpt-image-2`, `gpt-image-2.5`) are listed when your workspace can call them. They are priced per image, not per token, so their entries differ from text models:

```json theme={null}
{
  "id": "gpt-image-2",
  "object": "model",
  "owned_by": "OpenAI",
  "name": "GPT Image 2",
  "mode": "live",
  "capabilities": { "image_generation": true, "image_edits": true },
  "pricing_unit": "microUSD-per-image",
  "pricing": { "per_image": { "1K": 134000, "2K": 201000, "4K": 268000 } },
  "list_pricing": { "per_image": { "1K": 134000, "2K": 201000, "4K": 268000 } },
  "discount": 0,
  "max_images": 4,
  "size_tiers": { "1K": "longest side up to 1024 px", "2K": "longest side up to 2048 px; also size omitted or auto", "4K": "longest side up to 4096 px" },
  "price_version": "…"
}
```

`pricing.per_image` is your price per image in micro-USD after your discount; `list_pricing.per_image` is the price before it. There is no `context_length`, `limits` or token pricing. Call them with [Image generation and editing](https://omnirelay.ai/docs/images/image-generation.md).

## Video models

Video models (`doubao-seedance-2-0-260128`) are listed when your workspace can call them. They are priced per million output tokens and called through the [video task API](https://omnirelay.ai/docs/videos/video-generation.md), so their entries differ from text models:

```json theme={null}
{
  "id": "doubao-seedance-2-0-260128",
  "object": "model",
  "type": "video",
  "owned_by": "ByteDance",
  "name": "Seedance 2.0",
  "mode": "live",
  "capabilities": { "video_generation": true, "text_to_video": true, "image_to_video": false },
  "pricing_unit": "microUSD-per-million-output-tokens",
  "pricing": { "output": 25000000 },
  "list_pricing": { "output": 25000000 },
  "discount": 0,
  "resolutions": ["480p", "720p"],
  "ratios": ["16:9", "4:3", "1:1", "3:4", "9:16", "21:9", "adaptive"],
  "duration": { "min": 4, "max": 10, "default": 5 },
  "token_rule": "output tokens = width x height x (24 x duration + 1) / 1024",
  "price_version": "…"
}
```

`pricing.output` is your price per million output tokens in micro-USD after your discount; `list_pricing.output` is the price before it. There is no `context_length` or input price.

## Browse before activation

**Console → Model marketplace** displays supported platform models and prices before activation. Every model is unavailable and has no call action until workspace activation is verified. Marketplace discovery does not grant API access. Clicking the information icon opens a details popup and keeps the current page URL. The **Live model service** status panel is shown only on Overview.

This browsing catalog does not grant inference access. `GET /v1/models` remains the API key's callable list, subject to workspace activation, runtime/channels and key restrictions.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.