Skip to main content

Current catalog

Pass the model name as model in a request. Context is the total input window, in tokens.
Rates as of 2026-11-06. The dashboard is authoritative if this table and your account ever disagree. Live availability per model is on the status page.

Pricing

Pricing is per token, with no minimums and no reserved capacity. Divide the per-million figures above by 1,000,000 for the per-token rate. Your current balance and per-request spend are on the dashboard, or from the API below.

Feature support

Every model in the catalog is served on /v1/chat/completions, /v1/messages (Anthropic) and /v1/responses (OpenAI Responses), reasons by default, and is listed by GET /v1/models and GET /v1/models/{model}. ✅ means tested and supported. ⚠️ means supported with a known limitation, listed under Known limitations along with its workaround. Effort levels per model are under Effort levels. This table is written by hand and covers what an automatic check can’t: streaming, stop sequences and the partial cases above. For what each model supports as checked against the live model, read its capabilities (next section).

Model capabilities

After each deploy, a model’s capabilities are checked against the live model with real requests: tool calling, JSON schema output, image and audio input, reasoning, turning reasoning off, the accepted effort levels, prompt caching and the longest response. Read them in GET /v1/models, or on the model’s page in the dashboard (Serverless, then the model). Each one has three possible answers: A check proves that a well-formed request works. It can’t prove every variation does, so a partial problem can still pass it; those are listed under Known limitations. Every model returns text: output_modalities is ["text"] on every model. supported_endpoints lists the endpoints you can call. An endpoint that failed its check is left out of it.

Reasoning

Every model in the catalog reasons before it answers, and thinking is on by default. Reasoning tokens are billed as output tokens. Use the parameter that belongs to the endpoint you call: GLM-5.3-Flash can turn thinking off on /v1/responses only. On /v1/chat/completions it does not accept "none" (400), and on /v1/messages it ignores "disabled" (see Known limitations). The parameters do not carry over between endpoints. A parameter from another API is dropped without an error: thinking or reasoning sent to /v1/chat/completions, or reasoning_effort sent to /v1/messages, has no effect. An invalid value for the endpoint’s own parameter returns 400.

Effort levels

Effort is two separate things, and both are in GET /v1/models:
  • Accepted values (reasoning_effort_accepted, per endpoint): the values that don’t return 400.
  • What each value does (reasoning_effort_effective): the values that change the answer. Every other accepted value behaves like one of these.
The accepted values, as GET /v1/models reports them: No model reports reasoning_effort_effective yet, so which values change the answer is not verified.

Sampling parameters

temperature, top_p, presence_penalty and frequency_penalty are applied as you send them, with two exceptions. Some model makers fix these values on their own API, because the model was trained and evaluated with them and degrades away from them. For those models we run the maker’s values, and where the maker’s API would reject any other value with an error, we apply the fixed value instead. You get an answer from the model as its maker serves it, not a 400. MiMo-V2.6. Xiaomi’s documentation: “In thinking mode, the mimo-v2.6-flash, mimo-v2.6-pro, mimo-v2.6-pro-ultraspeed models do not support customizing the temperature and top_p parameters. Even if these parameters are passed in, the actual effective values will be forcibly set by the model to its recommended default values of 1.0 and 0.95.” We do the same, on every endpoint. At low temperatures this model tends to repeat itself in its reasoning until it runs out of tokens without answering; Xiaomi’s values avoid that. To choose your own sampling, turn thinking off (see Reasoning). Kimi K3.1 Pro. Moonshot fixes temperature at 1.0, top_p at 0.95 and both penalties at 0, and its API returns an error for any other value. Our endpoint follows Moonshot’s Kimi Vendor Verifier, the checks Moonshot runs on third-party Kimi deployments: it also accepts temperature 0 and 0.6, and rejects other values the same way Moonshot does. Through OpenRouter, where a rejected request can’t be corrected by the caller, any value is replaced with Moonshot’s: 1.0, 0.95 and 0, in every mode. Every replaced value is logged, so we can tell you which of your requests were affected.

Known limitations

This table is updated as fixes ship.

In development

OpenAI-standard features we know about and don’t support yet are listed here. There are none right now.

Model metadata

GET /v1/models lists the models your key can call, with the context window, pricing and supported endpoints most agent harnesses read automatically, and each model’s capabilities. A capability field that is missing means “not verified”, and clients keep their defaults. GET /v1/models/{model} returns one entry; model ids contain a slash, which is fine.
The capability values above show the shape. Read the live values from the endpoint. Pricing is USD per token as a decimal string. GET /v1/model/info returns the same models in the {"data": [{"model_name", "model_info"}]} shape some tools expect, with model_info limited to max_input_tokens, max_tokens, the three per-token costs, mode, supported_endpoints and the same capability fields.

Balance

GET /v1/credits returns your account’s credit cap, spend to date and remaining balance, in USD. Figures are current to within about a minute.
When balance_usd reaches zero, requests return 429 until you top up on the dashboard.