Tiers and model IDs
The model field names a lane, also called a tier. The router resolves it, then picks the model and the effort for each task from that lane's pool. For how the choice is made, see Lanes.
Model IDs
| Tier | Model ID | Also accepted | Plans |
|---|---|---|---|
| Fast | fast | routerlane/fast | Starter, Pro, Enterprise |
| Normal | normal | routerlane/normal | Starter, Pro, Enterprise |
| Smart | smart | routerlane/smart | Pro, Enterprise |
| Smart+ | smart-plus | smart+, smartplus, smart_plus, smart plus, routerlane/smart-plus | Enterprise |
Names are case-insensitive. A bracketed suffix such as Claude Code's [1m] is ignored, so smart[1m] is smart.
Aliases
Model names from other APIs map to a tier by family, so agents with hard-coded model names work unchanged.
| A model name containing | Runs on |
|---|---|
haiku, mini, nano, flash, lite | Fast |
sonnet | Normal |
opus, pro | Smart |
nothing, auto or default | your account's default tier, Normal unless set |
Any other name returns 400 with type not_found_error. Aliases follow your plan like any tier name: claude-opus on a Starter key is refused with 403.
Effort
The router picks a reasoning effort per task on one scale: off, minimal, low, medium, high, xhigh, max. Whatever effort or thinking setting the client sends is replaced.
- Each model gets its own native setting for the chosen level: a reasoning effort value, or a thinking budget for models that think in tokens. You never translate effort knobs between vendors.
- A model that offers a single setting runs at it.
- A thinking budget always fits inside your
max_tokens, with room left for the answer. max_tokensabove the chosen model's output limit is lowered to that limit.
Effort bands
| Lane | Band | Pool |
|---|---|---|
| Fast | off to low | 27 models |
| Normal | low to high | 23 models |
| Smart | high to max | 15 models |
| Smart+ | high to max for the build | 7 frontier builders, 4 fast explorers and reviewers |
Within a band, harder tasks get stronger models and more effort. See which lane runs each model at each effort.
Decisions and headers
Every response carries the decision. The model field in the response body holds the tier you called.
| Header | Example | Meaning |
|---|---|---|
x-router-tier | normal | The tier the request ran on |
x-router-model | claude-sonnet-5.5 | The model that answered |
x-router-effort | medium | The effort the router chose |
x-router-source | rule | rule or default for a new task, continuation for a tool result inside a running task, sticky when the conversation kept its model, smartplus for a Smart+ job turn |
x-router-request-id | 4f1c9a07d2e86b13 | Quote it to support |
Conversations
The router recognizes a conversation from the client's session identifiers: Claude Code's session id, Codex's prompt_cache_key, pi's session affinity header, or x-session-id. Without one, the system prompt and the first message identify it. A conversation keeps its model unless a later task is harder, and a request whose newest message is a tool result reuses the running task's decision.
Context and images
- Each tier is listed in
/v1/modelswith a 1,048,576-token context window and 131,072 output tokens. - A request past 85% of the chosen model's window moves to a long-context model in the lane, with windows up to 2M tokens.
- Images work on every lane. A request with images, files, audio or video goes to a model in the lane that reads them.