Reasoning

Updated

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, Anthropic thinking.budget_tokens, Gemini thinkingConfig.
  • thinking.budget_tokens maps 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": true the platform strips reasoning_content, reasoning and reasoning_details from the response, but reasoning tokens are still billed.
  • Reasoning tokens count as output tokens at the output price; they are not charged twice.