# Text Completions API (Legacy) 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](./messages.md) is recommended for new implementations. **Note:** Future models and features will not be compatible with Text Completions. See the [migration guide](https://docs.anthropic.com/en/api/migrating-from-text-completions-to-messages) for guidance on migrating from Text Completions to Messages. ## Capabilities ### Create Completion Creates a text completion using the legacy prompt format with `\n\nHuman:` and `\n\nAssistant:` conversational turns. ```typescript { .api } /** * Create a Text Completion (Legacy). * * @param params - Completion parameters * @param options - Optional request options * @returns APIPromise resolving to a Completion or Stream */ client.completions.create( params: CompletionCreateParams ): APIPromise | APIPromise>; ``` **Usage Example:** ```typescript 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); } ``` ## Types ### Completion The response object returned by the Text Completions API. ```typescript { .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'; } ``` ### CompletionCreateParams Parameters for creating a text completion. ```typescript { .api } 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; } ```