model field:
- Routing variants work on any model id. They are not listed in
GET /v1/models; the model’s metadata, context window, and base price stay the same. - Catalog variants are separate entries in
GET /v1/modelswith their own id, price, and limits. Use them only on models that list them.
Routing variants
:nitro
:floor
:floor does not. Providers below 90% uptime still go last. Use it for batch and background jobs where cost matters more than speed.
:exacto
:exacto is ignored when the request also sets a sort (:nitro, :floor, or provider.sort).
:<effort>
reasoning_effort in the body. model@high is accepted as well.
- If the suffix and the body
reasoning_effortdisagree, the request fails with400. - If the model does not support that effort, the request fails with
400and the message lists the supported values. A body-onlyreasoning_effortthe model does not support is dropped silently instead.
:reasoning-exclude
Prefixes
Provider ids come from
GET /v1/models/{model}/providers. An unknown provider id returns 400, code unknown_provider.
Catalog variants
Check
GET /v1/models for the ids that exist. A catalog variant is part of the model id, so routing variants go after it: gpt-oss-20b:free:nitro.
Combining variants
Variants combine in any order:
Variants are not accepted on
auto (auto:nitro returns 400). The Auto Router chooses the effort itself; send reasoning_effort in the body to suggest one, and use the provider object for provider preferences.
In-chat image generation
On/v1/chat/completions, @<image-model> after the model id generates an image inside the chat reply, for example gpt-5.1@flux-2. This is not a routing variant. See In-chat Image Generation.