Skip to main content

Model Suffixes

Append supported suffixes to the model 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.
Rules:
  • 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 :thinking are preserved.
  • Do not combine :speed, :fast, :throughput, :latency, :price, :cheap, or :floor with X-Provider, body provider, or a provider model suffix.
  • Do not combine :tools with a routing preference suffix, X-Provider, body provider, a provider model suffix, or caching: true.
  • Do not combine :caching, :cache, or :cached with :tools, X-Provider, body provider, 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.
Price ranking is recalculated for every request and may switch providers, reducing cache reuse. It does not predict future cache hits. See price routing, caps, and cache reuse. The caching suffixes are provider-capability routing, not prompt-cache annotation. They do not add Anthropic-style 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:
Recommended: use 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 web_search.enabled (or the webSearch / legacy linkup alias) is true, body configuration takes precedence over model suffix configuration. web_search: false does not switch off a suffix’s search. See Web Search. Search has separate charges: see hosted web search pricing. Chat requests also incur model token charges.

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 openai/gpt-6.1-sol: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:
On Chat Completions, this is equivalent to 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 for enabled reasoning levels. For none, Messages instead supplies thinking: { type: "disabled" }, because output_config.effort does not accept none. 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. For none, an explicit enabled-thinking setting also takes precedence. The suffix supplies a default only. Existing endpoint rules still determine precedence between body parameters.
  • Reasoning visibility is separate: reasoning.exclude: true hides reasoning without cancelling the suffix’s requested effort. On endpoints supporting :reasoning-exclude, that suffix can also be combined with the effort suffix.
  • none requests disabled reasoning; it is not just an output-visibility filter. Models that require reasoning keep their existing restrictions. Use :reasoning-exclude where supported if you only want to hide reasoning output.
  • Effort support remains model/provider-specific. A suffix does not add reasoning capability or new effort levels to a model. max and xhigh are 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 six values above; minimal remains available only through request-body controls on models that support it.

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.

Conflict Rules

Do not combine conflicting routing directives:

Examples