Model routing
A model id can express more than which weights you want. The grammar below is the one OpenRouter uses, so existing configuration works unchanged.
The grammar
author/slug cheapest healthy variant
author/slug:free the rate-limited free variant, where published
author/slug:nitro highest measured throughput
author/slug:floor lowest price, ignoring speed
author/slug@provider pinned to one provider
author/slug:free@infersia bothWith one provider in the catalogue these mostly resolve to the same endpoint. They exist now so that your code keeps working unchanged as the catalogue grows — a routing preference you set today will be honoured when there is something to choose between.
Aliases
Model ids are case-insensitive, and we accept the names you probably already have. All of these resolve to qwen/qwen3-8b:
qwen/qwen3-8b
Qwen/Qwen3-8B ← the Hugging Face repo name
qwen3-8b
qwen3:8b ← Ollama-styleIf you mistype a model id, the error tells you the closest matches rather than just listing the catalogue.
Per-request routing controls
A provider object in the request body gives finer control. It is stripped before the request reaches the inference engine, so it never confuses an upstream.
{
"model": "qwen/qwen3-8b",
"messages": [...],
"provider": {
"order": ["infersia"],
"allow_fallbacks": true,
"sort": "throughput",
"quantizations": ["fp8", "fp16"],
"data_collection": "deny"
}
}| Parameter | Type | Description |
|---|---|---|
provider.order | string[] | Provider slugs to try, in order. |
provider.ignore | string[] | Providers to exclude entirely. |
provider.allow_fallbacks | boolean | Whether to try other providers when the preferred one fails. Defaults to true. |
provider.sort | "price" | "throughput" | "latency" | How to order candidates before applying the explicit order. |
provider.quantizations | string[] | Only route to variants served at one of these precisions — for example ["fp8", "fp16"] to refuse 4-bit entirely. |
provider.data_collection | "allow" | "deny" | Refuse providers that retain prompts. |
How a variant is chosen
- Only variants with at least one healthy endpoint are considered.
- Free variants are never selected implicitly. A paying request cannot be silently downgraded onto a throttled endpoint because it sorted cheapest.
- Within a variant, traffic is spread across endpoints weighted by their configured capacity, skipping any the gateway has recently seen fail.
- If an endpoint fails before returning its first byte, we transparently try another. Once a stream has started we never retry, because splicing two generations together would produce output that is wrong in a way you can’t see.
Listing what’s available
curl https://api.infersia.com/v1/modelsUnauthenticated, and it includes our extensions — quantization, context_length, supported_parameters — alongside the standard OpenAI fields. The official SDKs ignore the extra keys, so nothing breaks if you parse it with theirs.