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    both

With 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-style

If 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.

request bodyjson
{
  "model": "qwen/qwen3-8b",
  "messages": [...],
  "provider": {
    "order": ["infersia"],
    "allow_fallbacks": true,
    "sort": "throughput",
    "quantizations": ["fp8", "fp16"],
    "data_collection": "deny"
  }
}
ParameterTypeDescription
provider.orderstring[]Provider slugs to try, in order.
provider.ignorestring[]Providers to exclude entirely.
provider.allow_fallbacksbooleanWhether 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.quantizationsstring[]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.
The quantisation filter is the useful one. If you benchmarked a model at FP16 and your evaluation depends on that behaviour, pin it. A provider silently serving 4-bit is the single most common reason a model “got worse” without anyone changing anything.

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/models

Unauthenticated, 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.

Model routing · Infersia