Documentation
Models
Browse INFRO's model catalog: vendor/model-name IDs, GET /v1/models, capability flags, context length, per-token pricing, and the deprecation policy.
INFRO exposes 120+ text, image, video, and audio models from every major lab behind one API. Each model has a stable ID you pass as model — to chat completions, images, video, or audio — and a catalog entry with its unit pricing and capabilities.
Browse the catalog at /models, or fetch it with GET /v1/models — useful for model pickers, validating IDs at startup, or filtering by capability.
Model IDs
Every model ID is vendor/model-name, lowercase. The vendor is the lab that trained the model, not the infrastructure that serves it — deepseek/deepseek-v3.2 may be served by several providers, and routing picks one per request. The response's top-level provider field tells you who actually served it.
openai/gpt-5.1
anthropic/claude-sonnet-5
google/gemini-3-pro
deepseek/deepseek-v3.2
qwen/qwen3-coderA mistyped or unknown ID returns 404 with error type model_not_found. Don't retry these — see error handling for which statuses are retryable.
List models
GET /v1/models returns the live catalog. It works with any OpenAI-compatible SDK's models.list().
curl https://api.infro.io/v1/models \
-H "Authorization: Bearer $INFRO_API_KEY"{
"data": [
{
"id": "anthropic/claude-sonnet-5",
"name": "Claude Sonnet 5",
"context_length": 1000000,
"pricing": { "prompt": "0.000003", "completion": "0.000015" },
"capabilities": ["tools", "vision", "json"]
},
{
"id": "deepseek/deepseek-v3.2",
"name": "DeepSeek V3.2",
"context_length": 131072,
"pricing": { "prompt": "0.00000024", "completion": "0.00000036" },
"capabilities": ["tools", "json"]
}
]
}idstring- Canonical
vendor/model-nameID. Pass this asmodelin chat completion requests and infallbackslists. namestring- Human-readable display name, suitable for UI.
context_lengthinteger- Maximum context window in tokens — prompt and completion combined.
pricing.promptstring- USD per prompt token at INFRO rates. A string to avoid float precision issues; multiply by 1,000,000 for per-1M-token comparison.
pricing.completionstring- USD per completion token at INFRO rates.
capabilitiesarray of strings- Feature flags: any of
tools,vision,json. See below.
Capabilities
The capabilities array tells you what a model supports before you send a request that would fail. Three flags:
toolscapability- Supports the OpenAI
tools/tool_choiceschema, normalized across providers. See tool calling. visioncapability- Accepts
image_urlcontent parts (HTTPS or base64 data URLs, 20MB max per image request). See vision. jsoncapability- Supports strict
json_schemastructured outputs. Plain{"type": "json_object"}works on most models regardless of this flag —jsonspecifically gates strict schema mode. See structured outputs.
To filter the catalog by capability, fetch the list and check membership:
curl -s https://api.infro.io/v1/models \
-H "Authorization: Bearer $INFRO_API_KEY" |
jq -r '.data[] | select(.capabilities | index("vision")) | .id'Context length and pricing
context_length is the total window: input tokens plus generated tokens must fit inside it. When a completion hits the window (or your max_tokens), it stops with finish_reason: "length" — budget accordingly for long prompts.
Catalog pricing is the rate card; the exact amount charged per request comes back in usage.cost on the response, including any prompt caching discounts the serving provider applied. INFRO rates are at or below provider list prices — see pricing. With your own provider keys attached via BYOK, those tokens are billed to you by the provider directly, and INFRO charges 5% of what they would have cost at INFRO rates.
Choosing a model
There is no single best model — pick by workload, and let the gateway handle the rest. A rough map:
| Tier | Try first | Good for |
|---|---|---|
| Flagship | openai/gpt-5.1, anthropic/claude-opus-5, google/gemini-3-pro | Hard reasoning, complex agents, high-stakes generation where quality dominates cost |
| Fast | openai/gpt-5-mini, anthropic/claude-haiku-4.5, google/gemini-2.5-flash | Classification, extraction, summarization, latency-sensitive and high-volume paths |
| Open-weight | deepseek/deepseek-v3.2, qwen/qwen3-coder, moonshot/kimi-k2 | Near-flagship quality at a fraction of the price; deepseek/deepseek-r1 for long-form reasoning on a budget |
You don't have to commit to one. A routing policy of cheapest or fastest optimizes provider selection for whichever model you pick, and fallbacks let you chain models — a common pattern is a flagship primary with an open-weight fallback, so an outage degrades quality instead of availability.
Deprecation policy
Models are deprecated with at least 30 days notice, announced in the console and by email to owners of keys that called the model recently. During the notice window the model serves normally.
After retirement, the old ID becomes an alias for its designated successor — existing code keeps working with no 404. Retired IDs drop out of GET /v1/models and the /models catalog, but aliases keep resolving indefinitely.
Aliased requests are billed at the successor's rates, and the response model field always reports the model that actually served. Log it if you need to detect when an alias kicks in.