Using routing policies
A routing policy isn’t sent in the request body. Gateway resolves it for you on every call based on what you attach to the request and what’s configured on your org. This page covers how that resolution works and what you can do from the request side.
How routing policies are applied
Routing policies are attached to projects or set as the org default. When Gateway receives a request, it resolves the 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.
Using default_routing
Set the request’s model field to the sentinel value "default_routing" to explicitly request policy-based routing without naming a model.
The sentinel value is case-insensitive and whitespace is stripped, so " Default_Routing " resolves the same as "default_routing".
default_routing is useful when you have a client that always sends a model field - for example, the OpenAI SDK or a templated request payload - but you want every request to honor the project or org default policy. Set the value once at the client level and Gateway will pick the model.
If no routing policy resolves for the request (no project policy and no org default), Gateway rejects requests sent with model: "default_routing" because there’s no policy to hand off to. Either configure an org default policy or send a concrete model ID.
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 or pass "default_routing" - 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 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.