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.
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 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:
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. 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: 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.
  • 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 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.

Conflict Rules

Do not combine conflicting routing directives:

Examples