Gateway
Models and routing
Choose models by ID, let Seldon pick with auto, add fallbacks and control which providers serve a request.
A model in Seldon can be served by more than one provider. You choose the model; Seldon chooses among the providers that offer it, tries them in order and falls back when one fails.
Model IDs
Use the provider-prefixed ID from Models, such as openai/gpt-5.4-nano. The part after the first / also resolves, so gpt-5.4-nano works when it is unambiguous. List the models available to your workspace with GET /v1/models.
Let Seldon choose: auto
"model": "auto" considers every routable model, applies your provider filters and policies, and orders candidates by provider.sort. Use it when any capable model is acceptable.
Fallback models
models lists fallbacks. Seldon tries model first, then each entry in order:
response = client.chat.completions.create(
model="openai/gpt-5.4-nano",
messages=[{"role": "user", "content": "Summarize this ticket."}],
extra_body={"models": ["openai/gpt-4.1-mini"]},
)Provider preferences
The provider object controls which providers may serve the request and in what order.
{
"model": "openai/gpt-5.4-nano",
"messages": [{ "role": "user", "content": "Hello" }],
"provider": {
"order": ["azure-openai", "openai"],
"max_price": { "input_per_1m": "1.00", "output_per_1m": "4.00" }
}
}Provider slugs appear in each model's provider list in GET /v1/models.
How the controls combine
Filters run first: deny, allowlist, open circuit breakers, structured-output capability, max_price, then data policy. Ordering runs next: order, then sort. Sticky routing can move a provider to the front only if it survived every filter and costs no more than 5% above the cheapest candidate.
Price caps
max_price.total_estimated is accepted only together with input_per_1m or output_per_1m, because Seldon has no token estimate before dispatch to enforce a total on its own. When no offering fits the cap, the request returns 402 price_cap_exceeded.
Data policy
zdr, data_collection and data_residency rely on provider policy metadata. When that metadata is unknown, the provider is treated as non-compliant, so strict policies can return 422 no_policy_compliant_provider. A workspace may enforce stricter defaults; a request cannot loosen them (422 data_policy_loosening_forbidden). See Data handling.
Reasoning controls
Seldon accepts both OpenAI-style reasoning_effort and the reasoning object:
reasoning_effortorreasoning.effort:none,minimal,low,medium,high,xhighormax.reasoning.enabled,reasoning.excludeandinclude_reasoning: booleans.reasoning.max_tokens: a positive integer.
Contradictory combinations, such as reasoning.enabled: false with an effort other than none, return 400 invalid_request. Models apply only the efforts they support.