The Text Completions API is a legacy API for generating text completions using Claude models. This API is maintained for backwards compatibility, but the Messages API is recommended for new implementations.
Note: Future models and features will not be compatible with Text Completions. See the migration guide for guidance on migrating from Text Completions to Messages.
Creates a text completion using the legacy prompt format with \n\nHuman: and \n\nAssistant: conversational turns.
/**
* Create a Text Completion (Legacy).
*
* @param params - Completion parameters
* @param options - Optional request options
* @returns APIPromise resolving to a Completion or Stream<Completion>
*/
client.completions.create(
params: CompletionCreateParams
): APIPromise<Completion> | APIPromise<Stream<Completion>>;Usage Example:
import Anthropic from '@anthropic-ai/sdk';
const client = new Anthropic({
apiKey: process.env.ANTHROPIC_API_KEY,
});
// Non-streaming completion
const completion = await client.completions.create({
max_tokens_to_sample: 256,
model: 'claude-sonnet-4-5-20250929',
prompt: '\n\nHuman: Hello, world!\n\nAssistant:',
});
console.log(completion.completion);
// Streaming completion
const stream = await client.completions.create({
max_tokens_to_sample: 256,
model: 'claude-sonnet-4-5-20250929',
prompt: '\n\nHuman: Tell me a story\n\nAssistant:',
stream: true,
});
for await (const chunk of stream) {
console.log(chunk.completion);
}The response object returned by the Text Completions API.
interface Completion {
/**
* Unique object identifier.
* The format and length of IDs may change over time.
*/
id: string;
/**
* The resulting completion up to and excluding the stop sequences.
*/
completion: string;
/**
* The model that completed your prompt.
* See https://docs.anthropic.com/en/docs/models-overview for details.
*/
model: Model;
/**
* The reason that generation stopped.
*
* Possible values:
* - "stop_sequence": reached a stop sequence (provided or built-in)
* - "max_tokens": exceeded max_tokens_to_sample or model's maximum
*/
stop_reason: string | null;
/**
* Object type. For Text Completions, this is always "completion".
*/
type: 'completion';
}Parameters for creating a text completion.
type CompletionCreateParams =
| CompletionCreateParamsNonStreaming
| CompletionCreateParamsStreaming;
interface CompletionCreateParamsBase {
/**
* The maximum number of tokens to generate before stopping.
*
* Note that models may stop before reaching this maximum.
* This parameter only specifies the absolute maximum number of tokens to generate.
*/
max_tokens_to_sample: number;
/**
* The model that will complete your prompt.
* See https://docs.anthropic.com/en/docs/models-overview for details.
*/
model: Model;
/**
* The prompt that you want Claude to complete.
*
* For proper response generation, format your prompt using alternating
* `\n\nHuman:` and `\n\nAssistant:` conversational turns.
*
* Example: "\n\nHuman: {userQuestion}\n\nAssistant:"
*
* See https://docs.claude.com/en/api/prompt-validation and
* https://docs.claude.com/en/docs/intro-to-prompting for more details.
*/
prompt: string;
/**
* An object describing metadata about the request.
*/
metadata?: Metadata;
/**
* Sequences that will cause the model to stop generating.
*
* Models stop on "\n\nHuman:" and may include additional built-in stop
* sequences in the future. By providing stop_sequences, you may include
* additional strings that will cause the model to stop generating.
*/
stop_sequences?: string[];
/**
* Whether to incrementally stream the response using server-sent events.
* See https://docs.claude.com/en/api/streaming for details.
*/
stream?: boolean;
/**
* Amount of randomness injected into the response.
*
* Defaults to 1.0. Ranges from 0.0 to 1.0.
* Use temperature closer to 0.0 for analytical/multiple choice tasks,
* and closer to 1.0 for creative and generative tasks.
*
* Note that even with temperature of 0.0, results will not be fully deterministic.
*/
temperature?: number;
/**
* Only sample from the top K options for each subsequent token.
*
* Used to remove "long tail" low probability responses.
* See https://towardsdatascience.com/how-to-sample-from-language-models-682bceb97277
*
* Recommended for advanced use cases only. You usually only need to use temperature.
*/
top_k?: number;
/**
* Use nucleus sampling.
*
* In nucleus sampling, we compute the cumulative distribution over all options
* for each subsequent token in decreasing probability order and cut it off once
* it reaches a particular probability specified by top_p.
*
* You should either alter temperature or top_p, but not both.
*
* Recommended for advanced use cases only. You usually only need to use temperature.
*/
top_p?: number;
/**
* Optional header to specify the beta version(s) you want to use.
*/
betas?: AnthropicBeta[];
}
interface CompletionCreateParamsNonStreaming extends CompletionCreateParamsBase {
/**
* Whether to incrementally stream the response using server-sent events.
*/
stream?: false;
}
interface CompletionCreateParamsStreaming extends CompletionCreateParamsBase {
/**
* Whether to incrementally stream the response using server-sent events.
*/
stream: true;
}