Model Suffixes
Append supported suffixes to themodel value to request optional behavior for a single request. Most suffixes are stripped before the base model is routed. Model identity suffixes, such as supported :thinking variants, are preserved because they identify a distinct model or alias.
Suffix parsing is case-insensitive for provider routing and provider suffixes. Avoid combining multiple suffixes that make conflicting provider-selection requests.
Provider Routing Preference Suffixes
These apply only to provider-selection-capable models.- Routing preference suffixes only consider user-selectable providers. Internal routing-only providers are excluded.
- Routing preference suffixes are stripped before model mapping/routing. Non-routing identity suffixes such as
:thinkingare preserved. - Do not combine
:speed,:fast,:throughput,:latency,:price,:cheap, or:floorwithX-Provider, bodyprovider, or a provider model suffix. - Do not combine
:toolswith a routing preference suffix,X-Provider, bodyprovider, a provider model suffix, orcaching: true. - Do not combine
:caching,:cache, or:cachedwith:tools,X-Provider, bodyprovider, a provider model suffix, or another routing preference suffix. - Routing preference requests are billed like explicit provider-selection requests.
- Conflict error codes use the existing
speed_suffix_*family for API compatibility, even when the suffix is not literally:speed.
cache_control markers, configure cache TTLs, or force a cache write. For details, see Prompt Caching.
Provider Suffixes
The API accepts a trailing provider suffix for public user-selectable provider IDs:X-Provider for explicit provider overrides. The API also accepts a trailing provider suffix for user-selectable providers, such as model-id:cerebras, but X-Provider is clearer and easier to validate against provider-discovery responses.
Provider suffixes must match a public user-selectable provider ID. They are case-insensitive, cannot be combined with routing preference suffixes or :tools, and are billed like explicit provider selection.
Web Search Suffixes
Web search suffixes can compose with memory and reasoning-exclude suffixes. If request body
webSearch.enabled or legacy linkup.enabled is true, body configuration takes precedence over model suffix configuration.
Memory Suffixes
Header
memory_expiration_days takes precedence over :memory-<days>. memory: false in the request body explicitly disables memory even if the model has a memory suffix. Memory can compose with web search, for example :online:memory-90.
PII Redaction Suffixes
Redaction suffixes are stripped before model routing and can compose with other supported NanoGPT suffixes, such as
:online. If a request explicitly enables redaction with a model suffix, redaction remains enabled even if an account-level or API-key default would otherwise be disabled for that request.
For details, pricing, and limitations, see PII Redaction.
Reasoning Effort Suffixes
If a custom-provider client such as Chatbox or Cherry Studio does not expose a reasoning-effort setting, enter the effort in the model ID:model: "openai/gpt-latest" with reasoning_effort: "high". NanoGPT removes the suffix before model checks and routing, then resolves the base ID or compatibility alias normally. These are request shortcuts, not additional models: they do not appear in the model picker or /v1/models. Add the suffixed ID manually in your client; the shortcut does not enable the client’s reasoning-setting UI.
Supported on
/v1/chat/completions, /v1/responses, and /v1/messages, for streaming and non-streaming requests. Responses uses reasoning.effort; Messages uses output_config.effort. Tool-call turns and post-tool continuations accept the same suffix; include it on each request where you want the default effort.
Rules:
- Explicit request-body generation settings take precedence, including an effort, thinking budget, or disabled-thinking setting. The suffix supplies a default only. Existing endpoint rules still determine precedence between body parameters.
- Reasoning visibility is separate:
reasoning.exclude: truehides reasoning without cancelling the suffix’s requested effort. On endpoints supporting:reasoning-exclude, that suffix can also be combined with the effort suffix. - Effort support remains model/provider-specific. A suffix does not add reasoning capability or new effort levels to a model.
maxandxhighare distinct inputs; existing provider-specific mappings still apply. - Effort suffixes are case-insensitive and can appear before or after other supported suffixes, such as
:thinking,:speed, or a provider suffix. Other suffixes keep their normal compatibility and billing rules. - Use one effort suffix. If repeated, the rightmost recognized effort wins.
- Unknown effort values are not stripped or silently replaced. They remain part of the model ID and are subject to normal model validation. The suffix shortcut accepts only the five values above.
Reasoning and Thinking Suffixes
:reasoning-exclude works on Chat Completions and Text Completions. It composes with other suffixes such as :thinking, :online, and :memory. :thinking is model identity, not provider routing, and is not universal.
Official and Original Route Suffixes
Some model families expose:official / :original aliases to force the official-provider route. These are model-specific; check the model page or provider-selection docs for supported IDs.