reasoning_effort parameter controls how much thinking a model does. Higher effort improves quality on hard problems and uses more tokens and increases latency.
Set a reasoning effort
Passreasoning_effort on a chat completion request:
Effort levels
The full set of levels isnone, minimal, low, medium, high, xhigh, and max. none disables reasoning. Each model supports a subset:
You can also discover support programmatically.
GET /v1/models returns context_length and max_completion_tokens when the platform knows them, and a reasoning_efforts array when the catalog declares the model’s levels:
gpt-4o and gpt-4.1 accept reasoning_effort and ignore it. They are not reasoning models, so usage.completion_tokens_details.reasoning_tokens is always 0.Anthropic models: max_tokens must exceed the thinking budget
On Anthropic models, each effort level reserves a thinking budget, and that budget counts towardmax_tokens. Your max_tokens (or max_completion_tokens) must be strictly greater than the budget for the level you request:
For example,
reasoning_effort: "xhigh" with max_tokens: 2000 fails, because the 8,192-token budget does not fit. The API rejects it with a 400 that names both numbers:
max_tokens to the budget plus the visible output you want. max_tokens: 20000 leaves room for every level.
Where reasoning appears in the response
Models differ in whether they return the reasoning text:- Anthropic models and
glm-5.2return the reasoning text inreasoning_contenton the message. - OpenAI models do not return reasoning text. You only see the count in
usage.completion_tokens_details.reasoning_tokens.
Verbosity
Theverbosity parameter (low, medium, or high) controls how long the visible answer is, independent of how much the model thinks. Only the gpt-5 family supports it.
Notes
reasoning: {"enabled": false}is accepted as a no-op on models served on the Inference.net cluster. Usereasoning_effort: "none"to disable reasoning.- Request keys outside the documented schema pass through to the upstream provider without validation. A typo in a parameter name fails at the provider, not at the gateway.