Service Tiers
Control cost and latency tradeoffs with service tier selection
Overview
A model can have endpoints in multiple platform service tiers. Infron first determines the permitted tiers, then applies endpoint constraints, filters, and routing policies within the selected tier.
Flex
flex
Explicitly select flex supply
Standard
standard
The platform default when no tier is specified
Priority
priority
Explicitly select priority supply
Quick start
Set service_tier inside the request's provider object:
curl https://llm.onerouter.pro/v1/chat/completions \
-H "Authorization: Bearer $INFRON_API_KEY" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-d '{
"model": "<MODEL_ID>",
"messages": [{"role": "user", "content": "Summarize the main points."}],
"provider": {"service_tier": "flex"}
}'Replace <MODEL_ID> with a marketplace model that supports the requested tier. This request allows only the platform's flex pool. It does not automatically switch to standard or priority. If there are no eligible flex endpoints, the request fails unless you explicitly authorize another tier.
Parameters
provider.service_tier
String; standard
Primary platform tier: flex, standard, or priority
provider.service_tier_fallbacks
String or string array; none
Additional permitted tiers, in order; at most 3 entries
provider.allow_fallbacks
Boolean; true
false truncates the tier sequence to the primary tier; retries within it may still occur
provider.only
Endpoint selector array
Restricts endpoints within every permitted tier
provider.order
Endpoint selector array
Prioritizes endpoints within a tier; with allow_fallbacks: false, only matching endpoints remain
provider.sort
For example price, throughput, latency
Changes selection within the current tier without admitting additional tiers
How Routing Works
Infron separates tier eligibility, tier order, and endpoint selection within a tier. For platform channels, it selects the first tier that still has eligible candidates after filtering, then scores, sorts, and selects within that tier. Fallback tiers do not compete with the current tier in a combined price or throughput pool.
1. Default to standard only
Without explicit tier configuration, the effective sequence is ["standard"]. Setting provider.sort to price or throughput changes selection within standard only. It does not admit flex or priority, even if no eligible standard endpoint exists.
When using a preset, inspect the merged effective provider configuration. These defaults apply when the effective configuration contains no tier settings.
2. Select the primary tier separately from sorting
provider.service_tier sets the primary tier without implying a sorting strategy or a fallback path. Priority does not implicitly add standard; flex does not revert to standard when flex supply is absent. Configure provider.sort separately if you want a price or throughput strategy.
3. Authorize each fallback tier
To allow standard endpoints when priority supply cannot serve the request:
Infron evaluates priority before standard. Each tier goes through the endpoint, region, data policy, and other filters. Routing can advance when the current tier has no eligible candidates, or its candidates have been exhausted during an eligible retry flow. Error retryability, global retry limits, and request lifecycle still apply; the platform does not promise to attempt every endpoint.
No primary or fallback tiers
standard
Only service_tier: "priority"
priority
flex with ["standard", "priority"]
flex → standard → priority
No primary tier, fallback "flex"
standard → flex
priority with ["priority", "standard"]
priority → standard
priority with ["standard"] and allow_fallbacks: false
priority
4. Apply endpoint constraints within each permitted tier
Tier order takes precedence over endpoint order. Listing a standard endpoint in provider.order does not bypass eligible priority endpoints when priority is the primary tier.
To restrict routing to a specific endpoint:
Copy <ENDPOINT_SLUG> from the selected model and tier. Ordinary only, order, and ignore entries match endpoint_slug; do not assume a provider brand name or a constructed openai/priority identifier is valid. Naming an endpoint does not admit its tier into the permitted sequence. One endpoint may map to multiple channels, so restricting an endpoint does not guarantee a single upstream attempt.
Comparing Tier Selection Options
This table describes Infron platform channels. A next tier means an explicitly authorized fallback tier; retry eligibility still applies.
No tier settings
Standard
Existing within-tier policy
Standard only
Only sort: "price"
Standard
Within-tier price strategy
Does not admit flex
Only sort: "throughput"
Standard
Within-tier throughput strategy
Does not admit priority
service_tier: "priority"
Priority
Existing strategy; no implicit throughput strategy
No implicit standard fallback
service_tier: "flex"
Flex
Existing strategy; the tier alone does not force sorting
Fails without eligible candidates; no implicit standard fallback
Flex + ["standard"] + price sorting
Flex, then standard
Tier first, then price within that tier
May advance to standard after flex exhaustion
Priority + ["standard"] + throughput sorting
Priority, then standard
Priority first, even if a standard endpoint has higher throughput
May advance after priority exhaustion
only: ["<ENDPOINT_SLUG>"]
Intersection of permitted tiers and endpoint allowlist
Within-tier policy in that intersection
Naming a tier in a slug does not admit it
order: [...], fallback enabled
Listed endpoints first within each permitted tier; others may remain
Tier order before endpoint order
Unlisted endpoints within the tier; cross-tier requires explicit authorization
order: [...] + allow_fallbacks: false
Intersection of primary tier and listed endpoints
Listed endpoint priorities
No cross-tier or unlisted endpoints; retries may remain within the matching scope
Primary + fallbacks + allow_fallbacks: false
Primary only
Existing policy and endpoint constraints
Fallback list is truncated; not necessarily one endpoint
Three examples that clarify the boundary
A tier sequence is not a global price search. Suppose flex costs 2 and standard costs 1 on the same hypothetical basis. Flex → standard with price sorting still starts with eligible flex supply; the lower standard price does not cause an early tier switch.
An endpoint name does not authorize its tier. The live snapshot lists openai/priority for openai/gpt-5.4. With only only: ["openai/priority"], no tier setting, and no preset supplying one, the platform still permits standard only. Also set service_tier: "priority" to admit that endpoint's tier.
Fallback does not bypass an allowlist. Priority → standard combined with an only list containing exclusively priority endpoints cannot fall back to arbitrary standard endpoints. Include the required endpoints from both tiers, or remove that restriction when appropriate.
Request examples
Replace the model placeholder and verify protocol and tier support. In all three APIs, provider is a top-level request object.
Chat Completions
POST https://llm.onerouter.pro/v1/chat/completions
Responses
POST https://llm.onerouter.pro/v1/responses
Messages
POST https://llm.onerouter.pro/v1/messages
Python SDK
Pass platform routing options through extra_body:
Do not use the SDK's top-level service_tier= as a platform routing selector. The compatible request structures contain a separate top-level field, which some protocol paths preserve or transform. It is not equivalent to provider.service_tier and does not construct the platform tier sequence. Endpoint configuration and adapters can also affect upstream parameters. S1, S4, S8
Reading the actual platform tier
The platform response reports the final routing selection as flex, standard, or priority. Rerouting updates this value. The shared helper defaults to standard if a recognizable selected tier is absent.
Chat Completions
Top-level service_tier
Top-level field in terminal / usage chunks, not necessarily every delta
Responses
Top-level service_tier
response.service_tier in lifecycle events, not necessarily text deltas
Messages
Top-level service_tier, an Infron extension
Top-level field in the message_stop event
This describes the inspected shared response paths. Top-level routing metadata injection normally also requires a provider identifier. If Messages preserves upstream usage.service_tier, that field does not have the same meaning as Infron's top-level platform tier. Do not reuse another gateway's field-location assumptions.
A request that falls back from priority to standard can return this non-streaming fragment:
A Responses completion event can contain:
These are field-location fragments, not complete responses. The platform overwrites upstream fields at the relevant location. Consequently, this tier identifies the selected Infron endpoint class; it does not prove which native capacity tier the upstream ultimately used. S2, S5
Pricing and tier availability
Charges use the selected model-provider configuration, measured usage, and applicable pricing rules. Billing prioritizes model-provider-specific pricing using ModelProviderID, and considers team pricing, group ratios, and other rules. Generic pricing may apply when a specific price is absent. Do not calculate charges solely from the requested tier string, or assume the platform automatically reprices from an upstream native response tier. S6
Check tiers, endpoints, prices, and performance on the model detail page. Public read endpoints include:
GET /api/models/{id}/service-tiers
Tier summaries
GET /api/models/{id}/service-tiers/{tier}/providers
Endpoint listing
GET /api/models/{id}/service-tiers/{tier}/pricing
Pricing information
GET /api/models/{id}/service-tiers/{tier}/performance
Performance observations
GET /api/models/{id}/service-tiers/{tier}/uptime
Availability observations
These are /api marketplace routes, separate from /v1 inference routes. Use the numeric ID from the model listing to avoid path-encoding ambiguity. Provider and pricing listings exclude unavailable, ignored, deprecated, and inactive-provider configurations. Historical metrics are not guarantees for an individual request. S9, S10
Troubleshooting
Tier validation fails
Correct nesting, exact lowercase values, fallback type and length
404 / NO_ELIGIBLE_SERVICE_TIER
No endpoint initially matches the tier sequence and other constraints; check tier, only, region, and related filters
503 / SERVICE_TIER_SEQUENCE_EXHAUSTED
Routing exhausted the sequence after retries; the client may instead receive the first upstream error
Fallback enabled but no tier change
Add explicit service_tier_fallbacks; retry eligibility still applies
Named endpoint unavailable
Its tier must be permitted and all other constraints must match
Response tier differs from primary tier
Inspect explicit fallback tiers and BYOK selection
First stream chunk lacks the tier
Read the terminal / usage chunk or corresponding lifecycle event
This is not an exhaustive error catalog. Authentication, model validation, upstream failures, and other constraints can produce different statuses. When a retry cannot obtain another channel, the current controller may retain the first real upstream error.
Last updated