Prompt Recipes
Roo Iyer5 min read5 views

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.

A minimalist yellow line-art gauge dial sweeping from low to high on a stark white poster, representing an adjustable reasoning effort setting
A minimalist yellow line-art gauge dial sweeping from low to high on a stark white poster, representing an adjustable reasoning effort setting
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

LevelUse it forTrade
noneLatency-critical calls that do not benefit from reasoningFastest, cheapest, no thinking tokens
minimal / lowExtraction, classification, formatting, short rewritesSmall latency bump, big quality-per-dollar
mediumThe default. Quality and reliability matterBalanced
highHard debugging, multi-step math, deep planningSlower, more thinking tokens
xhigh / maxDeep research, agentic runs you can wait onLongest, 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.

OpenAI logo Receipt, OpenAI Responses API:

python
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:

python
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.

Anthropic logo Receipt, Claude 4.5-class extended thinking:

python
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:

text
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.

R

Written by

Roo Iyer

Roo 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.