Messages API uses Anthropic-style thinking blocks rather than Responses reasoning items or chat-style reasoning_details fields.
Use this page when you need reasoning controls but your integration depends on the Anthropic Messages protocol.
Request Controls
Two request surfaces affect reasoning behavior here:
thinking with type: enabled, disabled, or adaptive
output_config.effort with low, medium, high, or max
output_config is a reasoning control on this API. It is not the generic structured-output equivalent.
Start with a modest reasoning budget and raise it only when the extra quality is worth the cost and latency.
Non-Streaming Response Shape
Thinking can appear as a typed content block before text blocks.
Streaming Behavior
The stream can emit thinking before text.
- a thinking block starts with
content_block_start
- thinking text streams through
content_block_delta
- signatures arrive as
content_block_delta with type: signature_delta
- normal answer text can begin in a later content block
From the protocol tests, a streamed thinking block starts as:
And the signature can arrive as:
If you continue a tool-using conversation in a later request, replay the assistant’s prior thinking blocks unchanged before you send the later tool_result block.
Preserve the replayed thinking text and signature exactly as generated.
If you mutate them, reasoning continuity across later tool turns can break.
Keep the thinking text and signature exactly as generated if you want reasoning continuity across turns.
Caveats
- clients that only read text blocks can miss thinking output completely
thinking: {"type":"disabled"} takes precedence over effort-style hints
adaptive maps to a medium-style reasoning setting internally
output_config.effort: "max" maps to the highest normalized reasoning effort internally
Common mistakes
- treating
output_config like a generic output-format feature instead of a reasoning control
- modifying replayed thinking blocks before a later tool turn
- assuming all models expose visible thinking blocks