UNPKG

@anthropic-ai/sdk

Version:

The official TypeScript library for the Anthropic API

2,161 lines (1,688 loc) 99.9 kB
// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. import { Anthropic } from '../../../client'; import { APIPromise } from '../../../core/api-promise'; import { APIResource } from '../../../core/resource'; import { Stream } from '../../../core/streaming'; import { MODEL_NONSTREAMING_TOKENS } from '../../../internal/constants'; import { buildHeaders } from '../../../internal/headers'; import { RequestOptions } from '../../../internal/request-options'; import { parseBetaMessage, type ExtractParsedContentFromBetaParams, type ParsedBetaMessage, } from '../../../lib/beta-parser'; import { BetaMessageStream } from '../../../lib/BetaMessageStream'; import { BetaToolRunner, BetaToolRunnerParams, BetaToolRunnerRequestOptions, } from '../../../lib/tools/BetaToolRunner'; import type { Model } from '../../messages/messages'; import * as MessagesAPI from '../../messages/messages'; import * as BetaAPI from '../beta'; import * as BatchesAPI from './batches'; import { BatchCancelParams, BatchCreateParams, BatchDeleteParams, BatchListParams, BatchResultsParams, BatchRetrieveParams, Batches, BetaDeletedMessageBatch, BetaMessageBatch, BetaMessageBatchCanceledResult, BetaMessageBatchErroredResult, BetaMessageBatchExpiredResult, BetaMessageBatchIndividualResponse, BetaMessageBatchRequestCounts, BetaMessageBatchResult, BetaMessageBatchSucceededResult, BetaMessageBatchesPage, } from './batches'; import * as MessagesMessagesAPI from './messages'; const DEPRECATED_MODELS: { [K in Model]?: string; } = { 'claude-1.3': 'November 6th, 2024', 'claude-1.3-100k': 'November 6th, 2024', 'claude-instant-1.1': 'November 6th, 2024', 'claude-instant-1.1-100k': 'November 6th, 2024', 'claude-instant-1.2': 'November 6th, 2024', 'claude-3-sonnet-20240229': 'July 21st, 2025', 'claude-3-opus-20240229': 'January 5th, 2026', 'claude-2.1': 'July 21st, 2025', 'claude-2.0': 'July 21st, 2025', 'claude-3-7-sonnet-latest': 'February 19th, 2026', 'claude-3-7-sonnet-20250219': 'February 19th, 2026', }; export class Messages extends APIResource { batches: BatchesAPI.Batches = new BatchesAPI.Batches(this._client); /** * Send a structured list of input messages with text and/or image content, and the * model will generate the next message in the conversation. * * The Messages API can be used for either single queries or stateless multi-turn * conversations. * * Learn more about the Messages API in our * [user guide](https://docs.claude.com/en/docs/initial-setup) * * @example * ```ts * const betaMessage = await client.beta.messages.create({ * max_tokens: 1024, * messages: [{ content: 'Hello, world', role: 'user' }], * model: 'claude-sonnet-4-5-20250929', * }); * ``` */ create(params: MessageCreateParamsNonStreaming, options?: RequestOptions): APIPromise<BetaMessage>; create( params: MessageCreateParamsStreaming, options?: RequestOptions, ): APIPromise<Stream<BetaRawMessageStreamEvent>>; create( params: MessageCreateParamsBase, options?: RequestOptions, ): APIPromise<Stream<BetaRawMessageStreamEvent> | BetaMessage>; create( params: MessageCreateParams, options?: RequestOptions, ): APIPromise<BetaMessage> | APIPromise<Stream<BetaRawMessageStreamEvent>> { const { betas, ...body } = params; if (body.model in DEPRECATED_MODELS) { console.warn( `The model '${body.model}' is deprecated and will reach end-of-life on ${ DEPRECATED_MODELS[body.model] }\nPlease migrate to a newer model. Visit https://docs.anthropic.com/en/docs/resources/model-deprecations for more information.`, ); } let timeout = (this._client as any)._options.timeout as number | null; if (!body.stream && timeout == null) { const maxNonstreamingTokens = MODEL_NONSTREAMING_TOKENS[body.model] ?? undefined; timeout = this._client.calculateNonstreamingTimeout(body.max_tokens, maxNonstreamingTokens); } return this._client.post('/v1/messages?beta=true', { body, timeout: timeout ?? 600000, ...options, headers: buildHeaders([ { ...(betas?.toString() != null ? { 'anthropic-beta': betas?.toString() } : undefined) }, options?.headers, ]), stream: params.stream ?? false, }) as APIPromise<BetaMessage> | APIPromise<Stream<BetaRawMessageStreamEvent>>; } /** * Send a structured list of input messages with text and/or image content, along with an expected `output_format` and * the response will be automatically parsed and available in the `parsed_output` property of the message. * * @example * ```ts * const message = await client.beta.messages.parse({ * model: 'claude-3-5-sonnet-20241022', * max_tokens: 1024, * messages: [{ role: 'user', content: 'What is 2+2?' }], * output_format: zodOutputFormat(z.object({ answer: z.number() }), 'math'), * }); * * console.log(message.parsed_output?.answer); // 4 * ``` */ parse<Params extends MessageCreateParamsNonStreaming>( params: Params, options?: RequestOptions, ): APIPromise<ParsedBetaMessage<ExtractParsedContentFromBetaParams<Params>>> { options = { ...options, headers: buildHeaders([ { 'anthropic-beta': [...(params.betas ?? []), 'structured-outputs-2025-11-13'].toString() }, options?.headers, ]), }; return this.create(params, options).then((message) => parseBetaMessage(message, params, { logger: this._client.logger ?? console }), ) as APIPromise<ParsedBetaMessage<ExtractParsedContentFromBetaParams<Params>>>; } /** * Create a Message stream */ stream<Params extends BetaMessageStreamParams>( body: Params, options?: RequestOptions, ): BetaMessageStream<ExtractParsedContentFromBetaParams<Params>> { return BetaMessageStream.createMessage(this, body, options); } /** * Count the number of tokens in a Message. * * The Token Count API can be used to count the number of tokens in a Message, * including tools, images, and documents, without creating it. * * Learn more about token counting in our * [user guide](https://docs.claude.com/en/docs/build-with-claude/token-counting) * * @example * ```ts * const betaMessageTokensCount = * await client.beta.messages.countTokens({ * messages: [{ content: 'string', role: 'user' }], * model: 'claude-opus-4-5-20251101', * }); * ``` */ countTokens( params: MessageCountTokensParams, options?: RequestOptions, ): APIPromise<BetaMessageTokensCount> { const { betas, ...body } = params; return this._client.post('/v1/messages/count_tokens?beta=true', { body, ...options, headers: buildHeaders([ { 'anthropic-beta': [...(betas ?? []), 'token-counting-2024-11-01'].toString() }, options?.headers, ]), }); } toolRunner( body: BetaToolRunnerParams & { stream?: false }, options?: BetaToolRunnerRequestOptions, ): BetaToolRunner<false>; toolRunner( body: BetaToolRunnerParams & { stream: true }, options?: BetaToolRunnerRequestOptions, ): BetaToolRunner<true>; toolRunner(body: BetaToolRunnerParams, options?: BetaToolRunnerRequestOptions): BetaToolRunner<boolean>; toolRunner(body: BetaToolRunnerParams, options?: BetaToolRunnerRequestOptions): BetaToolRunner<boolean> { return new BetaToolRunner(this._client as Anthropic, body, options); } } export interface BetaAllThinkingTurns { type: 'all'; } export type BetaMessageStreamParams = MessageCreateParamsBase; export interface BetaBase64ImageSource { data: string; media_type: 'image/jpeg' | 'image/png' | 'image/gif' | 'image/webp'; type: 'base64'; } export interface BetaBase64PDFSource { data: string; media_type: 'application/pdf'; type: 'base64'; } export interface BetaBashCodeExecutionOutputBlock { file_id: string; type: 'bash_code_execution_output'; } export interface BetaBashCodeExecutionOutputBlockParam { file_id: string; type: 'bash_code_execution_output'; } export interface BetaBashCodeExecutionResultBlock { content: Array<BetaBashCodeExecutionOutputBlock>; return_code: number; stderr: string; stdout: string; type: 'bash_code_execution_result'; } export interface BetaBashCodeExecutionResultBlockParam { content: Array<BetaBashCodeExecutionOutputBlockParam>; return_code: number; stderr: string; stdout: string; type: 'bash_code_execution_result'; } export interface BetaBashCodeExecutionToolResultBlock { content: BetaBashCodeExecutionToolResultError | BetaBashCodeExecutionResultBlock; tool_use_id: string; type: 'bash_code_execution_tool_result'; } export interface BetaBashCodeExecutionToolResultBlockParam { content: BetaBashCodeExecutionToolResultErrorParam | BetaBashCodeExecutionResultBlockParam; tool_use_id: string; type: 'bash_code_execution_tool_result'; /** * Create a cache control breakpoint at this content block. */ cache_control?: BetaCacheControlEphemeral | null; } export interface BetaBashCodeExecutionToolResultError { error_code: | 'invalid_tool_input' | 'unavailable' | 'too_many_requests' | 'execution_time_exceeded' | 'output_file_too_large'; type: 'bash_code_execution_tool_result_error'; } export interface BetaBashCodeExecutionToolResultErrorParam { error_code: | 'invalid_tool_input' | 'unavailable' | 'too_many_requests' | 'execution_time_exceeded' | 'output_file_too_large'; type: 'bash_code_execution_tool_result_error'; } export interface BetaCacheControlEphemeral { type: 'ephemeral'; /** * The time-to-live for the cache control breakpoint. * * This may be one the following values: * * - `5m`: 5 minutes * - `1h`: 1 hour * * Defaults to `5m`. */ ttl?: '5m' | '1h'; } export interface BetaCacheCreation { /** * The number of input tokens used to create the 1 hour cache entry. */ ephemeral_1h_input_tokens: number; /** * The number of input tokens used to create the 5 minute cache entry. */ ephemeral_5m_input_tokens: number; } export interface BetaCitationCharLocation { cited_text: string; document_index: number; document_title: string | null; end_char_index: number; file_id: string | null; start_char_index: number; type: 'char_location'; } export interface BetaCitationCharLocationParam { cited_text: string; document_index: number; document_title: string | null; end_char_index: number; start_char_index: number; type: 'char_location'; } export interface BetaCitationConfig { enabled: boolean; } export interface BetaCitationContentBlockLocation { cited_text: string; document_index: number; document_title: string | null; end_block_index: number; file_id: string | null; start_block_index: number; type: 'content_block_location'; } export interface BetaCitationContentBlockLocationParam { cited_text: string; document_index: number; document_title: string | null; end_block_index: number; start_block_index: number; type: 'content_block_location'; } export interface BetaCitationPageLocation { cited_text: string; document_index: number; document_title: string | null; end_page_number: number; file_id: string | null; start_page_number: number; type: 'page_location'; } export interface BetaCitationPageLocationParam { cited_text: string; document_index: number; document_title: string | null; end_page_number: number; start_page_number: number; type: 'page_location'; } export interface BetaCitationSearchResultLocation { cited_text: string; end_block_index: number; search_result_index: number; source: string; start_block_index: number; title: string | null; type: 'search_result_location'; } export interface BetaCitationSearchResultLocationParam { cited_text: string; end_block_index: number; search_result_index: number; source: string; start_block_index: number; title: string | null; type: 'search_result_location'; } export interface BetaCitationWebSearchResultLocationParam { cited_text: string; encrypted_index: string; title: string | null; type: 'web_search_result_location'; url: string; } export interface BetaCitationsConfigParam { enabled?: boolean; } export interface BetaCitationsDelta { citation: | BetaCitationCharLocation | BetaCitationPageLocation | BetaCitationContentBlockLocation | BetaCitationsWebSearchResultLocation | BetaCitationSearchResultLocation; type: 'citations_delta'; } export interface BetaCitationsWebSearchResultLocation { cited_text: string; encrypted_index: string; title: string | null; type: 'web_search_result_location'; url: string; } export interface BetaClearThinking20251015Edit { type: 'clear_thinking_20251015'; /** * Number of most recent assistant turns to keep thinking blocks for. Older turns * will have their thinking blocks removed. */ keep?: BetaThinkingTurns | BetaAllThinkingTurns | 'all'; } export interface BetaClearThinking20251015EditResponse { /** * Number of input tokens cleared by this edit. */ cleared_input_tokens: number; /** * Number of thinking turns that were cleared. */ cleared_thinking_turns: number; /** * The type of context management edit applied. */ type: 'clear_thinking_20251015'; } export interface BetaClearToolUses20250919Edit { type: 'clear_tool_uses_20250919'; /** * Minimum number of tokens that must be cleared when triggered. Context will only * be modified if at least this many tokens can be removed. */ clear_at_least?: BetaInputTokensClearAtLeast | null; /** * Whether to clear all tool inputs (bool) or specific tool inputs to clear (list) */ clear_tool_inputs?: boolean | Array<string> | null; /** * Tool names whose uses are preserved from clearing */ exclude_tools?: Array<string> | null; /** * Number of tool uses to retain in the conversation */ keep?: BetaToolUsesKeep; /** * Condition that triggers the context management strategy */ trigger?: BetaInputTokensTrigger | BetaToolUsesTrigger; } export interface BetaClearToolUses20250919EditResponse { /** * Number of input tokens cleared by this edit. */ cleared_input_tokens: number; /** * Number of tool uses that were cleared. */ cleared_tool_uses: number; /** * The type of context management edit applied. */ type: 'clear_tool_uses_20250919'; } export interface BetaCodeExecutionOutputBlock { file_id: string; type: 'code_execution_output'; } export interface BetaCodeExecutionOutputBlockParam { file_id: string; type: 'code_execution_output'; } export interface BetaCodeExecutionResultBlock { content: Array<BetaCodeExecutionOutputBlock>; return_code: number; stderr: string; stdout: string; type: 'code_execution_result'; } export interface BetaCodeExecutionResultBlockParam { content: Array<BetaCodeExecutionOutputBlockParam>; return_code: number; stderr: string; stdout: string; type: 'code_execution_result'; } export interface BetaCodeExecutionTool20250522 { /** * Name of the tool. * * This is how the tool will be called by the model and in `tool_use` blocks. */ name: 'code_execution'; type: 'code_execution_20250522'; allowed_callers?: Array<'direct' | 'code_execution_20250825'>; /** * Create a cache control breakpoint at this content block. */ cache_control?: BetaCacheControlEphemeral | null; /** * If true, tool will not be included in initial system prompt. Only loaded when * returned via tool_reference from tool search. */ defer_loading?: boolean; strict?: boolean; } export interface BetaCodeExecutionTool20250825 { /** * Name of the tool. * * This is how the tool will be called by the model and in `tool_use` blocks. */ name: 'code_execution'; type: 'code_execution_20250825'; allowed_callers?: Array<'direct' | 'code_execution_20250825'>; /** * Create a cache control breakpoint at this content block. */ cache_control?: BetaCacheControlEphemeral | null; /** * If true, tool will not be included in initial system prompt. Only loaded when * returned via tool_reference from tool search. */ defer_loading?: boolean; strict?: boolean; } export interface BetaCodeExecutionToolResultBlock { content: BetaCodeExecutionToolResultBlockContent; tool_use_id: string; type: 'code_execution_tool_result'; } export type BetaCodeExecutionToolResultBlockContent = | BetaCodeExecutionToolResultError | BetaCodeExecutionResultBlock; export interface BetaCodeExecutionToolResultBlockParam { content: BetaCodeExecutionToolResultBlockParamContent; tool_use_id: string; type: 'code_execution_tool_result'; /** * Create a cache control breakpoint at this content block. */ cache_control?: BetaCacheControlEphemeral | null; } export type BetaCodeExecutionToolResultBlockParamContent = | BetaCodeExecutionToolResultErrorParam | BetaCodeExecutionResultBlockParam; export interface BetaCodeExecutionToolResultError { error_code: BetaCodeExecutionToolResultErrorCode; type: 'code_execution_tool_result_error'; } export type BetaCodeExecutionToolResultErrorCode = | 'invalid_tool_input' | 'unavailable' | 'too_many_requests' | 'execution_time_exceeded'; export interface BetaCodeExecutionToolResultErrorParam { error_code: BetaCodeExecutionToolResultErrorCode; type: 'code_execution_tool_result_error'; } /** * Information about the container used in the request (for the code execution * tool) */ export interface BetaContainer { /** * Identifier for the container used in this request */ id: string; /** * The time at which the container will expire. */ expires_at: string; /** * Skills loaded in the container */ skills: Array<BetaSkill> | null; } /** * Container parameters with skills to be loaded. */ export interface BetaContainerParams { /** * Container id */ id?: string | null; /** * List of skills to load in the container */ skills?: Array<BetaSkillParams> | null; } /** * Response model for a file uploaded to the container. */ export interface BetaContainerUploadBlock { file_id: string; type: 'container_upload'; } /** * A content block that represents a file to be uploaded to the container Files * uploaded via this block will be available in the container's input directory. */ export interface BetaContainerUploadBlockParam { file_id: string; type: 'container_upload'; /** * Create a cache control breakpoint at this content block. */ cache_control?: BetaCacheControlEphemeral | null; } /** * Response model for a file uploaded to the container. */ export type BetaContentBlock = | BetaTextBlock | BetaThinkingBlock | BetaRedactedThinkingBlock | BetaToolUseBlock | BetaServerToolUseBlock | BetaWebSearchToolResultBlock | BetaWebFetchToolResultBlock | BetaCodeExecutionToolResultBlock | BetaBashCodeExecutionToolResultBlock | BetaTextEditorCodeExecutionToolResultBlock | BetaToolSearchToolResultBlock | BetaMCPToolUseBlock | BetaMCPToolResultBlock | BetaContainerUploadBlock; /** * Regular text content. */ export type BetaContentBlockParam = | BetaTextBlockParam | BetaImageBlockParam | BetaRequestDocumentBlock | BetaSearchResultBlockParam | BetaThinkingBlockParam | BetaRedactedThinkingBlockParam | BetaToolUseBlockParam | BetaToolResultBlockParam | BetaServerToolUseBlockParam | BetaWebSearchToolResultBlockParam | BetaWebFetchToolResultBlockParam | BetaCodeExecutionToolResultBlockParam | BetaBashCodeExecutionToolResultBlockParam | BetaTextEditorCodeExecutionToolResultBlockParam | BetaToolSearchToolResultBlockParam | BetaMCPToolUseBlockParam | BetaRequestMCPToolResultBlockParam | BetaContainerUploadBlockParam; export interface BetaContentBlockSource { content: string | Array<BetaContentBlockSourceContent>; type: 'content'; } export type BetaContentBlockSourceContent = BetaTextBlockParam | BetaImageBlockParam; export interface BetaContextManagementConfig { /** * List of context management edits to apply */ edits?: Array<BetaClearToolUses20250919Edit | BetaClearThinking20251015Edit>; } export interface BetaContextManagementResponse { /** * List of context management edits that were applied. */ applied_edits: Array<BetaClearToolUses20250919EditResponse | BetaClearThinking20251015EditResponse>; } export interface BetaCountTokensContextManagementResponse { /** * The original token count before context management was applied */ original_input_tokens: number; } /** * Tool invocation directly from the model. */ export interface BetaDirectCaller { type: 'direct'; } export interface BetaDocumentBlock { /** * Citation configuration for the document */ citations: BetaCitationConfig | null; source: BetaBase64PDFSource | BetaPlainTextSource; /** * The title of the document */ title: string | null; type: 'document'; } export interface BetaFileDocumentSource { file_id: string; type: 'file'; } export interface BetaFileImageSource { file_id: string; type: 'file'; } export interface BetaImageBlockParam { source: BetaBase64ImageSource | BetaURLImageSource | BetaFileImageSource; type: 'image'; /** * Create a cache control breakpoint at this content block. */ cache_control?: BetaCacheControlEphemeral | null; } export interface BetaInputJSONDelta { partial_json: string; type: 'input_json_delta'; } export interface BetaInputTokensClearAtLeast { type: 'input_tokens'; value: number; } export interface BetaInputTokensTrigger { type: 'input_tokens'; value: number; } export interface BetaJSONOutputFormat { /** * The JSON schema of the format */ schema: { [key: string]: unknown }; type: 'json_schema'; } /** * Configuration for a specific tool in an MCP toolset. */ export interface BetaMCPToolConfig { defer_loading?: boolean; enabled?: boolean; } /** * Default configuration for tools in an MCP toolset. */ export interface BetaMCPToolDefaultConfig { defer_loading?: boolean; enabled?: boolean; } export interface BetaMCPToolResultBlock { content: string | Array<BetaTextBlock>; is_error: boolean; tool_use_id: string; type: 'mcp_tool_result'; } export interface BetaMCPToolUseBlock { id: string; input: unknown; /** * The name of the MCP tool */ name: string; /** * The name of the MCP server */ server_name: string; type: 'mcp_tool_use'; } export interface BetaMCPToolUseBlockParam { id: string; input: unknown; name: string; /** * The name of the MCP server */ server_name: string; type: 'mcp_tool_use'; /** * Create a cache control breakpoint at this content block. */ cache_control?: BetaCacheControlEphemeral | null; } /** * Configuration for a group of tools from an MCP server. * * Allows configuring enabled status and defer_loading for all tools from an MCP * server, with optional per-tool overrides. */ export interface BetaMCPToolset { /** * Name of the MCP server to configure tools for */ mcp_server_name: string; type: 'mcp_toolset'; /** * Create a cache control breakpoint at this content block. */ cache_control?: BetaCacheControlEphemeral | null; /** * Configuration overrides for specific tools, keyed by tool name */ configs?: { [key: string]: BetaMCPToolConfig } | null; /** * Default configuration applied to all tools from this server */ default_config?: BetaMCPToolDefaultConfig; } export interface BetaMemoryTool20250818 { /** * Name of the tool. * * This is how the tool will be called by the model and in `tool_use` blocks. */ name: 'memory'; type: 'memory_20250818'; allowed_callers?: Array<'direct' | 'code_execution_20250825'>; /** * Create a cache control breakpoint at this content block. */ cache_control?: BetaCacheControlEphemeral | null; /** * If true, tool will not be included in initial system prompt. Only loaded when * returned via tool_reference from tool search. */ defer_loading?: boolean; input_examples?: Array<{ [key: string]: unknown }>; strict?: boolean; } export type BetaMemoryTool20250818Command = | BetaMemoryTool20250818ViewCommand | BetaMemoryTool20250818CreateCommand | BetaMemoryTool20250818StrReplaceCommand | BetaMemoryTool20250818InsertCommand | BetaMemoryTool20250818DeleteCommand | BetaMemoryTool20250818RenameCommand; export interface BetaMemoryTool20250818CreateCommand { /** * Command type identifier */ command: 'create'; /** * Content to write to the file */ file_text: string; /** * Path where the file should be created */ path: string; } export interface BetaMemoryTool20250818DeleteCommand { /** * Command type identifier */ command: 'delete'; /** * Path to the file or directory to delete */ path: string; } export interface BetaMemoryTool20250818InsertCommand { /** * Command type identifier */ command: 'insert'; /** * Line number where text should be inserted */ insert_line: number; /** * Text to insert at the specified line */ insert_text: string; /** * Path to the file where text should be inserted */ path: string; } export interface BetaMemoryTool20250818RenameCommand { /** * Command type identifier */ command: 'rename'; /** * New path for the file or directory */ new_path: string; /** * Current path of the file or directory */ old_path: string; } export interface BetaMemoryTool20250818StrReplaceCommand { /** * Command type identifier */ command: 'str_replace'; /** * Text to replace with */ new_str: string; /** * Text to search for and replace */ old_str: string; /** * Path to the file where text should be replaced */ path: string; } export interface BetaMemoryTool20250818ViewCommand { /** * Command type identifier */ command: 'view'; /** * Path to directory or file to view */ path: string; /** * Optional line range for viewing specific lines */ view_range?: Array<number>; } export interface BetaMessage { /** * Unique object identifier. * * The format and length of IDs may change over time. */ id: string; /** * Information about the container used in the request (for the code execution * tool) */ container: BetaContainer | null; /** * Content generated by the model. * * This is an array of content blocks, each of which has a `type` that determines * its shape. * * Example: * * ```json * [{ "type": "text", "text": "Hi, I'm Claude." }] * ``` * * If the request input `messages` ended with an `assistant` turn, then the * response `content` will continue directly from that last turn. You can use this * to constrain the model's output. * * For example, if the input `messages` were: * * ```json * [ * { * "role": "user", * "content": "What's the Greek name for Sun? (A) Sol (B) Helios (C) Sun" * }, * { "role": "assistant", "content": "The best answer is (" } * ] * ``` * * Then the response `content` might be: * * ```json * [{ "type": "text", "text": "B)" }] * ``` */ content: Array<BetaContentBlock>; /** * Context management response. * * Information about context management strategies applied during the request. */ context_management: BetaContextManagementResponse | null; /** * The model that will complete your prompt.\n\nSee * [models](https://docs.anthropic.com/en/docs/models-overview) for additional * details and options. */ model: MessagesAPI.Model; /** * Conversational role of the generated message. * * This will always be `"assistant"`. */ role: 'assistant'; /** * The reason that we stopped. * * This may be one the following values: * * - `"end_turn"`: the model reached a natural stopping point * - `"max_tokens"`: we exceeded the requested `max_tokens` or the model's maximum * - `"stop_sequence"`: one of your provided custom `stop_sequences` was generated * - `"tool_use"`: the model invoked one or more tools * - `"pause_turn"`: we paused a long-running turn. You may provide the response * back as-is in a subsequent request to let the model continue. * - `"refusal"`: when streaming classifiers intervene to handle potential policy * violations * * In non-streaming mode this value is always non-null. In streaming mode, it is * null in the `message_start` event and non-null otherwise. */ stop_reason: BetaStopReason | null; /** * Which custom stop sequence was generated, if any. * * This value will be a non-null string if one of your custom stop sequences was * generated. */ stop_sequence: string | null; /** * Object type. * * For Messages, this is always `"message"`. */ type: 'message'; /** * Billing and rate-limit usage. * * Anthropic's API bills and rate-limits by token counts, as tokens represent the * underlying cost to our systems. * * Under the hood, the API transforms requests into a format suitable for the * model. The model's output then goes through a parsing stage before becoming an * API response. As a result, the token counts in `usage` will not match one-to-one * with the exact visible content of an API request or response. * * For example, `output_tokens` will be non-zero, even for an empty string response * from Claude. * * Total input tokens in a request is the summation of `input_tokens`, * `cache_creation_input_tokens`, and `cache_read_input_tokens`. */ usage: BetaUsage; } export interface BetaMessageDeltaUsage { /** * The cumulative number of input tokens used to create the cache entry. */ cache_creation_input_tokens: number | null; /** * The cumulative number of input tokens read from the cache. */ cache_read_input_tokens: number | null; /** * The cumulative number of input tokens which were used. */ input_tokens: number | null; /** * The cumulative number of output tokens which were used. */ output_tokens: number; /** * The number of server tool requests. */ server_tool_use: BetaServerToolUsage | null; } export interface BetaMessageParam { content: string | Array<BetaContentBlockParam>; role: 'user' | 'assistant'; } export interface BetaMessageTokensCount { /** * Information about context management applied to the message. */ context_management: BetaCountTokensContextManagementResponse | null; /** * The total number of tokens across the provided list of messages, system prompt, * and tools. */ input_tokens: number; } export interface BetaMetadata { /** * An external identifier for the user who is associated with the request. * * This should be a uuid, hash value, or other opaque identifier. Anthropic may use * this id to help detect abuse. Do not include any identifying information such as * name, email address, or phone number. */ user_id?: string | null; } export interface BetaOutputConfig { /** * All possible effort levels. */ effort?: 'low' | 'medium' | 'high' | null; } export interface BetaPlainTextSource { data: string; media_type: 'text/plain'; type: 'text'; } export type BetaRawContentBlockDelta = | BetaTextDelta | BetaInputJSONDelta | BetaCitationsDelta | BetaThinkingDelta | BetaSignatureDelta; export interface BetaRawContentBlockDeltaEvent { delta: BetaRawContentBlockDelta; index: number; type: 'content_block_delta'; } export interface BetaRawContentBlockStartEvent { /** * Response model for a file uploaded to the container. */ content_block: | BetaTextBlock | BetaThinkingBlock | BetaRedactedThinkingBlock | BetaToolUseBlock | BetaServerToolUseBlock | BetaWebSearchToolResultBlock | BetaWebFetchToolResultBlock | BetaCodeExecutionToolResultBlock | BetaBashCodeExecutionToolResultBlock | BetaTextEditorCodeExecutionToolResultBlock | BetaToolSearchToolResultBlock | BetaMCPToolUseBlock | BetaMCPToolResultBlock | BetaContainerUploadBlock; index: number; type: 'content_block_start'; } export interface BetaRawContentBlockStopEvent { index: number; type: 'content_block_stop'; } export interface BetaRawMessageDeltaEvent { /** * Information about context management strategies applied during the request */ context_management: BetaContextManagementResponse | null; delta: BetaRawMessageDeltaEvent.Delta; type: 'message_delta'; /** * Billing and rate-limit usage. * * Anthropic's API bills and rate-limits by token counts, as tokens represent the * underlying cost to our systems. * * Under the hood, the API transforms requests into a format suitable for the * model. The model's output then goes through a parsing stage before becoming an * API response. As a result, the token counts in `usage` will not match one-to-one * with the exact visible content of an API request or response. * * For example, `output_tokens` will be non-zero, even for an empty string response * from Claude. * * Total input tokens in a request is the summation of `input_tokens`, * `cache_creation_input_tokens`, and `cache_read_input_tokens`. */ usage: BetaMessageDeltaUsage; } export namespace BetaRawMessageDeltaEvent { export interface Delta { /** * Information about the container used in the request (for the code execution * tool) */ container: MessagesMessagesAPI.BetaContainer | null; stop_reason: MessagesMessagesAPI.BetaStopReason | null; stop_sequence: string | null; } } export interface BetaRawMessageStartEvent { message: BetaMessage; type: 'message_start'; } export interface BetaRawMessageStopEvent { type: 'message_stop'; } export type BetaRawMessageStreamEvent = | BetaRawMessageStartEvent | BetaRawMessageDeltaEvent | BetaRawMessageStopEvent | BetaRawContentBlockStartEvent | BetaRawContentBlockDeltaEvent | BetaRawContentBlockStopEvent; export interface BetaRedactedThinkingBlock { data: string; type: 'redacted_thinking'; } export interface BetaRedactedThinkingBlockParam { data: string; type: 'redacted_thinking'; } export interface BetaRequestDocumentBlock { source: | BetaBase64PDFSource | BetaPlainTextSource | BetaContentBlockSource | BetaURLPDFSource | BetaFileDocumentSource; type: 'document'; /** * Create a cache control breakpoint at this content block. */ cache_control?: BetaCacheControlEphemeral | null; citations?: BetaCitationsConfigParam | null; context?: string | null; title?: string | null; } export interface BetaRequestMCPServerToolConfiguration { allowed_tools?: Array<string> | null; enabled?: boolean | null; } export interface BetaRequestMCPServerURLDefinition { name: string; type: 'url'; url: string; authorization_token?: string | null; tool_configuration?: BetaRequestMCPServerToolConfiguration | null; } export interface BetaRequestMCPToolResultBlockParam { tool_use_id: string; type: 'mcp_tool_result'; /** * Create a cache control breakpoint at this content block. */ cache_control?: BetaCacheControlEphemeral | null; content?: string | Array<BetaTextBlockParam>; is_error?: boolean; } export interface BetaSearchResultBlockParam { content: Array<BetaTextBlockParam>; source: string; title: string; type: 'search_result'; /** * Create a cache control breakpoint at this content block. */ cache_control?: BetaCacheControlEphemeral | null; citations?: BetaCitationsConfigParam; } /** * Tool invocation generated by a server-side tool. */ export interface BetaServerToolCaller { tool_id: string; type: 'code_execution_20250825'; } export interface BetaServerToolUsage { /** * The number of web fetch tool requests. */ web_fetch_requests: number; /** * The number of web search tool requests. */ web_search_requests: number; } export interface BetaServerToolUseBlock { id: string; /** * Tool invocation directly from the model. */ caller: BetaDirectCaller | BetaServerToolCaller; input: { [key: string]: unknown }; name: | 'web_search' | 'web_fetch' | 'code_execution' | 'bash_code_execution' | 'text_editor_code_execution' | 'tool_search_tool_regex' | 'tool_search_tool_bm25'; type: 'server_tool_use'; } export interface BetaServerToolUseBlockParam { id: string; input: unknown; name: | 'web_search' | 'web_fetch' | 'code_execution' | 'bash_code_execution' | 'text_editor_code_execution' | 'tool_search_tool_regex' | 'tool_search_tool_bm25'; type: 'server_tool_use'; /** * Create a cache control breakpoint at this content block. */ cache_control?: BetaCacheControlEphemeral | null; /** * Tool invocation directly from the model. */ caller?: BetaDirectCaller | BetaServerToolCaller; } export interface BetaSignatureDelta { signature: string; type: 'signature_delta'; } /** * A skill that was loaded in a container (response model). */ export interface BetaSkill { /** * Skill ID */ skill_id: string; /** * Type of skill - either 'anthropic' (built-in) or 'custom' (user-defined) */ type: 'anthropic' | 'custom'; /** * Skill version or 'latest' for most recent version */ version: string; } /** * Specification for a skill to be loaded in a container (request model). */ export interface BetaSkillParams { /** * Skill ID */ skill_id: string; /** * Type of skill - either 'anthropic' (built-in) or 'custom' (user-defined) */ type: 'anthropic' | 'custom'; /** * Skill version or 'latest' for most recent version */ version?: string; } export type BetaStopReason = | 'end_turn' | 'max_tokens' | 'stop_sequence' | 'tool_use' | 'pause_turn' | 'refusal' | 'model_context_window_exceeded'; export interface BetaTextBlock { /** * Citations supporting the text block. * * The type of citation returned will depend on the type of document being cited. * Citing a PDF results in `page_location`, plain text results in `char_location`, * and content document results in `content_block_location`. */ citations: Array<BetaTextCitation> | null; text: string; type: 'text'; } export interface BetaTextBlockParam { text: string; type: 'text'; /** * Create a cache control breakpoint at this content block. */ cache_control?: BetaCacheControlEphemeral | null; citations?: Array<BetaTextCitationParam> | null; } export type BetaTextCitation = | BetaCitationCharLocation | BetaCitationPageLocation | BetaCitationContentBlockLocation | BetaCitationsWebSearchResultLocation | BetaCitationSearchResultLocation; export type BetaTextCitationParam = | BetaCitationCharLocationParam | BetaCitationPageLocationParam | BetaCitationContentBlockLocationParam | BetaCitationWebSearchResultLocationParam | BetaCitationSearchResultLocationParam; export interface BetaTextDelta { text: string; type: 'text_delta'; } export interface BetaTextEditorCodeExecutionCreateResultBlock { is_file_update: boolean; type: 'text_editor_code_execution_create_result'; } export interface BetaTextEditorCodeExecutionCreateResultBlockParam { is_file_update: boolean; type: 'text_editor_code_execution_create_result'; } export interface BetaTextEditorCodeExecutionStrReplaceResultBlock { lines: Array<string> | null; new_lines: number | null; new_start: number | null; old_lines: number | null; old_start: number | null; type: 'text_editor_code_execution_str_replace_result'; } export interface BetaTextEditorCodeExecutionStrReplaceResultBlockParam { type: 'text_editor_code_execution_str_replace_result'; lines?: Array<string> | null; new_lines?: number | null; new_start?: number | null; old_lines?: number | null; old_start?: number | null; } export interface BetaTextEditorCodeExecutionToolResultBlock { content: | BetaTextEditorCodeExecutionToolResultError | BetaTextEditorCodeExecutionViewResultBlock | BetaTextEditorCodeExecutionCreateResultBlock | BetaTextEditorCodeExecutionStrReplaceResultBlock; tool_use_id: string; type: 'text_editor_code_execution_tool_result'; } export interface BetaTextEditorCodeExecutionToolResultBlockParam { content: | BetaTextEditorCodeExecutionToolResultErrorParam | BetaTextEditorCodeExecutionViewResultBlockParam | BetaTextEditorCodeExecutionCreateResultBlockParam | BetaTextEditorCodeExecutionStrReplaceResultBlockParam; tool_use_id: string; type: 'text_editor_code_execution_tool_result'; /** * Create a cache control breakpoint at this content block. */ cache_control?: BetaCacheControlEphemeral | null; } export interface BetaTextEditorCodeExecutionToolResultError { error_code: | 'invalid_tool_input' | 'unavailable' | 'too_many_requests' | 'execution_time_exceeded' | 'file_not_found'; error_message: string | null; type: 'text_editor_code_execution_tool_result_error'; } export interface BetaTextEditorCodeExecutionToolResultErrorParam { error_code: | 'invalid_tool_input' | 'unavailable' | 'too_many_requests' | 'execution_time_exceeded' | 'file_not_found'; type: 'text_editor_code_execution_tool_result_error'; error_message?: string | null; } export interface BetaTextEditorCodeExecutionViewResultBlock { content: string; file_type: 'text' | 'image' | 'pdf'; num_lines: number | null; start_line: number | null; total_lines: number | null; type: 'text_editor_code_execution_view_result'; } export interface BetaTextEditorCodeExecutionViewResultBlockParam { content: string; file_type: 'text' | 'image' | 'pdf'; type: 'text_editor_code_execution_view_result'; num_lines?: number | null; start_line?: number | null; total_lines?: number | null; } export interface BetaThinkingBlock { signature: string; thinking: string; type: 'thinking'; } export interface BetaThinkingBlockParam { signature: string; thinking: string; type: 'thinking'; } export interface BetaThinkingConfigDisabled { type: 'disabled'; } export interface BetaThinkingConfigEnabled { /** * Determines how many tokens Claude can use for its internal reasoning process. * Larger budgets can enable more thorough analysis for complex problems, improving * response quality. * * Must be ≥1024 and less than `max_tokens`. * * See * [extended thinking](https://docs.claude.com/en/docs/build-with-claude/extended-thinking) * for details. */ budget_tokens: number; type: 'enabled'; } /** * Configuration for enabling Claude's extended thinking. * * When enabled, responses include `thinking` content blocks showing Claude's * thinking process before the final answer. Requires a minimum budget of 1,024 * tokens and counts towards your `max_tokens` limit. * * See * [extended thinking](https://docs.claude.com/en/docs/build-with-claude/extended-thinking) * for details. */ export type BetaThinkingConfigParam = BetaThinkingConfigEnabled | BetaThinkingConfigDisabled; export interface BetaThinkingDelta { thinking: string; type: 'thinking_delta'; } export interface BetaThinkingTurns { type: 'thinking_turns'; value: number; } export interface BetaTool { /** * [JSON schema](https://json-schema.org/draft/2020-12) for this tool's input. * * This defines the shape of the `input` that your tool accepts and that the model * will produce. */ input_schema: BetaTool.InputSchema; /** * Name of the tool. * * This is how the tool will be called by the model and in `tool_use` blocks. */ name: string; allowed_callers?: Array<'direct' | 'code_execution_20250825'>; /** * Create a cache control breakpoint at this content block. */ cache_control?: BetaCacheControlEphemeral | null; /** * If true, tool will not be included in initial system prompt. Only loaded when * returned via tool_reference from tool search. */ defer_loading?: boolean; /** * Description of what this tool does. * * Tool descriptions should be as detailed as possible. The more information that * the model has about what the tool is and how to use it, the better it will * perform. You can use natural language descriptions to reinforce important * aspects of the tool input JSON schema. */ description?: string; input_examples?: Array<{ [key: string]: unknown }>; strict?: boolean; type?: 'custom' | null; } export namespace BetaTool { /** * [JSON schema](https://json-schema.org/draft/2020-12) for this tool's input. * * This defines the shape of the `input` that your tool accepts and that the model * will produce. */ export interface InputSchema { type: 'object'; properties?: unknown | null; required?: string[] | readonly string[] | null; [k: string]: unknown; } } export interface BetaToolBash20241022 { /** * Name of the tool. * * This is how the tool will be called by the model and in `tool_use` blocks. */ name: 'bash'; type: 'bash_20241022'; allowed_callers?: Array<'direct' | 'code_execution_20250825'>; /** * Create a cache control breakpoint at this content block. */ cache_control?: BetaCacheControlEphemeral | null; /** * If true, tool will not be included in initial system prompt. Only loaded when * returned via tool_reference from tool search. */ defer_loading?: boolean; input_examples?: Array<{ [key: string]: unknown }>; strict?: boolean; } export interface BetaToolBash20250124 { /** * Name of the tool. * * This is how the tool will be called by the model and in `tool_use` blocks. */ name: 'bash'; type: 'bash_20250124'; allowed_callers?: Array<'direct' | 'code_execution_20250825'>; /** * Create a cache control breakpoint at this content block. */ cache_control?: BetaCacheControlEphemeral | null; /** * If true, tool will not be included in initial system prompt. Only loaded when * returned via tool_reference from tool search. */ defer_loading?: boolean; input_examples?: Array<{ [key: string]: unknown }>; strict?: boolean; } /** * How the model should use the provided tools. The model can use a specific tool, * any available tool, decide by itself, or not use tools at all. */ export type BetaToolChoice = BetaToolChoiceAuto | BetaToolChoiceAny | BetaToolChoiceTool | BetaToolChoiceNone; /** * The model will use any available tools. */ export interface BetaToolChoiceAny { type: 'any'; /** * Whether to disable parallel tool use. * * Defaults to `false`. If set to `true`, the model will output exactly one tool * use. */ disable_parallel_tool_use?: boolean; } /** * The model will automatically decide whether to use tools. */ export interface BetaToolChoiceAuto { type: 'auto'; /** * Whether to disable parallel tool use. * * Defaults to `false`. If set to `true`, the model will output at most one tool * use. */ disable_parallel_tool_use?: boolean; } /** * The model will not be allowed to use tools. */ export interface BetaToolChoiceNone { type: 'none'; } /** * The model will use the specified tool with `tool_choice.name`. */ export interface BetaToolChoiceTool { /** * The name of the tool to use. */ name: string; type: 'tool'; /** * Whether to disable parallel tool use. * * Defaults to `false`. If set to `true`, the model will output exactly one tool * use. */ disable_parallel_tool_use?: boolean; } export interface BetaToolComputerUse20241022 { /** * The height of the display in pixels. */ display_height_px: number; /** * The width of the display in pixels. */ display_width_px: number; /** * Name of the tool. * * This is how the tool will be called by the model and in `tool_use` blocks. */ name: 'computer'; type: 'computer_20241022'; allowed_callers?: Array<'direct' | 'code_execution_20250825'>; /** * Create a cache control breakpoint at this content block. */ cache_control?: BetaCacheControlEphemeral | null; /** * If true, tool will not be included in initial system prompt. Only loaded when * returned via tool_reference from tool search. */ defer_loading?: boolean; /** * The X11 display number (e.g. 0, 1) for the display. */ display_number?: number | null; input_examples?: Array<{ [key: string]: unknown }>; strict?: boolean; } export interface BetaToolComputerUse20250124 { /** * The height of the display in pixels. */ display_height_px: number; /** * The width of the display in pixels. */ display_width_px: number; /** * Name of the tool. * * This is how the tool will be called by the model and in `tool_use` blocks. */ name: 'computer'; type: 'computer_20250124'; allowed_callers?: Array<'direct' | 'code_execution_20250825'>; /** * Create a cache control breakpoint at this content block. */ cache_control?: BetaCacheControlEphemeral | null; /** * If true, tool will not be included in initial system prompt. Onl