Any request shape, any vendor
Call any model from the SDK you already use. Multi-Router translates the request into the vendor's format and the response back into yours.
Each request is served by a router that selects the model, provider and region. Router changes require no application changes.
Routing strategies for applications and AI agents.
One model on one route. Applications call the router instead of a model, so the model, provider or prompt can change without a code change.
Members are tried in order. When a provider rate limits, times out or returns a server error, the request moves to the next member.
Split traffic between members by weight. Send a share of production requests to a candidate model, compare latency, errors and cost in Traffic, then adjust the weights.
Routes Claude Code through your organization. Set the platform (Anthropic, Bedrock or Vertex), the region and the allowed models, with usage recorded per person.
Run OpenAI Codex through your organization, on the organization's OpenAI key or each developer's ChatGPT plan, with usage recorded per person.
Run the Pi.Dev coding agent on each developer's own Anthropic or OpenAI account, while the organization sees every request and what it cost.
Answers customer questions in the help widget. Every request is served by one model on one route.
The model that serves every request sent to this router.
A versioned prompt applied to every request.
Other names that call this router.
Keeps the agent answering through provider outages and rate limits. Members are tried in order until one succeeds.
Member routers, tried in order. When one fails, the request moves to the next.
The failures that move a request to the next member.
Requests and the attempt that served them.
Splits traffic between three models to compare quality and cost on real requests before switching.
Member routers. Each request goes to one of them, chosen by weight.
Keep each customer on the same member, so a conversation never changes model.
Route: anthropic · global
Claude Code for the engineering organization. Every developer signs in with SSO; usage is recorded per person.
How the model names Claude Code sends are resolved and where they are served.
Route: openai · global
OpenAI Codex for the platform team. Developers sign in once; every session is recorded with its cost.
How the model names Codex sends are resolved and where they are served.
The Pi.Dev coding agent. Each developer brings their own Anthropic or OpenAI account; the organization sees every request.
Where Pi.Dev's requests are forwarded. Each request goes to the provider it is written for.
Requests and cost for each person, last 7 days.
Traffic splits, key scopes, prompts and on/off, set per router in the dashboard or the API.
Enterprise-grade routing that is region, latency and cost aware.
A fallback router retries a rate-limited, timed-out or failed request on its next member, on another vendor or in another region. The application receives one response.
x-mr-request-id: req_6Tn1VbQe2sx-mr-attempts: 12x-mr-provider: anthropicbedrockx-mr-region: globalus-east-1x-mr-upstream-model: claude-sonnet-4.6
Every request is priced from the catalog. Budgets on routers, tags or the whole organization send alerts as spend grows and block requests at the limit.
Each request records input, cache reads, cache writes by lifetime, output and tool calls, each priced at the catalog rate for its route and tier.
Rates differ by provider, variant, region and tier. Each request is priced at the rate of the route that served it, and spend is reported by route.
Each request is tagged with your customer, the feature it came from, its session and your own request id. Multi-Router adds up cost by any of them.
Engineers see their spend in the portal and request more budget. Admins approve the request and see each person's limit and spend.
client.chat.completions.create( model="multi-router/replies", user="cus_northwind", extra_headers={ "x-mr-session-id": "ses_tk_48213", "x-mr-correlation-id": "hd-7f3a91", }, messages=messages,)
modelrt_repliesusermetadata.user_idx-mr-session-idx-mr-correlation-idEmployee portal
Admin · Budgets
"Migrating the billing service this sprint. Needs Opus for the large refactors."
The gateway knows which region every route runs in. Choose a variant and region per router, or pin each model in a model group, and requests run only there.
The vendor's ordinary endpoint for this model.
Inference stays in the United States.
Inference may run in any AWS region. Cheapest, with no residency guarantee.
Inference stays inside one geography (US, EU, APAC, Japan or Australia).
Inference stays inside one geography (US, EU, APAC, Japan or Australia).
Inference stays inside one geography (US, EU, APAC, Japan or Australia).
Inference stays inside one geography (US, EU, APAC, Japan or Australia).
Inference stays in the single region the request was made to.
Google picks the region.
Inference stays in the United States.
Inference stays in the European Union.
Inference stays in the region the router names.
The vendor's ordinary endpoint for this model.
Inference stays in the United States.
Inference may run in any AWS region. Cheapest, with no residency guarantee.
Inference stays inside one geography (US, EU, APAC, Japan or Australia).
Inference stays inside one geography (US, EU, APAC, Japan or Australia).
Inference stays inside one geography (US, EU, APAC, Japan or Australia).
Inference stays inside one geography (US, EU, APAC, Japan or Australia).
Inference stays in the single region the request was made to.
Google picks the region.
Inference stays in the United States.
Inference stays in the European Union.
Inference may run in any AWS region. Cheapest, with no residency guarantee.
Inference stays inside one geography (US, EU, APAC, Japan or Australia).
The vendor's ordinary endpoint for this model.
Inference stays in the European Union.
Inference stays in the United States.
The vendor's ordinary endpoint for this model.
Google picks the region.
Inference stays in the region the router names.
Applications call a router, not a model. Change the router's model, or move an alias to another router, and new requests use it with no code change or deploy.
model="multi-router/support"
x-mr-upstream-model: anthropic/claude-sonnet-4.6x-mr-provider: anthropicx-mr-region: global
x-mr-upstream-model: anthropic/claude-sonnet-4.6x-mr-provider: bedrockx-mr-region: eu-central-1
x-mr-upstream-model: anthropic/claude-opus-4.8x-mr-provider: vertexx-mr-region: eu
x-mr-upstream-model: openai/gpt-6-solx-mr-provider: openaix-mr-region: us
x-mr-upstream-model: openai/gpt-6-solx-mr-provider: bedrockx-mr-region: us-east-1
x-mr-upstream-model: google/gemini-2.5-prox-mr-provider: geminix-mr-region: global
Select a model. The application keeps calling the same router.
Routers call providers with your keys, so your contracts, rates and quotas apply. Each endpoint accepts its provider's request shape, so leaving is a base URL change.
Call any model from the SDK you already use. Multi-Router translates the request into the vendor's format and the response back into yours.
Routers call each provider with your account, so your contracts, quotas and reserved capacity apply.
OpenAI, Anthropic, Bedrock and Vertex SDKs work unchanged.
Set your own prices on any catalog offering. Costs and budgets use them.
Self-hosted and fine-tuned models are routed and priced like catalog models.
Each request records the key that sent it, the router, the vendor and region that served it, every attempt, its tokens, cost and latency.
Routing adds negligible latency because it is the fastest router on the planet: 47 ms at p99.
Create a router, set your SDK base URL to Multi-Router and send a request.