Gateway

One endpoint.
Every model you allow.

Each request is checked against your team’s Directives and budgets, sent to a provider that can serve it, and comes back with a receipt that says what it cost.

baseURL: "https://api.inferencebureau.com/v1",
apiKey: process.env.IB_API_KEY,
The request’s pathchecking policy
your app · support-webPOST /v1/chat/completionsclaude-sonnet-4.5
inference bureau
Model allowedDirectives v14
Within budget62% of month
Under rate limit41 / 600 rpm
Provider Astandby
Provider Bstandby
Provider Cstandby
receipt · req_01JA4V8M2T2 attempts · 1,912 in · 644 out · $0.0166
Text, tools and images, from every major labSee every model and provider
alibaba/qwen3.8-max-primealibaba/qwen3.8-omni-flashamazon/nova-2-litebfl/flux-3-image-kleinamazon/nova-liteanthropic/claude-haiku-5.5anthropic/claude-sonnet-5.5bfl/flux-3-imagebytedance/seed-2.1-turbobytedance/seed-1.6callstack/apexbfl/flux-kontext-max
cohere/command-adeepseek/deepseek-v4.1-flash-1017deepseek/deepseek-v4.1-flashbfl/flux-kontext-proelorian/glimpsefireworks/ember-1google/gemini-4-argonbfl/flux-pro-1.1-ultragoogle/gemini-3.8-flashinception/mercury-3inception/mercury-2.5bfl/flux-pro-1.1
01 · Directives

Policy that only gets tighter.

Set allowed models, providers, rate limits and budgets for the team. Projects and keys can narrow them but never widen them, and a refused request names the Directive that refused it.

Directives and budgets
Team14 models · $2,000 / month
Project · support-web6 models · $600 / month
Key · ci-evals2 models · $40 / day
support-web → anthropic/claude-haiku-4.5Allowed by Project · support-weballowed
support-web → anthropic/claude-sonnet-4.5Refused: Project · support-web is at its monthly budgetrefused
support-web → xai/grok-4Refused: provider denied for the Teamrefused
ci-evals → anthropic/claude-haiku-4.5Allowed by Key · ci-evalsallowed
02 · Mixed-model sessions

Pay for the model each turn needs.

Each turn is classified, and the cheapest model that clears your quality floor for that task is suggested. Nothing switches until your code or your user says yes.

Starts in ShadowOpted-in turns are classified and logged, while every turn is served by the model you asked for.
Pinned during tool callsWhile a tool call is open, the model stays the same and the classifier is skipped.
Prompts can’t move the floorText inside a prompt can’t add a model to the pool, lower the quality floor or pick a model.
Read the guide
session ses_01JA4R · support-webrequested claude-sonnet-4.5
0 turns · 0 switched$0.000000
03 · Logs

A receipt for every request.

Upstream cost, platform fee, every attempt and the Directives in force, by request, key, session or end user. Prompts and responses are kept only if you turn that on.

Pick a request to see its receipt
req_01JA4V8M2T200 · ok
modelanthropic/claude-sonnet-4.5
keysupport-web
attempts2 · failed over
tokens1,912 in · 644 out
upstream cost$0.015396
platform fee · 7.5%$0.001155
directivesTeam v14 · Project v6
charged$0.016551
04 · Playground

Try a model before you write code.

Every project has a Playground. It sends real requests under the project’s Directives, so what you see there is what your app will get, cost included.

Quickstart
Playground · support-webanthropic/claude-haiku-4.5
A customer says they were charged twice for October. Draft a short reply.
Thanks for letting us know, and sorry about that. I can see two October charges on your account; the second was a duplicate and I’ve refunded it today. It should reach your card in 5 to 10 business days.
streaming · 0 tokensDirectives v14 · allowed
05 · The rest of the controls

For the team that runs it.

Keys, Directives and webhooks are in the Management API too, so they can live in your own scripts and CI.

routing profilesLet an alias pick its modelPoint an alias at a pool of models, and each request runs on the cheapest, or best scoring, one your Directives allow.
aliasesName your own modelsSend org/fast and change the model behind it without a redeploy. Retire an alias on a date, with a replacement.
providersDeny models and providersRule out a model, a vendor or a provider whatever the allowed lists say, or require providers that don’t train on your prompts.
tag budgetsBudgets by tagTag requests by feature or job and give each tag its own daily and monthly cap, with the same alerts.
end usersLimits per end userName your own users on each request, give each one rate limits, quotas and a budget, and hear when one runs out.
keysPause a keyIts requests stop until you resume it, and its secret, Directives and budgets are kept. Or have keys paused when their spend jumps.
alertsAlerts before the capAt 50, 80, 95 and 100 percent of a budget, or the percentages you set, by email or webhook.
imagesImages tooImage generation and edits go through the same Directives, budgets and Logs.

Change two lines.

Keep your SDK and your model names. Mixed-model sessions stay off until you opt a key in.

const client = new Client({-  baseURL: process.env.PROVIDER_BASE_URL,+  baseURL: "https://api.inferencebureau.com/v1",-  apiKey: process.env.PROVIDER_API_KEY,+  apiKey: process.env.IB_API_KEY,});