Reasoning Effort: 4 Recipes That Ship (2026)
reasoning_effort in 2026: four copy-paste recipes to dial reasoning from none to max in OpenAI and Claude, when to drop it, and the cost and cache traps that bite.

On this page
Quick Answer (2026): reasoning_effort is the request-level knob that tells a reasoning model how hard to think before it answers. OpenAI exposes it as reasoning.effort on a ladder from none through minimal, low, medium, high, xhigh, up to max (each model supports a subset; medium is the balanced default on the GPT-5.x line). Claude has no reasoning_effort field: you get the same control through the extended-thinking budget_tokens target on Claude 4.5-class models, and through output_config.effort on adaptive-thinking models (4.7 and later). Default to the middle. Drop it for extraction and formatting. Raise it only for multi-step reasoning. Below: four recipes that ship, each with the failure mode that bites.
Reasoning models bill you for tokens you never see. Effort is the dial on that meter. Set it wrong and you either pay for thinking a formatting task did not need, or you starve a hard problem and ship a wrong answer. Four recipes.
The effort ladder (2026)
Scroll to see more
| Level | Use it for | Trade |
|---|---|---|
none | Latency-critical calls that do not benefit from reasoning | Fastest, cheapest, no thinking tokens |
minimal / low | Extraction, classification, formatting, short rewrites | Small latency bump, big quality-per-dollar |
medium | The default. Quality and reliability matter | Balanced |
high | Hard debugging, multi-step math, deep planning | Slower, more thinking tokens |
xhigh / max | Deep research, agentic runs you can wait on | Longest, most expensive |
Levels and defaults are model-specific. Read the model card before you hardcode one. Source: OpenAI's reasoning models guide (2026).
Recipe 1: Default to medium, then earn every step away from it
Claim: medium is the right starting point for almost everything. Change it only when you have a measured reason.
Receipt, OpenAI Responses API:
resp = client.responses.create(
model="gpt-5.1",
reasoning={"effort": "medium"},
input="Reconcile these two ledgers and list every mismatch.",
)
Why: reasoning models adapt inside a level, spending fewer tokens on easy inputs and more on hard ones. medium gives you that adaptation without you guessing. On Chat Completions the field is flat: reasoning_effort="medium".
Failure mode: shipping high everywhere "to be safe." You pay for thinking tokens on inputs that never needed them, and p95 latency creeps up with zero quality gain.
Recipe 2: Drop to minimal for extraction and formatting
Claim: for pull-a-field, classify, or reformat tasks, minimal (or none) is a free speed and cost win.
Receipt:
resp = client.responses.create(
model="gpt-5.1",
reasoning={"effort": "minimal"},
input="Return the invoice total as JSON: {\"total\": number}. Text: ...",
)
Why: these tasks have one right answer and no branching logic. Extra reasoning tokens buy nothing. If you like token-thrift as a habit, pair this with our chain of draft recipes on the output side.
Failure mode: reaching for minimal on a task that hides a reasoning step (a word problem, a multi-constraint filter, anything with "and also"). The model answers fast and confidently wrong. When accuracy dips after you lower effort, that is the signal to step back up.
Recipe 3: On Claude, effort is a token budget
Claim: Claude gives you the same dial, just spelled differently. Set the depth, do not go looking for a reasoning_effort key.
Receipt, Claude 4.5-class extended thinking:
resp = client.messages.create(
model="claude-sonnet-4-5",
max_tokens=16000,
thinking={"type": "enabled", "budget_tokens": 4000},
messages=[{"role": "user", "content": "Prove or disprove: ..."}],
)
On adaptive-thinking models (Claude 4.7 and later) you drop budget_tokens and set thinking={"type": "adaptive"} with output_config={"effort": "high"} instead. Full parameter rules are in Anthropic's extended thinking docs (2026); we keep a Claude-specific set in our Claude extended thinking recipes.
Why: budget_tokens is a target, not a hard cap. budget_tokens must be at least 1,024 and less than max_tokens, because thinking tokens count against max_tokens. max_tokens is the real ceiling.
Failure mode: setting budget_tokens equal to or above max_tokens. The API rejects it, or you leave no room for the actual answer. Start near 1,024 for simple work and climb; start at 16,000+ for genuinely hard problems.
Recipe 4: Pin effort for the life of a cached conversation
Claim: changing effort mid-conversation silently busts your prompt cache. Pick a level and hold it.
Receipt, the trap:
Request 1 effort=low -> cache write
Request 2 effort=low -> cache read (cheap)
Request 3 effort=high -> cache MISS, full re-read (you pay again)
Why: the effort or budget value is rendered into the prompt, so a change invalidates cache breakpoints, the same way switching thinking modes does. Anthropic documents the budget-change cache miss directly; OpenAI's reasoning params behave the same way against its cache.
Failure mode: a "smart" router that bumps effort up or down per turn inside one cached thread. It defeats the cache it was supposed to help, and your bill goes up, not down.
When NOT to touch it
If your task is not failing on quality and not too slow, leave effort at the model default and change something else. Effort is a dial for a measured problem, not a knob to fiddle. And do not treat it as a correctness fix: a hard research finding (a March 2025 arXiv study, Estermann et al.) is that reasoning effort scales with problem size only up to a critical complexity, then stops helping. Past that point, more effort is more spend for the same wrong answer. Fix the prompt, not the dial.
Cost to test: about $0.05, a dozen calls across minimal, medium, and high on one mid-tier reasoning model.
Written by
Roo IyerRoo Iyer writes terse, tested prompt and API recipes for PromptAttic. Every recipe ships with a receipt, a failure mode, and a cost to test.
FAQ
What is reasoning_effort?
reasoning_effort is a request-level parameter that tells a reasoning model how much to think before answering. In 2026 OpenAI exposes it as reasoning.effort on a ladder from none through minimal, low, medium, high, xhigh, up to max, with each model supporting a subset. Higher effort spends more internal reasoning tokens for potentially better answers at the cost of latency and price.
What are the reasoning_effort values and the default?
OpenAI documents none, minimal, low, medium, high, xhigh, and max, though a given model supports only some of them. On the GPT-5.x line medium is the balanced default. Defaults are model-specific, so check the model card before you hardcode a level.
Does Claude have a reasoning_effort parameter?
No. Claude gives you the same control differently. On Claude 4.5-class models you set the extended-thinking budget with thinking={"type":"enabled","budget_tokens":N}, where budget_tokens must be at least 1,024 and less than max_tokens. On adaptive-thinking models (Claude 4.7 and later) you set thinking={"type":"adaptive"} and control depth with output_config.effort.
When should I lower reasoning effort?
Lower it (minimal or none) for extraction, classification, formatting, and short rewrites, tasks with one right answer and no branching logic. Extra reasoning tokens buy nothing there, so you gain speed and cut cost with no quality loss. Step back up the moment accuracy dips.
Does changing reasoning effort affect prompt caching?
Yes. The effort or budget value is rendered into the prompt, so changing it between requests invalidates cache breakpoints and forces a full re-read that you pay for again. Pick one level and hold it for the life of a cached conversation.
Is budget_tokens a hard cap on Claude thinking?
No. budget_tokens is a target, not a strict cap. Claude may stop reasoning before it is exhausted, and max_tokens remains the hard ceiling on total output. budget_tokens must be at least 1,024 and less than max_tokens because thinking tokens count against max_tokens.
Related recipes
Claude Extended Thinking: 3 Recipes That Ship (July 2026)
Extended thinking changed in July 2026: on Claude Sonnet 5 and Opus 4.8 you use adaptive thinking and effort, not budget_tokens. Three recipes and the gotchas.
Chain of Draft Prompting: 4 Recipes That Ship (2026)
Chain of Draft keeps chain-of-thought's steps but caps each to a few words, cutting tokens hard while holding accuracy. Four recipes, the gate, and the failure mode.
Assistant Prefill: 4 Recipes That Ship (2026)
Assistant prefill in 2026: four copy-paste recipes that force JSON, kill the preamble, lock the output shape, and hold a persona, plus where prefill breaks.


