@anthropic-ai/sdk
Version:
The official TypeScript library for the Anthropic API
2,161 lines (1,688 loc) • 99.9 kB
text/typescript
// 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