The Text Completions API has been deprecated in favor of the Messages API.
Inputs and outputs
The largest change between Text Completions and the Messages is the way in which you specify model inputs and receive outputs from the model. With Text Completions, inputs are raw strings:Python
role and content.
Role namesThe Text Completions API expects alternating
\n\nHuman: and \n\nAssistant: turns, but the Messages API expects user and assistant roles. You may see documentation referring to either “human” or “user” turns. These refer to the same role, and will be “user” going forward.completion values of the response:
Python
content value, which is a list of content blocks:
Python
Putting words in Claude’s mouth
With Text Completions, you can pre-fill part of Claude’s response:Python
assistant role:
Python
content will continue from the last input message content:
JSON
System prompt
With Text Completions, the system prompt is specified by adding text before the first\n\nHuman: turn:
Python
system parameter:
Python
Model names
The Messages API requires that you specify the full model version (e.g.claude-sonnet-4-5-20250929).
We previously supported specifying only the major version number (e.g. claude-2), which resulted in automatic upgrades to minor versions. However, we no longer recommend this integration pattern, and Messages do not support it.
Stop reason
Text Completions always have astop_reason of either:
"stop_sequence": The model either ended its turn naturally, or one of your custom stop sequences was generated."max_tokens": Either the model generated your specifiedmax_tokensof content, or it reached its absolute maximum.
stop_reason of one of the following values:
"end_turn": The conversational turn ended naturally."stop_sequence": One of your specified custom stop sequences was generated."max_tokens": (unchanged)
Specifying max tokens
- Text Completions:
max_tokens_to_sampleparameter. No validation, but capped values per-model. - Messages:
max_tokensparameter. If passing a value higher than the model supports, returns a validation error.
Streaming format
When using"stream": true in with Text Completions, the response included any of completion, ping, and error server-sent-events.
Messages can contain multiple content blocks of varying types, and so its streaming format is somewhat more complex. See Messages streaming for details.