Skip to content
INFRO

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.

Example model IDs
openai/gpt-5.1
anthropic/claude-sonnet-5
google/gemini-3-pro
deepseek/deepseek-v3.2
qwen/qwen3-coder

A 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"
Response (trimmed to two models)
{
  "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-name ID. Pass this as model in chat completion requests and in fallbacks lists.
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_choice schema, normalized across providers. See tool calling.
visioncapability
Accepts image_url content parts (HTTPS or base64 data URLs, 20MB max per image request). See vision.
jsoncapability
Supports strict json_schema structured outputs. Plain {"type": "json_object"} works on most models regardless of this flag — json specifically 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:

TierTry firstGood for
Flagshipopenai/gpt-5.1, anthropic/claude-opus-5, google/gemini-3-proHard reasoning, complex agents, high-stakes generation where quality dominates cost
Fastopenai/gpt-5-mini, anthropic/claude-haiku-4.5, google/gemini-2.5-flashClassification, extraction, summarization, latency-sensitive and high-volume paths
Open-weightdeepseek/deepseek-v3.2, qwen/qwen3-coder, moonshot/kimi-k2Near-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.