Reasoning Effort: Low, Medium, and High
On this page
Updated November 3, 2026 based on the xAI API reference:
max_completion_tokenscaps only the visible response; reasoning tokens do not count toward this limit, and effort controls their quantity. Source: Chat Completions. November 3 addendum: The lesson previously linked effort to the API (Chat Completions or Responses) and applied it togrok-4.20-0309-reasoning, which does not support it; according to xAI’s Reasoning page, it depends on the model (grok-4.7,grok-4.6,grok-4.5,grok-4.20-multi-agent). The example also readusage.completion_tokens, which is absent from Responses API responses (output_tokens,output_tokens_details.reasoning_tokens). Source: Reasoning.
Control Reasoning Depth
Reasoning effort lets you calibrate how much thinking the model invests before answering. It’s a direct lever for balancing quality, speed, and token consumption.
The model determines availability, not the API. According to xAI documentation:
| Model | Effort | Values |
|---|---|---|
grok-4.7, grok-4.6 | Reasoning depth | low, medium, high (default), xhigh |
grok-4.5 | Reasoning depth | low, medium, high (default); xhigh is treated as high |
grok-4.20-multi-agent | Number of agents mobilized (4 or 16), not depth | low, medium, high, xhigh |
grok-4.20-0309-reasoning | Not configurable: the model always reasons | — |
Reasoning cannot be disabled on these models: without configuration, effort defaults to high. Only the parameter name changes depending on the API: reasoning_effort at the top level in Chat Completions, reasoning.effort inside a reasoning object with the Responses API.
{
"model": "grok-4.7",
"input": "Solve the system of equations: 3x + 2y = 12, x - y = 1",
"reasoning": {
"effort": "medium"
}
}
Effort Levels
The documentation describes each level and its appropriate use:
low: Uses some reasoning while staying fast. For latency-sensitive agentic uses and simple tool calls.medium: More reflection, for applications less sensitive to latency. For complex data analysis and reasoning over long contexts.high(default): Many more reasoning tokens. For very difficult problems, complex mathematics, multi-step logic.xhigh: Maximum depth, with corresponding latency. For the hardest problems, when quality matters more than response time.
xAI best practices add a simple rule: set effort explicitly on every request, and log it with every result, so your measurements remain comparable.
Reasoning models also reject three parameters: presence_penalty, frequency_penalty, and stop will fail the request.
Impact on Tokens
Effort level has a direct impact on reasoning token consumption:
low: Few reasoning tokens, fast response, low costmedium: Moderate consumption, good compromisehighandxhigh: Many reasoning tokens, slower response, high cost
These reasoning tokens are billed as output tokens (see Lesson 8). The output cap (max_completion_tokens in Chat Completions, max_output_tokens in the Responses API) limits only the visible response: reasoning does not count toward it, so effort controls their quantity.
Choosing the Right Level
| Task | Recommended Effort |
|---|---|
| Text classification | low |
| Summary with analysis | medium |
| Structured entity extraction | low |
| Equation solving | high |
| Code bug analysis | high |
| Text reformulation | low |
| Option comparison with pros/cons | medium |
| Mathematical proof | high |
Practical Example: Same Question, Three Efforts
for effort in ["low", "medium", "high"]:
response = client.responses.create(
model="grok-4.7",
input="Explain why 0.1 + 0.2 != 0.3 in computing.",
reasoning={"effort": effort},
)
usage = response.usage
print(f"Effort {effort}: {usage.output_tokens} output tokens, "
f"including {usage.output_tokens_details.reasoning_tokens} reasoning tokens")
The gap between levels depends on the question: measure it on your own cases rather than relying on a general ratio, and log the effort with every result.
Key Takeaways
- Effort depends on the model:
low,medium,high(default), andxhighongrok-4.7andgrok-4.6, withoutxhighongrok-4.5;grok-4.20-0309-reasoningdoes not support it reasoning_effortin Chat Completions,reasoning.effortin the Responses API; reasoning cannot be disabled- Effort level directly impacts the number of reasoning tokens and therefore cost
- Without configuration, effort defaults to
high: set it explicitly on every request, as xAI recommends - Adapt effort to the actual complexity of the task to optimize costs