Reasoning Effort
reasoning_effort caps how much a model thinks before it answers. On models that reason without a bound by default it is the single largest cost lever - and what it does depends entirely on which upstream your model runs on.
Values
Send one of these on the request body. Higher effort means more reasoning tokens billed and slower replies:
minimal · low · medium · high
Example request
curl https://synthorai.io/v1/chat/completions \
-H "Authorization: Bearer $SYNTHORAI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "glm-5.2",
"messages": [{"role": "user", "content": "Refactor this function."}],
"reasoning_effort": "low"
}' What happens per upstream
The gateway speaks one protocol to you and another to each provider. This table states what the parameter becomes on the way out - including the case where it is dropped.
| You call | Upstream | Behaviour | Description |
|---|---|---|---|
/v1/chat/completions | OpenAI-compatible (GPT, GLM, DeepSeek, Qwen, Kimi…) | transmis tel quel | Forwarded to the provider as sent, with one exception: when a model's catalog entry lists the effort levels it accepts, a value below the lowest is raised to it and one above the highest steps down (GPT-6.1 Sol cannot turn reasoning off, so none and minimal run at low). Otherwise the gateway neither validates the value nor guarantees the provider honours it. Commonly minimal, low, medium and high, but the accepted set is the provider's: OpenAI also takes none on most models, GLM takes up to max. Check the provider's own reference for its range. |
/v1/chat/completions | Google Vertex - Gemini 4 | converti | Becomes Gemini's thinkingLevel, kept inside the three levels Gemini 4 Argon accepts: none and minimal run at low (the model cannot turn thinking off), low/medium/high map straight across, xhigh and max run at high. An explicit google.thinking_config in the request wins over this mapping. |
/v1/chat/completions | Google Vertex - Gemini 3.x | converti | Becomes Gemini's thinkingLevel: none and minimal both map to minimal, low/medium/high map straight across. An explicit google.thinking_config in the request wins over this mapping. |
/v1/chat/completions | Google Vertex - Gemini 2.5 | ignoré | Gemini 2.5 only understands thinkingBudget and rejects thinkingLevel outright, so the gateway sends neither and leaves the model at its default thinking behaviour. Use google.thinking_config with thinking_budget to control 2.5. |
/v1/chat/completions | Anthropic (Claude) | converti | Devient le thinking d'Anthropic, sous la forme que le modèle accepte. Sur les modèles Claude qui n'acceptent que la réflexion adaptative (Claude Opus 4.7 et suivants, Sonnet 5 et suivants, Haiku 5.5), low/medium/high/xhigh/max deviennent thinking:{"type":"adaptive"} avec output_config.effort au même niveau, et minimal s'exécute en low. none désactive la réflexion sous la forme propre au modèle : {"type":"disabled"} sur la plupart, {"type":"between_tools"} sur Sonnet 5.5, et adaptatif en low sur Opus 5.5, qui ne peut pas désactiver la réflexion. Toute autre valeur n'est pas transmise. Sur les modèles Claude plus anciens, elle devient un budget : none et minimal désactivent la réflexion ({"type":"disabled"}) ; low/medium/high/xhigh/max deviennent un budget de 2,048 / 8,192 / 16,384 / 32,768 tokens, l'inverse du découpage utilisé dans l'autre sens. Un budget dérivé est plafonné sous max_tokens, et n'est pas envoyé du tout quand max_tokens ne peut pas contenir le minimum de 1,024 tokens d'Anthropic : demander un niveau d'effort ne transforme donc jamais une requête qui fonctionne en erreur 400 de l'amont. |
/v1/messages | OpenAI-compatible (GPT, GLM, DeepSeek, Qwen, Kimi…) | converti | Derived from thinking.budget_tokens by bucket, when extended thinking is enabled and the budget is above zero: up to 2,048 tokens becomes low, up to 8,192 becomes medium, above that becomes high. A zero or absent budget sends nothing. For a model whose catalog entry lists the effort levels it accepts (GPT-6.1 Sol), the request's intent is followed instead: thinking disabled or between_tools runs at the lowest level (low), even when output_config.effort is also set; otherwise output_config.effort is sent as the effort. |
/v1/responses | OpenAI-compatible (GPT, GLM, DeepSeek, Qwen, Kimi…) | converti | Read out of the Responses-API reasoning.effort object and sent as the flat reasoning_effort field. |
Each row is transcribed from the converter that implements it and pinned by a Go test, so this table cannot drift from the running gateway without a build failing.
Cost impact
Reasoning tokens are billed as output tokens. On a model that reasons unbounded by default, setting an explicit effort is usually the difference between a few cents and a few dollars for the same answer - measure it on your own prompts before choosing a default.
Models that reason
These models document a reasoning mode. Check the model page for how its upstream handles the parameter:
ByteDance-Seed-1.8 · Dola-Seed-2.0-lite · Dola-Seed-2.0-mini · Dola-Seed-2.0-pro · claude-fable-5 · claude-fable-5-1 · claude-haiku-4-5 · claude-haiku-5-5 · claude-opus-4-5 · claude-opus-4-6 · claude-opus-4-7 · claude-opus-4-8 · claude-opus-5 · claude-opus-5-5 · claude-sonnet-4-5 · claude-sonnet-4-6 · claude-sonnet-5 · claude-sonnet-5-5 · deepseek-v4-flash · deepseek-v4-flash-0731 · deepseek-v4-pro · deepseek-v4-pro-0813 · deepseek-v4.1-flash · deepseek-v4.1-flash-1017 · gemini-2.5-flash · gemini-2.5-flash-lite · gemini-2.5-flash-native-audio · gemini-2.5-pro · gemini-3-flash-preview · gemini-3-pro-image · gemini-3-pro-image-preview · gemini-3.1-flash-image · gemini-3.1-flash-image-preview · gemini-3.1-flash-lite-image · gemini-3.1-flash-lite-preview · gemini-3.1-flash-live · gemini-3.1-pro-preview · gemini-3.5-flash · gemini-3.5-flash-lite · gemini-3.6-flash · gemini-3.7-flash · gemini-3.8-flash · gemini-4-argon · gemini-nano-banana-2.1 · glm-5 · glm-5-turbo · glm-5.1 · glm-5.2 · glm-5.3 · glm-5.3-flash · gpt-5.2 · gpt-5.2-codex · gpt-5.3-codex · gpt-5.4 · gpt-5.4-mini · gpt-5.4-nano · gpt-5.4-pro · gpt-5.5 · gpt-5.5-pro · gpt-5.6 · gpt-5.6-luna · gpt-5.6-sol · gpt-5.6-terra · gpt-6-astra · gpt-6-luna · gpt-6-sol · gpt-6.1-sol · gpt-6.1-terra · kimi-k2.5 · kimi-k2.7-code · kimi-k3 · minimax-m3 · qwen3-max · qwen3-vl-flash · qwen3-vl-plus · qwen3.5-flash · qwen3.5-plus · qwen3.6-35b-a3b · qwen3.6-flash · qwen3.7-max · qwen3.7-plus · qwen3.8-flash · qwen3.8-max
Full request body reference: Chat Completions