Routing knows your presets. Presets know your keys. The log knows what every request cost. Below is everything AI Router does today — not what it will do.
The model actually used, the level and who chose it, tokens, credits, estimated cost, latency and fallback. Of the prompt content nothing is kept.
How many requests, at which level, on which model and what they cost you — as it happens.
Entry, classification, level, model, enriched response. Always the same, always traced.
Same question, two models: when the low level answers just as well, you pay a fifth.
Before a preset is saved we check healthy models, covered levels, compatibility and destination.
airouter-coding, -reasoning, -fast, -creative, -extract, -vision. The classifier infers only the complexity.
The only_free option routes to 0-credit models only. The editor warns you: they can be unavailable.
Per-user memory entries on Postgres, with a full-text index and a ceiling per plan. Isolated: nobody sees yours.
The model catalog is kept in step with the hub: retired ones are marked, not hidden.
The MCP tool takes budget and max_tokens per single call: the router picks while staying under the ceiling.
You change base_url and the model name. The OpenAI SDK you already use keeps working, streaming included.
Every response carries provider, model, level, credits, estimated cost, latency and whether a fallback fired.
Separate API keys per project or per client, each with its own preset and its own log.
Chat Completions, Messages and Responses. Same key, same balance, same routing underneath.
Any OpenAI or Anthropic client. No library of ours to install, no lock-in.
request.completed, routing.fallback, credit.threshold, credit.exhausted. HMAC-SHA256 signature and re-delivery.
Native streaming on all three surfaces: same conduit, same events, no buffering in between.
No prompts in the logs, HMAC signature on webhooks, anti-abuse limits on sign-ups, secrets encrypted at rest.
Most AI stacks bolt together pieces that never talk to each other: one library per provider, a spreadsheet for the costs, a guess about which model answered. Here the choice of model, the price and the log are the same thing.
A classifier that costs you no credits decides the level. Model, price and log line all follow from it: none of the three is a guess.
You assign a preset to a key, use an alias per request, force the level when you need to. No middleware, no configuration to keep aligned by hand.
Whether it goes through Gemini, Qwen, Claude or GPT, the bill is the same: credits per level. One key, one invoice, no contract per provider.
“The right model is not the most powerful one: it is the cheapest one that answers well. That sentence, put inside an endpoint, is the whole product.”
Automatic routing, category aliases and SSE streaming are there from the start, free plan included. Presets, webhooks, the MCP server and the memory store scale with the plan: the pricing table has the detail.
Yes — that is exactly what presets are for: you pin the model for Simple, Moderate and Complex, then assign the preset to a single API key or to the MCP server. Start from 20 ready-made presets across 9 use categories, or save your own.
Yes. SSE streaming is native on /v1/chat/completions, /v1/messages and /v1/responses: same conduit, same events, no buffering in between.
The model actually used, the level chosen and who chose it (classifier, alias, preset or an explicit override), input and output tokens, credits, estimated cost in USD, latency, and whether a fallback kicked in. Not the content.
It is Model Context Protocol over streamable HTTP, with the same Bearer authentication as the API calls: any MCP client can use it. It exposes one tool, ask_airouter.
Yes, and the editor flags it: zero-cost models exist, but they can be unavailable or answer poorly. It is a deliberate choice, not a surprise.
Nothing to switch on: routing, presets, logs and SDK surfaces come with the plan you pick.