Skip to main content
Some hosted models support extended thinking. The model generates reasoning tokens before its final answer and returns them in reasoning_content, separate from the final content.

Supported models

Models not listed here don’t support reasoning.

Enable thinking

For GLM 5.2 and Nemotron Ultra, enable thinking by passing chat_template_args. For Nemotron 3.5 Super VL, set reasoning_effort to high.
Pass chat_template_args through extra_body since it extends the standard OpenAI API:
enable_thinking.py

Control reasoning depth

Set the top-level reasoning_effort parameter to control how much reasoning a supported model performs. Only the models in this table apply the parameter. Nemotron 3.5 Super VL defaults to non-thinking responses. Set reasoning_effort to high to enable reasoning, or none to turn it off. The other accepted values also enable reasoning. Setting only chat_template_args.enable_thinking: true returns HTTP 400; use reasoning_effort instead. Lower reasoning depths reduce reasoning-token usage and latency. Higher depths use more output tokens for reasoning. Accepted values can map to the same depth. Set reasoning_effort to none to request a direct answer. OpenAI GPT 120B can still return reasoning_content when you set reasoning_effort to none. On Nemotron Ultra, none disables reasoning and high enables it. DeepSeek V4.1 Flash and DeepSeek V4.1 Flash Fast do not support low; a request with low still reasons at the default depth, so use high, max, or none. Baseten treats reasoning_effort: "none" as low for GLM 5.3, GLM 5.3 Fast, and GLM 5.3 Flash. Setting none doesn’t disable reasoning. These models also accept chat_template_args.enable_thinking: false. Responses can include reasoning_content with either setting.
Pass reasoning_effort through extra_body since it extends the standard OpenAI API:
reasoning_effort.py
Use reasoning for mathematical calculations, multi-step logic, code generation with complex requirements, and analysis that requires several intermediate steps. For simple questions or text generation, reasoning adds latency and output tokens. Use a model without reasoning support or set reasoning_effort to low.

Parse the response

The message object returns reasoning in reasoning_content and the final answer in content.
Read reasoning_content and content directly off the message object:
parse_reasoning.py
The response body contains both fields on the assistant message:
Response
Baseten includes reasoning tokens in completion_tokens and counts them toward your total usage and billing.

Set a reasoning token budget

max_tokens caps the whole completion, reasoning tokens included. reasoning.max_tokens caps reasoning tokens alone: once the model has generated that many reasoning tokens, it stops thinking and spends the rest of max_tokens on its final answer. Set max_tokens above the reasoning budget so the model has room to answer. DeepSeek V4 Flash 0731 enforces reasoning.max_tokens; other reasoning models ignore it. On DeepSeek V4 Flash 0731, reasoning stops at 4,096 tokens by default, including at reasoning_effort: max. Raise the budget when a hard problem needs more thinking room:
Pass reasoning through extra_body since it extends the standard OpenAI API:
reasoning_budget.py

Next steps

Model APIs overview

Review supported models, pricing, and features.

Structured outputs

Constrain reasoning model output to a JSON schema.