Attribution
Spend by agent, person, model, or day. Every call tagged to the key that made it.
Bay 14 · tandem exchange
One API key for every model: hosted providers, your own keys, your own GPUs. Routing, access control, and attribution for everything your agents call.
POST api.routerlab.buzz/v1
| Model | Route | ctx | 30d tokens | spend |
|---|---|---|---|---|
| sonnet-class | hosted → backup | 200K | 38.1M | $1,942 |
| gpt-class | openai → azure | 128K | 24.6M | $1,118 |
| gpt-class-mini | hosted | 128K | 14.3M | $486 |
| gemini-flash | 1M | 11.2M | $96 | |
| haiku-class | hosted | 200K | 9.8M | $88 |
| glm-class | your key | 128K | 6.1M | $34 |
| qwen-27b | your gpus · local | 128K | 31.4M | $0.00 |
Spend by agent, person, model, or day. Every call tagged to the key that made it.
Usage, spend, requests, TTFT, and token counts at key and team scope.
Follow traffic live; open one request to see how it routed and what it cost.
Pass-through
Every request itemized, every price passed straight through. The platform line never moves.
One API and one login, scoped by team or key. We handle key management, new models land on day zero, and your own fine-tuned and self-hosted models sit behind the same key.
We support your model OpenAI Anthropic Gemini Meta Qwen GLM Kimi DeepSeek Mistral Your APIs Local Bedrock Azure AI Foundry Fireworks Modal Google
Quality: the provider serving the model at full precision wins. Same model, every route. The dial changes who answers first.
If the picked provider throttles, the request fails over down the waterfall and the same model answers. Capacity errors only — rate limits and outages, never a silent swap onto something else.
Rate limits are absorbed across provider accounts before a request ever waits.
Failover changes who serves the model, not which model answers.
Every model has an ordered provider chain; replace it with one API call, no deploy. Org overrides win over the default.
One model can prefer your key while another rides pooled capacity: each rung has its own provider, region, and lane.
PUT /api/models/{id}/waterfall · org override
Provider keys live at the gateway. People and agents get scoped gateway keys, managed like any other resource.
| Name | Kind | Models | Budget | Key |
|---|---|---|---|---|
| support-agent | agent | sonnet-class · haiku-class | $60 / day | sk-rlb-••••3f2a |
| maya@northwind | person | all models | $500 / mo | sk-rlb-••••91c4 |
| intern-key | person | haiku-class only | $25 / wk | sk-rlb-••••b7e0 |
| triage | agent | qwen-27b · local | $40 / day | sk-rlb-••••52d8 |
Every person, agent, and tool gets its own key, revocable on its own. Create, view, and delete from the dashboard or the API.
Provider keys stay at the gateway; callers only ever hold scoped gateway keys. Model allowlists: what is off a key’s list never runs.
Your code calls one alias. Point it at a new provider, revision, or your own model — every caller moves at once. Dev and prod can be separate names.
Requests stop at the cap, not after it. A capped key pauses and says so; spend never runs past what you set.
The gateway routes. The intelligence layer improves what flows through it.
We watch your traffic and tell you when a switch wins, including new models the day they ship. Turnkey per-prompt optimization, if you want it.
We catch opportunities to improve cache hit rate, and show what they would save. Repeated tokens come back cheaper when you turn it on.
Fine-tuned on your traffic, proved before it serves, and reached through the same endpoint. You turn it on; it never happens on its own.
Enterprise posture
Where a request may go is gateway policy, set once for the whole team.
Route only to providers under ZDR agreements. Enforce it team-wide or per request.
Learn moreRoute only to providers that will not train on customer data. Configurable per request.
Learn moreRestrict your team to approved providers. Enforced on every request, no code changes.
Learn moreAgents hold scoped gateway keys. Provider keys attach at the gateway and never reach them.
Learn moreOrg-wide limits. Hard stops at the cap: per key, per team, or org-wide. Owner, admin, member, and viewer roles built in.
Usage API and dashboard observability: spend and usage by agent, person, model, or day. Search request logs and open one to see how it routed.
Paste the coding-agent prompt into Claude Code, Cursor, or Codex and it wires the endpoint. Prefer to wire it yourself? The curl, JavaScript, and Python tabs are one call away.
# Router Lab hosted gateway # Dashboard: platform.routerlab.buzz # API: https://api.routerlab.buzz/v1 # Paste into Claude Code, Cursor, or Codex. Ask me for my email. Create a Router Lab account for that exact address. Store the gateway key as ROUTERLAB_API_KEY. Never invent an email or a key. Wire OpenAI-compatible clients to base_url = "https://api.routerlab.buzz/v1" api_key = ROUTERLAB_API_KEY Then GET /v1/models (does not spend). Do not make a paid completion until I say so. BYOK pass-through is unaffected.
curl https://api.routerlab.buzz/v1/chat/completions \
-H "Authorization: Bearer $ROUTERLAB_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "haiku-class",
"messages": [{"role":"user","content":"reply with the single word: ok"}]
}'
import OpenAI from "openai";
const client = new OpenAI({
baseURL: "https://api.routerlab.buzz/v1",
apiKey: process.env.ROUTERLAB_API_KEY,
});
const r = await client.chat.completions.create({
model: "haiku-class",
messages: [{ role: "user", content: "reply with the single word: ok" }],
});
console.log(r.choices[0].message.content);
from openai import OpenAI
client = OpenAI(
base_url="https://api.routerlab.buzz/v1",
api_key=os.environ["ROUTERLAB_API_KEY"],
)
r = client.chat.completions.create(
model="haiku-class",
messages=[{"role": "user", "content": "reply with the single word: ok"}],
)
print(r.choices[0].message.content)
OpenAI-compatible. Same shapes for Chat Completions and Responses. Streaming passes straight through. Error bodies name the problem and the recovery.
Point your agents at api.routerlab.buzz/v1 and everything else follows.
The gateway is open source. Run it yourself.