Skip to main content
Models with supports_reasoning: true think before answering. Set the effort with the field your API uses; the values a model accepts are in its reasoning_efforts (GET /v1/models). An effort the model doesn’t list gets 400 unsupported_parameter, and the message lists the supported ones. Chat Completions also accepts reasoning (an object with effort or max_tokens) and thinking (true / false). An effort derived from a token budget is clamped to the model’s list instead: the highest one not above it, else the model’s lowest. A token budget (Messages thinking.budget_tokens, or Chat Completions reasoning.max_tokens) maps to an effort like this:

Reading the reasoning

Send include_reasoning: false to strip reasoning from the output. The model still reasons, and you’re still billed for it.

Tokens and billing

Reasoning tokens are output tokens: they’re billed at the output price and count toward max_tokens. On Chat Completions they’re also reported in usage.completion_tokens_details.reasoning_tokens.
A small max_tokens can be spent entirely on reasoning, leaving the answer empty with finish_reason: "length" (stop_reason: "max_tokens"). Leave room for the answer, or lower the effort.
Long reasoning can leave a stream quiet for a while; Antara sends keepalives so the connection stays open.