Reasoning
Reasoning models, reasoning tokens, and what they add to the bill.
Some models think before they answer. That thinking is generated text like any
other, so it is counted and billed — just not shown in content.
{
"usage": {
"completion_tokens": 318,
"completion_tokens_details": { "reasoning_tokens": 96 }
}
}Reasoning tokens are billed as output unless the backend prices them separately. See Pricing.
Asking for it
Either reasoning_effort or a reasoning object turns it on. Both are passed to
the model as you send them; how much effort each level means is the model's
interpretation, not a scale we define.
response = client.chat.completions.create(
model="minimax-m2.7",
messages=[{"role": "user", "content": "..."}],
reasoning_effort="medium",
)It narrows where the request can go
Sending either field restricts the request to models with the reasoning
capability. A model without it answers 400 rather than quietly ignoring the
field, so check GET /v1/models first.
When it is worth it
Reasoning buys accuracy on problems with several dependent steps — multi-hop questions, tricky extraction, planning a sequence of tool calls. It costs latency and output tokens on everything else, including the great majority of chat turns, classification and summarisation.
The honest test is your own traffic: run a sample with and without, and compare
the error rate against the bill. completion_tokens_details.reasoning_tokens in
the usage log tells you exactly what the thinking cost.