Models
On BitRouter a model is an aggregate served by many providers.
On BitRouter a "model" is not a single endpoint. It's an aggregate: one logical model — say openai/gpt-4o or anthropic/claude-sonnet-4.6 — that can be served by many providers at once. You address it by a stable model id, and BitRouter decides which underlying provider endpoint actually answers each request.
That indirection is the whole point. You write your agent against anthropic/claude-sonnet-4.6, and the set of providers behind it can grow, shrink, or re-price without you changing a line of code.
Four protocols in
You reach the models gateway through whichever API your runtime already speaks. BitRouter exposes four protocols, side by side, on one local endpoint:
- OpenAI Chat Completions —
POST /v1/chat/completions - OpenAI Responses —
POST /v1/responses - Anthropic Messages —
POST /v1/messages - Google Generative AI —
POST /v1beta/models/{model}:generateContent
Pick the one your SDK is already wired for — you don't adopt a new client. And because the gateway speaks all four, it can route across them: a request that arrives as Anthropic Messages can be served by an OpenAI provider, and vice-versa. One model id, reachable four ways, answerable by any eligible provider.
One id, many providers
Because a model is an aggregate, requesting it kicks off a provider selection step. By default BitRouter ranks the eligible providers by a balanced score — a blend of cost, latency, throughput, and uptime — and sends your request to the best one. When the chosen provider fails transiently, it can fall through to the next-ranked provider, or to the next model you listed.
Variants re-rank for one request
When one model has several providers, you sometimes want to bias that ranking for a single call. A model variant is an inline suffix on the id — :cost, :latency, :throughput — that re-ranks the eligible providers along the axis you named, for that request only. It never changes which providers are eligible, never changes authorization, and a bare id is just the balanced default.
Learn how to
- Provider selection — how providers behind one model are ranked.
- Model fallback — pass an ordered list and walk it on failure.
- Model variants — the
:cost/:latency/:throughputsuffixes. - Presets — named, reusable routing configurations.
- Structured outputs — enforce a JSON schema across providers.
- Add external keys (BYOK) — route through your own provider account.
- Local & private models — point BitRouter at your own server.
- Managed provider & pricing — the hosted provider and the full catalog.
How is this guide?
Set Up Looping
Turn on the self-improving loop — bind a policy to a preset, let the adequacy signal learn from live traffic, and fold what it proves back into the policy spec.
Provider Selection
Choose how BitRouter ranks providers when a model is served by more than one — by cost, latency, or throughput.