# Models, pricing and limits

Model ids, prices per 1M tokens, context windows, output limits, versions and the live catalog endpoint.

## Models and pricing

Prices are USD per 1M tokens. A struck figure is a list price we sell under. Cached input tokens
are prompt tokens billed at the cached rate, reported in
`usage.prompt_tokens_details.cached_tokens`.

| Model id | Name | Input | Cached input | Output |
| --- | --- | --- | --- | --- |
| `deepseek/deepseek-v4.1-flash` | DeepSeek V4.1 Flash | ~~$0.12~~ $0.06 | ~~$0.006~~ $0.003 | ~~$0.48~~ $0.24 |
| `z-ai/glm-5.3-flash` | GLM 5.3 Flash | ~~$0.15~~ $0.12 | ~~$0.03~~ $0.024 | ~~$0.50~~ $0.40 |
| `deepseek/deepseek-v4.1-flash-1017` | DeepSeek V4.1 Flash 1017 | ~~$0.12~~ $0.06 | ~~$0.006~~ $0.003 | ~~$0.48~~ $0.24 |
| `deepseek/deepseek-v4.1-flash-0910` | DeepSeek V4.1 Flash 0910 | ~~$0.12~~ $0.06 | ~~$0.006~~ $0.003 | ~~$0.48~~ $0.24 |
| `z-ai/glm-5.3-flash-0828` | GLM 5.3 Flash 0828 | ~~$0.15~~ $0.12 | ~~$0.03~~ $0.024 | ~~$0.50~~ $0.40 |
| `deepseek/deepseek-v4.1-flash:fast` | DeepSeek V4.1 Flash (fast) | ~~$0.56~~ $0.28 | ~~$0.056~~ $0.028 | ~~$2.20~~ $1.10 |
| `deepseek/deepseek-v4.1-flash-1017:fast` | DeepSeek V4.1 Flash 1017 (fast) | ~~$0.56~~ $0.28 | ~~$0.056~~ $0.028 | ~~$2.20~~ $1.10 |
| `deepseek/deepseek-v4.1-flash-0910:fast` | DeepSeek V4.1 Flash 0910 (fast) | ~~$0.56~~ $0.28 | ~~$0.056~~ $0.028 | ~~$2.20~~ $1.10 |

## Model limits and capabilities

The context length covers the prompt plus `max_tokens`. A `max_tokens` (or
`max_completion_tokens`) above the output limit is refused with `400` before any work is done.
Images are sent as `image_url` content parts and billed as prompt tokens. Speed is output tokens
per second after the first token, a floor under the measured median.

| Model id | Context (tokens) | Max output (tokens) | Speed | Input | Capabilities |
| --- | --- | --- | --- | --- | --- |
| `deepseek/deepseek-v4.1-flash` | 1,048,568 | 384,000 | 200+ tok/s | Text, Images | tools, structured outputs, reasoning |
| `z-ai/glm-5.3-flash` | 1,048,576 | 131,072 | 100+ tok/s | Text, Images | tools, structured outputs, reasoning |
| `deepseek/deepseek-v4.1-flash-1017` | 1,048,568 | 384,000 | 200+ tok/s | Text, Images | tools, structured outputs, reasoning |
| `deepseek/deepseek-v4.1-flash-0910` | 1,048,568 | 384,000 | 200+ tok/s | Text, Images | tools, structured outputs, reasoning |
| `z-ai/glm-5.3-flash-0828` | 1,048,576 | 131,072 | 100+ tok/s | Text, Images | tools, structured outputs, reasoning |
| `deepseek/deepseek-v4.1-flash:fast` | 1,048,568 | 384,000 | ~2x standard | Text, Images | tools, structured outputs, reasoning |
| `deepseek/deepseek-v4.1-flash-1017:fast` | 1,048,568 | 384,000 | ~2x standard | Text, Images | tools, structured outputs, reasoning |
| `deepseek/deepseek-v4.1-flash-0910:fast` | 1,048,568 | 384,000 | ~2x standard | Text, Images | tools, structured outputs, reasoning |

`GET /models` returns the same catalog as data: prices, limits, supported parameters, capacity
and serving location. Use the returned id unchanged in the `model` field. Every model is
served from Singapore.

## Model versions

Each plain model id always runs the latest version of its model. When a lab releases an update,
we test it, move the plain id to it and announce the change. Responses name the version that
served them in `model` (today `deepseek/deepseek-v4.1-flash-1017` for `deepseek/deepseek-v4.1-flash`, `z-ai/glm-5.3-flash-0828` for `z-ai/glm-5.3-flash`).

To stay on one version, use its pinned id. A pinned id never changes:

| Model id | Version | Released |
| --- | --- | --- |
| `deepseek/deepseek-v4.1-flash-1017` | 1017 (latest) | 17 Oct 2026 |
| `deepseek/deepseek-v4.1-flash-0910` | 0910 | 10 Sep 2026 |
| `z-ai/glm-5.3-flash-0828` | 0828 (latest) | 28 Aug 2026 |

Every version of a model has the same price, limits and features, and they share one rate limit
budget. A pinned version stays available as long as we can serve it, and we announce a
retirement before it happens. Fast mode works the same way: `deepseek/deepseek-v4.1-flash:fast` runs the latest version on fast serving, and `deepseek/deepseek-v4.1-flash-1017:fast`, `deepseek/deepseek-v4.1-flash-0910:fast` never changes; `"service_tier": "priority"` on a pinned id selects its pinned fast serving where there is one.

**20 Oct 2026:** `deepseek/deepseek-v4.1-flash` moved to version 1017, which DeepSeek reports is better at
coding and agent tasks and finishes them with shorter outputs. Version 0910 stays available as
`deepseek/deepseek-v4.1-flash-0910`. GLM 5.3 Flash joined the catalog as `z-ai/glm-5.3-flash`
(version 0828).

## Fast mode

Fast mode is the same model on faster serving, at a higher price: about twice the output speed
and a shorter wait for the first token. Select it with the `:fast` model id, or send
`"service_tier": "priority"` with the standard id on Chat Completions or Responses. Every
response reports the tier that served it in `service_tier`: `priority` for fast mode,
`default` otherwise.

| Fast model id | Same model as | Input | Cached input | Output |
| --- | --- | --- | --- | --- |
| `deepseek/deepseek-v4.1-flash:fast` | `deepseek/deepseek-v4.1-flash` | ~~$0.56~~ $0.28 | ~~$0.056~~ $0.028 | ~~$2.2~~ $1.1 |
| `deepseek/deepseek-v4.1-flash-1017:fast` | `deepseek/deepseek-v4.1-flash-1017` | ~~$0.56~~ $0.28 | ~~$0.056~~ $0.028 | ~~$2.2~~ $1.1 |
| `deepseek/deepseek-v4.1-flash-0910:fast` | `deepseek/deepseek-v4.1-flash-0910` | ~~$0.56~~ $0.28 | ~~$0.056~~ $0.028 | ~~$2.2~~ $1.1 |

Fast mode has the same context window, output limit, image input, tools, structured outputs and
reasoning controls as the standard model, and works on all three API formats (on the Anthropic
endpoint, use the `:fast` id). It has its own rate limit budget, at the same limits.

## Endpoint

- [List models](#list-models): `GET https://api.openscale.so/v1/models`

### List models

`GET https://api.openscale.so/v1/models`

The live catalog. Public, no key required. Each entry carries pricing, context and output limits, supported parameters, per-account capacity and serving location.

Public: no API key needed.

#### Example request

```bash
curl https://api.openscale.so/v1/models
```

#### Response

`200`: The catalog.

| Field | Type | Description |
| --- | --- | --- |
| `object` | string | Always `list`. |
| `data` | array of Model |  |

## Objects

### The Model object

One catalog entry: prices per token as decimal strings, limits, supported parameters, per-account capacity and serving location.

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `schema_version` | string | No | Example: `2.4`. |
| `id` | string | No | Example: `deepseek/deepseek-v4.1-flash`. |
| `name` | string | No | Example: `DeepSeek: DeepSeek V4.1 Flash`. |
| `description` | string | No |  |
| `hugging_face_id` | string | No | Example: `deepseek-ai/DeepSeek-V4.1-Flash-1017`. |
| `created` | integer | No | Model release date, unix seconds. |
| `quantization` | string or null | No | Example: `null`. |
| `tokenizer` | string | No | Example: `DeepSeek`. |
| `input_modalities` | array of object | No |  |
| `input_modalities[].type` | string | No | Example: `text`. |
| `input_modalities[].supported_inputs` | object | No |  |
| `input_modalities[].pricing` | array of object | No |  |
| `input_modalities[].capacity` | array of object | No |  |
| `output_modalities` | array of object | No |  |
| `capacity` | array of object | No | Per-key limits: requests per minute. |
| `datacenters` | array of object | No |  |
| `datacenters[].country_code` | string | No | Example: `US`. |

## More of the API reference

- [API reference](https://openscale.so/docs): base URLs, authentication and a first request.
- [Chat Completions](https://openscale.so/docs/chat-completions): POST /v1/chat/completions: the OpenAI Chat Completions format, streamed or not, with reasoning and tools.
- [Responses](https://openscale.so/docs/responses): POST /v1/responses: the OpenAI Responses format with stored state, background runs and enforced tool rules.
- [Conversations](https://openscale.so/docs/conversations): Keep the turns of a Responses conversation on our side and continue it by id.
- [Prompts](https://openscale.so/docs/prompts): Save instructions, messages and settings once, then use them by id in the Responses API.
- [Anthropic Messages](https://openscale.so/docs/messages): POST /anthropic/v1/messages: the Anthropic Messages format, for Claude Code and Anthropic SDKs.
- [Batch](https://openscale.so/docs/batch): Upload a JSONL file of chat completions, create a batch and collect the results when it finishes.
- [Errors](https://openscale.so/docs/errors): The error shape, every status code and code, and which ones to retry.
- [Rate limits](https://openscale.so/docs/rate-limits): Requests and tokens per minute, how a 429 tells you when to retry, and how to get more.
- [Data retention](https://openscale.so/docs/data-retention): What is stored, for how long, how to delete it, and zero data retention.
- [Interactive reference](https://openscale.so/docs/reference): try every endpoint in the browser.
- [OpenAPI document](https://openscale.so/openapi.json): the whole API as OpenAPI 3.1.
