Overpaying for easy work
Sending every request to your heaviest model is the most expensive habit in AI.
Routing
Tell us what the request needs, chat, code, vision or reasoning, and the router picks the lowest-priced enabled model that can do it. If that model stumbles, another one catches the request.
chosen per request
busy models do not fail your call
as the catalog evolves
The problem
Sending every request to your heaviest model is the most expensive habit in AI.
Every change in the model landscape becomes a pull request.
Without fail-over, a moment of congestion becomes an error your user sees.
Capabilities
Send capability in the body. Leave it out and chat is assumed.
Eligible models are tried cheapest first, so routine work stays affordable.
Timeouts, rate limits and server errors move the request to the next eligible model. Errors that would fail everywhere, like a malformed request, return immediately.
Pass a model_id to use exactly that model, with no substitution.
Set a default model in settings for requests that name none.
Every response names the model that answered, with its tokens and price.
Use cases
Cheap models for classification, reasoning models for analysis.
User-facing calls that ride out a busy model.
New lower-priced models are picked up without a deploy.
Pinned models where output consistency matters most.
How it works
Add capability to your request body, for example code or vision.
The lowest-priced enabled model with that capability serves the request.
model_id and model_name tell you which model answered.
Control
API keys are shown once at creation and stored only as a hash. Revoke any key instantly from Settings.
Every request carries its own receipt: tokens in, tokens out, latency and price. Nothing is billed that you cannot trace.
Per-account rate limits and a free monthly allowance keep experiments safe before they become production.
You choose exactly what you send. Repeat prompts can be served from your cache, and cache hits are never billed.
For developers
Send a prompt and a capability, or name a model. One bearer key, one small JSON body, and a full receipt on every response.
curl https://YOUR-DOMAIN/api/ainf/inference \
-H "Authorization: Bearer $AI_INFERENCE_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: order-1042" \
-d '{"prompt":"Summarise this ticket in one line","capability":"chat"}'Whatever the enabled catalog offers, such as chat, code, vision and reasoning. The model catalog lists each model's capabilities.
You pay for the call that succeeds, at the price of the model that served it. Failed attempts are not billed.
Yes. Pass a model_id and the router uses that model only.
You get a clear error. If no enabled model has the capability, the response says so.
Send a capability and let the router do the rest.