Reasoning
Models with reasoning (thinking) let you control how long they think and whether the thinking comes back. Each protocol's native parameters work directly, and OpenAI Chat also accepts one unified parameter across models.
| Parameter | Protocol | Example |
|---|---|---|
Unified reasoning |
OpenAI Chat (OpenRouter-compatible) | "reasoning": {"effort": "high"}, "reasoning": {"max_tokens": 4096}, "reasoning": {"exclude": true} |
reasoning_effort |
OpenAI | "reasoning_effort": "low" |
thinking |
Anthropic | "thinking": {"type": "enabled", "budget_tokens": 4096} |
thinkingConfig |
Gemini | "generationConfig": {"thinkingConfig": {"thinkingBudget": 4096}} |
curl https://modelportal.ai/v1/chat/completions \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"model": "MODEL_ID", "reasoning": {"effort": "medium"}, "messages": [{"role": "user", "content": "Prove that the square root of 2 is irrational"}]}'
How the platform handles it
- The unified parameter is translated for the serving endpoint's upstream: OpenAI
reasoning_effort, Anthropicthinking.budget_tokens, GeminithinkingConfig. thinking.budget_tokensmaps to a level: up to 512 is minimal, up to 1024 low, up to 8192 medium, up to 24576 high, and anything above is xhigh.- A level the upstream rejects becomes the next higher accepted level, or its highest one. If the model cannot turn reasoning off, asking for it returns 400
unsupported_parameter. Each model's level table is in the Reasoning effort section of its page, and rewritten calls are flagged in usage records. - With
"exclude": truethe platform stripsreasoning_content,reasoningandreasoning_detailsfrom the response, but reasoning tokens are still billed. - Reasoning tokens count as output tokens at the output price; they are not charged twice.