Skip to content
API Reference

Per-Model Details

How specific model families handle parameters differently from the defaults in Parameter Support by Model. All parameters below are top-level request fields unless noted — you can send them through any API format. The router normalises them automatically, so you generally don't need to know these details; they're here for when you want precise control.

GPT-5 series

GPT-5 models apply strict parameter sanitisation:

Parameter Behaviour
max_tokens Automatically converted to max_completion_tokens. GPT-5 and Codex models need a value of at least 16.
temperature Accepted only when = 1.0, or when reasoning_effort = "none" on GPT-5.1, 5.2, 5.4 and 5.5 (non-Codex).
presence_penalty, frequency_penalty, stop, logit_bias Always dropped.
logprobs, top_logprobs, top_p Accepted only when reasoning_effort = "none" on GPT-5.1, 5.2, 5.4 and 5.5 (non-Codex); dropped on other GPT-5 models.
parallel_tool_calls Dropped when reasoning_effort = "minimal".
reasoning_effort Supported on all GPT-5 variants. A value the model does not take is mapped to the nearest one it does (for example minimal becomes low on GPT-5.1 and later).
response_format With json_object, the prompt must contain the word "JSON".

On /v1/chat/completions, GPT-5.6 and later (including GPT-6 models) reject function tools unless reasoning_effort is "none" — the request returns 400. Set reasoning_effort to "none" or use /v1/responses.

Claude 4+

The router normalises the thinking parameter to match the target Claude model — clients don't need to know which mode a model uses. thinking.type = "enabled" is accepted on every Claude model.

Adaptive thinking models (Claude 4.6 and newer: Sonnet 4.6, Opus 4.6, Opus 4.7, Opus 4.8, the Claude 5 line, and Fable):

Parameter Behaviour
thinking.type = "enabled" On Claude 4.7 and newer, converted to "adaptive"; budget_tokens is ignored. On Sonnet 4.6 and Opus 4.6, budget_tokens is honoured.
thinking.type = "adaptive" Passed through directly.
thinking.type = "disabled" Turns thinking off. On adaptive-only models (the Fable family) the field is dropped and the model uses its adaptive default.
reasoning_effort Mapped to thinking.type = "adaptive" plus an effort level. xhigh applies on Claude 4.7 and newer and is treated as high on earlier models; none sends no thinking field.

Non-adaptive thinking models (Claude Haiku 4.5, Sonnet 4.5, Opus 4.5):

Parameter Behaviour
thinking.type = "enabled" Needs budget_tokens.
thinking.type = "adaptive" Converted to "enabled" with a default budget.
reasoning_effort Mapped to a budget_tokens value for the effort level (low / medium / high → increasing token counts).
budget_tokens A value below 1024 is raised to 1024. If max_tokens leaves no room above the budget, the router raises it.

Sampling parameters. Send only one of temperature and top_p. Claude 4.7 and newer ignore temperature (other than 1), top_p and top_k. On earlier models, turning thinking on sets temperature to 1 and drops top_k and any top_p below 0.95.

Prefill. Claude 4.6 and newer do not accept a trailing assistant message — see Assistant Prefill.

All Claude models support tools, tool_choice, parallel_tool_calls, max_tokens, and response_format. With json_object, a reply may be wrapped in a Markdown code fence; use json_schema for bare JSON.

Gemini

Parameter Behaviour
thinking / reasoning_effort Accepted on all Gemini models; silently ignored on models without thinking support. On Gemini 3.x the value is forwarded unchanged as the thinking_level tier; on Gemini 2.5 it maps to a token budget — see below.
frequency_penalty, presence_penalty Not available on preview or Gemini 3 models.
top_k Not a standard top-level field — pass via extra_body; forwarded when supported natively.

thinking_level support (Gemini 3.x only). Gemini 3.x models take a thinking_level tier instead of a token budget — the router forwards the tier you send unchanged, so an unsupported tier (e.g. minimal on gemini-3.1-pro-preview) returns 400. none is the one value translated: Gemini 3.x has no "off" tier, so none sends the lowest tier the model takes (minimal on Flash models, low on Pro models) and the model may still reason a little. When you send no reasoning setting, the model runs at Google's own default (the Default column below). Gemini 2.5 models don't use tiers at all; control them via reasoning.max_tokens / effort instead (xhigh and max are ignored there; see Reasoning & Thinking).

Model Code Supported thinking_level values Default
Gemini 3.1 Flash-Lite gemini-3.1-flash-lite minimal, low, medium, high minimal
Gemini 3 Flash Preview gemini-3-flash-preview minimal, low, medium, high high
Gemini 3.1 Pro Preview gemini-3.1-pro-preview low, medium, high (no minimal) high
Gemini 3.1 Flash Image gemini-3.1-flash-image minimal, medium, high minimal
Gemini 3.1 Flash-Lite Image gemini-3.1-flash-lite-image minimal, high (other tiers not confirmed) minimal
Gemini 3 Pro Image gemini-3-pro-image high only — the model always reasons; any value you send is ignored high
Gemini 3.5 – 3.8 Flash and Flash-Lite gemini-3.5-flash, gemini-3.5-flash-lite, gemini-3.6-flash, gemini-3.7-flash, gemini-3.8-flash minimal, low, medium, high (as for other Flash models; not individually confirmed) Google's default

Google's own docs also list plain Gemini 3 Pro and Gemini 3.1 Pro (low/medium/high, default high) as distinct model names — SIRAYA's catalog currently only exposes the preview build (gemini-3.1-pro-preview) on the text side. gemini-2.5-pro, gemini-2.5-flash, and gemini-2.5-flash-lite aren't in this table because the 2.5 series doesn't use thinking_level tiers at all (token-budget based, see above). See Nano Banana → extra_body for the image-model parameter details.