Routing policies
Routing policies control which AI provider and model handles each request. Instead of hardcoding a single provider, policies automatically select the best option based on your optimization goals — whether that’s minimizing cost, maximizing uptime, or balancing both with ML-powered routing.
Strategy comparison
How routing policies are applied
Routing policies are attached to projects or set as the org default. They are not passed per-request. When Gateway receives a request, it resolves the routing policy in this order:
- Project-scoped policy — if the request includes a project (via the
project_idbody field) and that project has a routing policy, Gateway uses it. - Org default policy — if no project is specified, or the project has no routing policy, Gateway falls back to the org-level default policy.
- No policy — direct model calls — if neither exists, Gateway routes directly to the model specified in the request.
When a routing policy is active, the model field in your request is optional — the policy selects the provider and model automatically. Omit it for Priority and Intelligent routing. model is only required when no policy resolves for the request.
Switching strategies per request
You cannot pass a routing strategy in the request body. To route different requests through different strategies:
- Create one project per strategy — e.g., one with Cost Optimized, another with Quality First.
- Pass the appropriate
project_idfield in the request body per request. All projects share the same API key.
This is useful when different features or user tiers need different cost/quality trade-offs.
Examples
Request using a routing policy
The project’s policy picks the provider and model. No model field is needed.
With no project_id, the same request falls back to the org default routing policy.
Policy definition
Policies are created in the dashboard (or the policy management API). These JSON bodies describe the policy itself — they are never sent in a POST /responses request.
Choosing the right strategy
Tag-based routing
You can attach tags to requests — like user tier, region, or environment — and use them to route to different policies. Rules are evaluated in priority order: the first matching rule applies, and unmatched requests fall through to the default strategy.
Conditions support AND/OR logic and operators like eq, gt, in, contains, starts_with, and exists. Configure tag-based routing through the dashboard or the API.
FAQs
Can I pass a routing strategy in the request body?
No. Routing strategies live on policies, which are attached to projects or set as the org default. There is no type, axis, or strategy field on the POST /responses request body. To switch strategies per request, use different projects with different policies and pass the matching project_id field in the request body.
Do I need to pass the model field?
Do I need to pass the model field?
Only when no routing policy applies. If a policy is active (via project or org default), omit model — the policy picks the provider and model for you. This works for Priority and Intelligent routing.
How do I compare routing strategies in my code?
Create one project per strategy and switch via the project_id field in the request body. All projects share the same API key, so you don’t need multiple keys. Omit the field to hit the org default.
What do the JSON examples on the strategy subpages represent?
They are policy definitions — the configuration used when creating a routing policy (via the dashboard or policy API). They are not request-body fields for POST /responses.
Does intelligent routing add latency?
The complexity scoring step adds ~1–4ms. Negligible compared to LLM inference time.
How accurate is the complexity scoring?
Clean separation below 0.4 (simple) and above 0.6 (complex). Edge cases around 0.5 route conservatively to more capable models.
What happens if the complexity scorer fails?
Gateway falls back to the most capable model in your policy. Quality is never compromised by a scorer failure.
Can I use any model with intelligent routing?
Yes. New models work immediately — capabilities are inferred from pricing data.
What if I only want specific models, not auto-selection?
The router only selects from models in your policy, never outside of it.
What happens if all providers fail?
Gateway returns an error after all failover attempts are exhausted. Provider health is tracked automatically so requests skip providers that are currently down.
Can I have multiple default policies?
No. One org-level default. You can have one additional policy per project for project-scoped routing.