Claude Platform Docs

Messages

Create a Message
messages.create(**kwargs) -> Message
POST/v1/messages

Send a structured list of input messages with text and/or image content, and the model will generate the next message in the conversation.

Count tokens in a Message
messages.count_tokens(**kwargs) -> MessageTokensCount
POST/v1/messages/count_tokens

Count the number of tokens in a Message.

Models
class Base64ImageSource { type, data, media_type }
type: :base64
data: String
formatbyte
media_type: :"image/jpeg" | :"image/png" | :"image/gif" | :"image/webp"
One of the following:
:"image/jpeg"
:"image/png"
:"image/gif"
:"image/webp"
class Base64PDFSource { type, data, media_type }
type: :base64
data: String
formatbyte
media_type: :"application/pdf"
class BashCodeExecutionOutputBlock { type, file_id }
type: :bash_code_execution_output
file_id: String
class BashCodeExecutionOutputBlockParam { type, file_id }
type: :bash_code_execution_output
file_id: String
class BashCodeExecutionResultBlock { type, content, return_code, 2 more }
type: :bash_code_execution_result
content: Array[BashCodeExecutionOutputBlock { type, file_id }]
type: :bash_code_execution_output
file_id: String
return_code: Integer
stderr: String
stdout: String
class BashCodeExecutionResultBlockParam { type, content, return_code, 2 more }
type: :bash_code_execution_result
content: Array[BashCodeExecutionOutputBlockParam { type, file_id }]
type: :bash_code_execution_output
file_id: String
return_code: Integer
stderr: String
stdout: String
class BashCodeExecutionToolResultBlock { type, content, tool_use_id }
class BashCodeExecutionToolResultBlockParam { type, content, tool_use_id, cache_control }
class BashCodeExecutionToolResultError { type, error_code }
type: :bash_code_execution_tool_result_error
One of the following:
:invalid_tool_input
:unavailable
:too_many_requests
:execution_time_exceeded
:output_file_too_large
BashCodeExecutionToolResultErrorCode = :invalid_tool_input | :unavailable | :too_many_requests | 2 more
One of the following:
:invalid_tool_input
:unavailable
:too_many_requests
:execution_time_exceeded
:output_file_too_large
class BashCodeExecutionToolResultErrorParam { type, error_code }
type: :bash_code_execution_tool_result_error
One of the following:
:invalid_tool_input
:unavailable
:too_many_requests
:execution_time_exceeded
:output_file_too_large
class BrowserCloseTabConfig { defer_loading, enabled }

close_tab's config overrides.

defer_loading: bool

Defer loading for this member. Must resolve to the same value on every enabled member of the toolset.

enabled: bool

Whether this member is offered to the model. Default is per member, per the toolset's documentation. A member whose enabled resolves false is withheld from the served schema.

class BrowserDoubleClickConfig { defer_loading, enabled }

double_click's config overrides.

defer_loading: bool

Defer loading for this member. Must resolve to the same value on every enabled member of the toolset.

enabled: bool

Whether this member is offered to the model. Default is per member, per the toolset's documentation. A member whose enabled resolves false is withheld from the served schema.

class BrowserFileUploadConfig { defer_loading, enabled }

file_upload's config overrides.

defer_loading: bool

Defer loading for this member. Must resolve to the same value on every enabled member of the toolset.

enabled: bool

Whether this member is offered to the model. Default is per member, per the toolset's documentation. A member whose enabled resolves false is withheld from the served schema.

class BrowserFindConfig { defer_loading, enabled }

find's config overrides.

defer_loading: bool

Defer loading for this member. Must resolve to the same value on every enabled member of the toolset.

enabled: bool

Whether this member is offered to the model. Default is per member, per the toolset's documentation. A member whose enabled resolves false is withheld from the served schema.

class BrowserFormInputConfig { defer_loading, enabled }

form_input's config overrides.

defer_loading: bool

Defer loading for this member. Must resolve to the same value on every enabled member of the toolset.

enabled: bool

Whether this member is offered to the model. Default is per member, per the toolset's documentation. A member whose enabled resolves false is withheld from the served schema.

class BrowserGetPageTextConfig { defer_loading, enabled }

get_page_text's config overrides.

defer_loading: bool

Defer loading for this member. Must resolve to the same value on every enabled member of the toolset.

enabled: bool

Whether this member is offered to the model. Default is per member, per the toolset's documentation. A member whose enabled resolves false is withheld from the served schema.

class BrowserHoldKeyConfig { defer_loading, enabled }

hold_key's config overrides.

defer_loading: bool

Defer loading for this member. Must resolve to the same value on every enabled member of the toolset.

enabled: bool

Whether this member is offered to the model. Default is per member, per the toolset's documentation. A member whose enabled resolves false is withheld from the served schema.

class BrowserHoverConfig { defer_loading, enabled }

hover's config overrides.

defer_loading: bool

Defer loading for this member. Must resolve to the same value on every enabled member of the toolset.

enabled: bool

Whether this member is offered to the model. Default is per member, per the toolset's documentation. A member whose enabled resolves false is withheld from the served schema.

class BrowserJavascriptExecConfig { defer_loading, enabled }

javascript_exec's config overrides.

defer_loading: bool

Defer loading for this member. Must resolve to the same value on every enabled member of the toolset.

enabled: bool

Whether this member is offered to the model. Default is per member, per the toolset's documentation. A member whose enabled resolves false is withheld from the served schema.

class BrowserKeyConfig { defer_loading, enabled }

key's config overrides.

defer_loading: bool

Defer loading for this member. Must resolve to the same value on every enabled member of the toolset.

enabled: bool

Whether this member is offered to the model. Default is per member, per the toolset's documentation. A member whose enabled resolves false is withheld from the served schema.

class BrowserLeftClickConfig { defer_loading, enabled }

left_click's config overrides.

defer_loading: bool

Defer loading for this member. Must resolve to the same value on every enabled member of the toolset.

enabled: bool

Whether this member is offered to the model. Default is per member, per the toolset's documentation. A member whose enabled resolves false is withheld from the served schema.

class BrowserLeftClickDragConfig { defer_loading, enabled }

left_click_drag's config overrides.

defer_loading: bool

Defer loading for this member. Must resolve to the same value on every enabled member of the toolset.

enabled: bool

Whether this member is offered to the model. Default is per member, per the toolset's documentation. A member whose enabled resolves false is withheld from the served schema.

class BrowserLeftMouseDownConfig { defer_loading, enabled }

left_mouse_down's config overrides.

defer_loading: bool

Defer loading for this member. Must resolve to the same value on every enabled member of the toolset.

enabled: bool

Whether this member is offered to the model. Default is per member, per the toolset's documentation. A member whose enabled resolves false is withheld from the served schema.

class BrowserLeftMouseUpConfig { defer_loading, enabled }

left_mouse_up's config overrides.

defer_loading: bool

Defer loading for this member. Must resolve to the same value on every enabled member of the toolset.

enabled: bool

Whether this member is offered to the model. Default is per member, per the toolset's documentation. A member whose enabled resolves false is withheld from the served schema.

class BrowserListTabsConfig { defer_loading, enabled }

list_tabs's config overrides.

defer_loading: bool

Defer loading for this member. Must resolve to the same value on every enabled member of the toolset.

enabled: bool

Whether this member is offered to the model. Default is per member, per the toolset's documentation. A member whose enabled resolves false is withheld from the served schema.

class BrowserMiddleClickConfig { defer_loading, enabled }

middle_click's config overrides.

defer_loading: bool

Defer loading for this member. Must resolve to the same value on every enabled member of the toolset.

enabled: bool

Whether this member is offered to the model. Default is per member, per the toolset's documentation. A member whose enabled resolves false is withheld from the served schema.

class BrowserMouseMoveConfig { defer_loading, enabled }

mouse_move's config overrides.

defer_loading: bool

Defer loading for this member. Must resolve to the same value on every enabled member of the toolset.

enabled: bool

Whether this member is offered to the model. Default is per member, per the toolset's documentation. A member whose enabled resolves false is withheld from the served schema.

class BrowserNavigateConfig { defer_loading, enabled }

navigate's config overrides.

defer_loading: bool

Defer loading for this member. Must resolve to the same value on every enabled member of the toolset.

enabled: bool

Whether this member is offered to the model. Default is per member, per the toolset's documentation. A member whose enabled resolves false is withheld from the served schema.

class BrowserNewTabConfig { defer_loading, enabled }

new_tab's config overrides.

defer_loading: bool

Defer loading for this member. Must resolve to the same value on every enabled member of the toolset.

enabled: bool

Whether this member is offered to the model. Default is per member, per the toolset's documentation. A member whose enabled resolves false is withheld from the served schema.

class BrowserReadConsoleConfig { defer_loading, enabled }

read_console's config overrides.

defer_loading: bool

Defer loading for this member. Must resolve to the same value on every enabled member of the toolset.

enabled: bool

Whether this member is offered to the model. Default is per member, per the toolset's documentation. A member whose enabled resolves false is withheld from the served schema.

class BrowserReadNetworkConfig { defer_loading, enabled }

read_network's config overrides.

defer_loading: bool

Defer loading for this member. Must resolve to the same value on every enabled member of the toolset.

enabled: bool

Whether this member is offered to the model. Default is per member, per the toolset's documentation. A member whose enabled resolves false is withheld from the served schema.

class BrowserReadPageConfig { defer_loading, enabled }

read_page's config overrides.

defer_loading: bool

Defer loading for this member. Must resolve to the same value on every enabled member of the toolset.

enabled: bool

Whether this member is offered to the model. Default is per member, per the toolset's documentation. A member whose enabled resolves false is withheld from the served schema.

class BrowserRightClickConfig { defer_loading, enabled }

right_click's config overrides.

defer_loading: bool

Defer loading for this member. Must resolve to the same value on every enabled member of the toolset.

enabled: bool

Whether this member is offered to the model. Default is per member, per the toolset's documentation. A member whose enabled resolves false is withheld from the served schema.

class BrowserScreenshotConfig { defer_loading, enabled }

screenshot's config overrides.

defer_loading: bool

Defer loading for this member. Must resolve to the same value on every enabled member of the toolset.

enabled: bool

Whether this member is offered to the model. Default is per member, per the toolset's documentation. A member whose enabled resolves false is withheld from the served schema.

class BrowserScrollConfig { defer_loading, enabled }

scroll's config overrides.

defer_loading: bool

Defer loading for this member. Must resolve to the same value on every enabled member of the toolset.

enabled: bool

Whether this member is offered to the model. Default is per member, per the toolset's documentation. A member whose enabled resolves false is withheld from the served schema.

class BrowserScrollToConfig { defer_loading, enabled }

scroll_to's config overrides.

defer_loading: bool

Defer loading for this member. Must resolve to the same value on every enabled member of the toolset.

enabled: bool

Whether this member is offered to the model. Default is per member, per the toolset's documentation. A member whose enabled resolves false is withheld from the served schema.

class BrowserStateBlockParam { type, tabs, cache_control, state_changes }

The caller's browser state after a browser toolset member call — the full inventory of open tabs, which tab is active, and any side effects (tabs opened, download state changes) the call produced.

At most one per tool_result, only on a non-error result answering a browser toolset member tool_use. The server renders the model-visible text from it; the model never sees the raw fields.

BrowserStateChange = BrowserStateChangeTabOpened { type, tab_id } | BrowserStateChangeDownloadStarted { type, download_id, url } | BrowserStateChangeDownloadCompleted { type, download_id, url, 2 more } | BrowserStateChangeDownloadFailed { type, download_id, url, error }
One of the following:
class BrowserStateChangeDownloadCompleted { type, download_id, url, 2 more }

A file download that finished during this call, reported with the same download_id as its download_started — or without a prior download_started, when the download finished during the call that started it (at most one state change per download_id per result).

type: :download_completed
download_id: String

The caller-assigned identifier for this download, stable across the state changes reporting it.

maxLength4096
minLength1
pattern^[^\x00-\x1f\x7f-\x9f\u2028\u2029]*$
url: String

The final post-redirect URL the download was served from.

maxLength4096
pattern^[^\x00-\x1f\x7f-\x9f\u2028\u2029]*$
path: String

Where the executor saved the file, on the executor's filesystem. Only included when another tool in the same environment can read the file at that path.

pattern^[^\x00-\x1f\x7f-\x9f\u2028\u2029]*$
maxLength4096
size_bytes: Integer

The completed download's size.

minimum0
class BrowserStateChangeDownloadFailed { type, download_id, url, error }

A file download that failed — or was cancelled — during this call.

type: :download_failed
download_id: String

The caller-assigned identifier for this download, stable across the state changes reporting it.

maxLength4096
minLength1
pattern^[^\x00-\x1f\x7f-\x9f\u2028\u2029]*$
url: String

The final post-redirect URL the download was served from.

maxLength4096
pattern^[^\x00-\x1f\x7f-\x9f\u2028\u2029]*$
error: String

The failure or cancellation detail, when known.

pattern^[^\x00-\x1f\x7f-\x9f\u2028\u2029]*$
maxLength4096
class BrowserStateChangeDownloadStarted { type, download_id, url }

A file download that started during this call.

type: :download_started
download_id: String

The caller-assigned identifier for this download, stable across the state changes reporting it.

maxLength4096
minLength1
pattern^[^\x00-\x1f\x7f-\x9f\u2028\u2029]*$
url: String

The final post-redirect URL the download was served from.

maxLength4096
pattern^[^\x00-\x1f\x7f-\x9f\u2028\u2029]*$
class BrowserStateChangeTabOpened { type, tab_id }

A tab this call's execution opened that remains open at its end — the creation delta of the tabs inventory, not an event log.

Carries only the tab_id; the tab's title and url live on its tabs entry, which must include the same tab_id. A tab opened during a failed call gets no deferred tab_opened; it simply appears in the next result's tabs inventory.

type: :tab_opened
tab_id: String

The tab_id of the opened tab, present in tabs.

maxLength4096
minLength1
pattern^[^\x00-\x1f\x7f-\x9f\u2028\u2029]*$
class BrowserStateTabEntry { tab_id, title, url, active }

One open browser tab reported in a browser_state block's tabs inventory.

tab_id is the caller-assigned identifier for the tab; title and url describe the page the tab is currently showing and may be empty strings (a blank tab legitimately has both empty). active marks the tab that is active after this call; whenever tabs is non-empty, exactly one entry is marked.

tab_id: String

The caller-assigned identifier for this tab, unique within the inventory.

maxLength4096
minLength1
pattern^[^\x00-\x1f\x7f-\x9f\u2028\u2029]*$
title: String

The title of the page the tab is showing. May be empty.

maxLength4096
pattern^[^\x00-\x1f\x7f-\x9f\u2028\u2029]*$
url: String

The URL of the page the tab is showing. May be empty.

maxLength4096
pattern^[^\x00-\x1f\x7f-\x9f\u2028\u2029]*$
active: bool

Whether this tab is the active tab after this call. Whenever tabs is non-empty, exactly one entry is marked active: true.

class BrowserSwitchTabConfig { defer_loading, enabled }

switch_tab's config overrides.

defer_loading: bool

Defer loading for this member. Must resolve to the same value on every enabled member of the toolset.

enabled: bool

Whether this member is offered to the model. Default is per member, per the toolset's documentation. A member whose enabled resolves false is withheld from the served schema.

class BrowserToolset20260801 { type, cache_control, configs }

The browser toolset: a single tools[] entry (carrying no name) that declares the browser tool family. The model is served the family's tool with any members disabled via configs removed from its schema.

class BrowserToolsetConfigs { type, close_tab, double_click, 28 more }

Per-member configuration for browser_toolset_20260801: one optional field per member tool, keyed by the member name — the same name the member's tool_use blocks carry. Every member is an accepted key, and a member's defaults apply wherever its key is absent. Unknown keys are rejected: the field set is this toolset version's complete member set.

class BrowserTripleClickConfig { defer_loading, enabled }

triple_click's config overrides.

defer_loading: bool

Defer loading for this member. Must resolve to the same value on every enabled member of the toolset.

enabled: bool

Whether this member is offered to the model. Default is per member, per the toolset's documentation. A member whose enabled resolves false is withheld from the served schema.

class BrowserTypeConfig { defer_loading, enabled }

type's config overrides.

defer_loading: bool

Defer loading for this member. Must resolve to the same value on every enabled member of the toolset.

enabled: bool

Whether this member is offered to the model. Default is per member, per the toolset's documentation. A member whose enabled resolves false is withheld from the served schema.

class BrowserWaitConfig { defer_loading, enabled }

wait's config overrides.

defer_loading: bool

Defer loading for this member. Must resolve to the same value on every enabled member of the toolset.

enabled: bool

Whether this member is offered to the model. Default is per member, per the toolset's documentation. A member whose enabled resolves false is withheld from the served schema.

class BrowserZoomConfig { defer_loading, enabled }

zoom's config overrides.

defer_loading: bool

Defer loading for this member. Must resolve to the same value on every enabled member of the toolset.

enabled: bool

Whether this member is offered to the model. Default is per member, per the toolset's documentation. A member whose enabled resolves false is withheld from the served schema.

class CacheControlEphemeral { type, ttl }
type: :ephemeral
ttl: :"5m" | :"1h"

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. See prompt caching pricing for details.

One of the following:
:"5m"
:"1h"
class CacheCreation { ephemeral_1h_input_tokens, ephemeral_5m_input_tokens }
ephemeral_1h_input_tokens: Integer

The number of input tokens used to create the 1 hour cache entry.

minimum0
ephemeral_5m_input_tokens: Integer

The number of input tokens used to create the 5 minute cache entry.

minimum0
class CitationCharLocation { type, cited_text, document_index, 4 more }
type: :char_location
cited_text: String
document_index: Integer
minimum0
document_title: String
end_char_index: Integer
file_id: String
start_char_index: Integer
minimum0
class CitationCharLocationParam { type, cited_text, document_index, 3 more }
type: :char_location
cited_text: String
document_index: Integer
minimum0
document_title: String
maxLength500
minLength1
end_char_index: Integer
start_char_index: Integer
minimum0
class CitationContentBlockLocation { type, cited_text, document_index, 4 more }
type: :content_block_location
cited_text: String

The full text of the cited block range, concatenated.

Always equals the contents of content[start_block_index:end_block_index] joined together. The text block is the minimal citable unit; this field is never a substring of a single block. Not counted toward output tokens, and not counted toward input tokens when sent back in subsequent turns.

document_index: Integer
minimum0
document_title: String
end_block_index: Integer

Exclusive 0-based end index of the cited block range in the source's content array.

Always greater than start_block_index; a single-block citation has end_block_index = start_block_index + 1.

file_id: String
start_block_index: Integer

0-based index of the first cited block in the source's content array.

minimum0
class CitationContentBlockLocationParam { type, cited_text, document_index, 3 more }
type: :content_block_location
cited_text: String

The full text of the cited block range, concatenated.

Always equals the contents of content[start_block_index:end_block_index] joined together. The text block is the minimal citable unit; this field is never a substring of a single block. Not counted toward output tokens, and not counted toward input tokens when sent back in subsequent turns.

document_index: Integer
minimum0
document_title: String
maxLength500
minLength1
end_block_index: Integer

Exclusive 0-based end index of the cited block range in the source's content array.

Always greater than start_block_index; a single-block citation has end_block_index = start_block_index + 1.

start_block_index: Integer

0-based index of the first cited block in the source's content array.

minimum0
class CitationPageLocation { type, cited_text, document_index, 4 more }
type: :page_location
cited_text: String
document_index: Integer
minimum0
document_title: String
end_page_number: Integer
file_id: String
start_page_number: Integer
minimum1
class CitationPageLocationParam { type, cited_text, document_index, 3 more }
type: :page_location
cited_text: String
document_index: Integer
minimum0
document_title: String
maxLength500
minLength1
end_page_number: Integer
start_page_number: Integer
minimum1
class CitationSearchResultLocationParam { type, cited_text, end_block_index, 4 more }
type: :search_result_location
cited_text: String

The full text of the cited block range, concatenated.

Always equals the contents of content[start_block_index:end_block_index] joined together. The text block is the minimal citable unit; this field is never a substring of a single block. Not counted toward output tokens, and not counted toward input tokens when sent back in subsequent turns.

end_block_index: Integer

Exclusive 0-based end index of the cited block range in the source's content array.

Always greater than start_block_index; a single-block citation has end_block_index = start_block_index + 1.

search_result_index: Integer

0-based index of the cited search result among all search_result content blocks in the request, in the order they appear across messages and tool results.

Counted separately from document_index; server-side web search results are not included in this count.

minimum0
source: String
start_block_index: Integer

0-based index of the first cited block in the source's content array.

minimum0
title: String
class CitationWebSearchResultLocationParam { type, cited_text, encrypted_index, 2 more }
type: :web_search_result_location
cited_text: String
encrypted_index: String
title: String
maxLength512
minLength1
url: String
minLength1
class CitationsConfig { enabled }
enabled: bool
class CitationsConfigParam { enabled }
enabled: bool
class CitationsDelta { type, citation }
class CitationsSearchResultLocation { type, cited_text, end_block_index, 4 more }
type: :search_result_location
cited_text: String

The full text of the cited block range, concatenated.

Always equals the contents of content[start_block_index:end_block_index] joined together. The text block is the minimal citable unit; this field is never a substring of a single block. Not counted toward output tokens, and not counted toward input tokens when sent back in subsequent turns.

end_block_index: Integer

Exclusive 0-based end index of the cited block range in the source's content array.

Always greater than start_block_index; a single-block citation has end_block_index = start_block_index + 1.

search_result_index: Integer

0-based index of the cited search result among all search_result content blocks in the request, in the order they appear across messages and tool results.

Counted separately from document_index; server-side web search results are not included in this count.

minimum0
source: String
start_block_index: Integer

0-based index of the first cited block in the source's content array.

minimum0
title: String
class CitationsWebSearchResultLocation { type, cited_text, encrypted_index, 2 more }
type: :web_search_result_location
cited_text: String
encrypted_index: String
title: String
maxLength512
url: String
class CodeExecutionOutputBlock { type, file_id }
type: :code_execution_output
file_id: String
class CodeExecutionOutputBlockParam { type, file_id }
type: :code_execution_output
file_id: String
class CodeExecutionResultBlock { type, content, return_code, 2 more }
type: :code_execution_result
content: Array[CodeExecutionOutputBlock { type, file_id }]
type: :code_execution_output
file_id: String
return_code: Integer
stderr: String
stdout: String
class CodeExecutionResultBlockParam { type, content, return_code, 2 more }
type: :code_execution_result
content: Array[CodeExecutionOutputBlockParam { type, file_id }]
type: :code_execution_output
file_id: String
return_code: Integer
stderr: String
stdout: String
class CodeExecutionTool20250522 { type, name, allowed_callers, 3 more }
class CodeExecutionTool20250825 { type, name, allowed_callers, 3 more }
class CodeExecutionTool20260120 { type, name, allowed_callers, 3 more }

Code execution tool with REPL state persistence (daemon mode + gVisor checkpoint).

class CodeExecutionTool20260521 { type, name, allowed_callers, 3 more }

Code execution tool with REPL state persistence.

class CodeExecutionToolResultBlock { type, content, tool_use_id }
type: :code_execution_tool_result
One of the following:
tool_use_id: String
pattern^srvtoolu_[a-zA-Z0-9_]+$
CodeExecutionToolResultBlockContent = CodeExecutionToolResultError { type, error_code } | CodeExecutionResultBlock { type, content, return_code, 2 more } | EncryptedCodeExecutionResultBlock { type, content, encrypted_stdout, 2 more }
One of the following:
class CodeExecutionToolResultBlockParam { type, content, tool_use_id, cache_control }
type: :code_execution_tool_result
One of the following:
tool_use_id: String
pattern^srvtoolu_[a-zA-Z0-9_]+$
cache_control: CacheControlEphemeral { type, ttl }

Create a cache control breakpoint at this content block.

type: :ephemeral
ttl: :"5m" | :"1h"

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. See prompt caching pricing for details.

One of the following:
:"5m"
:"1h"
CodeExecutionToolResultBlockParamContent = CodeExecutionToolResultErrorParam { type, error_code } | CodeExecutionResultBlockParam { type, content, return_code, 2 more } | EncryptedCodeExecutionResultBlockParam { type, content, encrypted_stdout, 2 more }
One of the following:
class CodeExecutionToolResultError { type, error_code }
type: :code_execution_tool_result_error
One of the following:
:invalid_tool_input
:unavailable
:too_many_requests
:execution_time_exceeded
CodeExecutionToolResultErrorCode = :invalid_tool_input | :unavailable | :too_many_requests | :execution_time_exceeded
One of the following:
:invalid_tool_input
:unavailable
:too_many_requests
:execution_time_exceeded
class CodeExecutionToolResultErrorParam { type, error_code }
type: :code_execution_tool_result_error
One of the following:
:invalid_tool_input
:unavailable
:too_many_requests
:execution_time_exceeded
class ComputerCursorPositionConfig { defer_loading, enabled }

cursor_position's config overrides.

defer_loading: bool

Defer loading for this member. Must resolve to the same value on every enabled member of the toolset.

enabled: bool

Whether this member is offered to the model. Default is per member, per the toolset's documentation. A member whose enabled resolves false is withheld from the served schema.

class ComputerDoubleClickConfig { defer_loading, enabled }

double_click's config overrides.

defer_loading: bool

Defer loading for this member. Must resolve to the same value on every enabled member of the toolset.

enabled: bool

Whether this member is offered to the model. Default is per member, per the toolset's documentation. A member whose enabled resolves false is withheld from the served schema.

class ComputerHoldKeyConfig { defer_loading, enabled }

hold_key's config overrides.

defer_loading: bool

Defer loading for this member. Must resolve to the same value on every enabled member of the toolset.

enabled: bool

Whether this member is offered to the model. Default is per member, per the toolset's documentation. A member whose enabled resolves false is withheld from the served schema.

class ComputerKeyConfig { defer_loading, enabled }

key's config overrides.

defer_loading: bool

Defer loading for this member. Must resolve to the same value on every enabled member of the toolset.

enabled: bool

Whether this member is offered to the model. Default is per member, per the toolset's documentation. A member whose enabled resolves false is withheld from the served schema.

class ComputerLeftClickConfig { defer_loading, enabled }

left_click's config overrides.

defer_loading: bool

Defer loading for this member. Must resolve to the same value on every enabled member of the toolset.

enabled: bool

Whether this member is offered to the model. Default is per member, per the toolset's documentation. A member whose enabled resolves false is withheld from the served schema.

class ComputerLeftClickDragConfig { defer_loading, enabled }

left_click_drag's config overrides.

defer_loading: bool

Defer loading for this member. Must resolve to the same value on every enabled member of the toolset.

enabled: bool

Whether this member is offered to the model. Default is per member, per the toolset's documentation. A member whose enabled resolves false is withheld from the served schema.

class ComputerLeftMouseDownConfig { defer_loading, enabled }

left_mouse_down's config overrides.

defer_loading: bool

Defer loading for this member. Must resolve to the same value on every enabled member of the toolset.

enabled: bool

Whether this member is offered to the model. Default is per member, per the toolset's documentation. A member whose enabled resolves false is withheld from the served schema.

class ComputerLeftMouseUpConfig { defer_loading, enabled }

left_mouse_up's config overrides.

defer_loading: bool

Defer loading for this member. Must resolve to the same value on every enabled member of the toolset.

enabled: bool

Whether this member is offered to the model. Default is per member, per the toolset's documentation. A member whose enabled resolves false is withheld from the served schema.

class ComputerMiddleClickConfig { defer_loading, enabled }

middle_click's config overrides.

defer_loading: bool

Defer loading for this member. Must resolve to the same value on every enabled member of the toolset.

enabled: bool

Whether this member is offered to the model. Default is per member, per the toolset's documentation. A member whose enabled resolves false is withheld from the served schema.

class ComputerMouseMoveConfig { defer_loading, enabled }

mouse_move's config overrides.

defer_loading: bool

Defer loading for this member. Must resolve to the same value on every enabled member of the toolset.

enabled: bool

Whether this member is offered to the model. Default is per member, per the toolset's documentation. A member whose enabled resolves false is withheld from the served schema.

class ComputerRightClickConfig { defer_loading, enabled }

right_click's config overrides.

defer_loading: bool

Defer loading for this member. Must resolve to the same value on every enabled member of the toolset.

enabled: bool

Whether this member is offered to the model. Default is per member, per the toolset's documentation. A member whose enabled resolves false is withheld from the served schema.

class ComputerScreenshotConfig { defer_loading, enabled }

screenshot's config overrides.

defer_loading: bool

Defer loading for this member. Must resolve to the same value on every enabled member of the toolset.

enabled: bool

Whether this member is offered to the model. Default is per member, per the toolset's documentation. A member whose enabled resolves false is withheld from the served schema.

class ComputerScrollConfig { defer_loading, enabled }

scroll's config overrides.

defer_loading: bool

Defer loading for this member. Must resolve to the same value on every enabled member of the toolset.

enabled: bool

Whether this member is offered to the model. Default is per member, per the toolset's documentation. A member whose enabled resolves false is withheld from the served schema.

class ComputerToolset20260801 { type, cache_control, configs }

The computer toolset: a single tools[] entry (carrying no name) that declares the computer tool family. The model is served the family's tool with any members disabled via configs removed from its schema. Every member is enabled by default, zoom included. The single-tool options display_number and enable_zoom are not fields of a toolset entry — it carries only type, configs, and cache_control; zoom is controlled via configs.zoom.enabled.

class ComputerToolsetConfigs { type, cursor_position, double_click, 14 more }

Per-member configuration for computer_toolset_20260801: one optional field per member tool, keyed by the member name — the same name the member's tool_use blocks carry. Every member is an accepted key, and a member's defaults apply wherever its key is absent. Unknown keys are rejected: the field set is this toolset version's complete member set.

class ComputerTripleClickConfig { defer_loading, enabled }

triple_click's config overrides.

defer_loading: bool

Defer loading for this member. Must resolve to the same value on every enabled member of the toolset.

enabled: bool

Whether this member is offered to the model. Default is per member, per the toolset's documentation. A member whose enabled resolves false is withheld from the served schema.

class ComputerTypeConfig { defer_loading, enabled }

type's config overrides.

defer_loading: bool

Defer loading for this member. Must resolve to the same value on every enabled member of the toolset.

enabled: bool

Whether this member is offered to the model. Default is per member, per the toolset's documentation. A member whose enabled resolves false is withheld from the served schema.

class ComputerWaitConfig { defer_loading, enabled }

wait's config overrides.

defer_loading: bool

Defer loading for this member. Must resolve to the same value on every enabled member of the toolset.

enabled: bool

Whether this member is offered to the model. Default is per member, per the toolset's documentation. A member whose enabled resolves false is withheld from the served schema.

class ComputerZoomConfig { defer_loading, enabled }

zoom's config overrides.

defer_loading: bool

Defer loading for this member. Must resolve to the same value on every enabled member of the toolset.

enabled: bool

Whether this member is offered to the model. Default is per member, per the toolset's documentation. A member whose enabled resolves false is withheld from the served schema.

class Container { id, expires_at, skills }

Information about the container used in the request (for the code execution tool)

id: String

Identifier for the container used in this request

expires_at: Time

The time at which the container will expire.

formatdate-time
skills: Array[ContainerSkill { type, skill_id, version }]

Skills loaded in the container

type: :anthropic | :custom

Type of skill - either 'anthropic' (built-in) or 'custom' (user-defined)

One of the following:
:anthropic
:custom
skill_id: String

Skill ID

maxLength64
minLength1
version: String

The resolved version: a skill version ID for custom skills.

maxLength64
minLength1
class ContainerParams { id, skills }

Container parameters with skills to be loaded.

id: String

Container id

skills: Array[SkillParams { type, skill_id, version }]

List of skills to load in the container

maxItems20
type: :anthropic | :custom

Type of skill - either 'anthropic' (built-in) or 'custom' (user-defined)

One of the following:
:anthropic
:custom
skill_id: String

Skill ID

maxLength64
minLength1
version: String

Skill version or 'latest' for most recent version

maxLength64
minLength1
class ContainerSkill { type, skill_id, version }

A skill that was loaded in a container (response model).

type: :anthropic | :custom

Type of skill - either 'anthropic' (built-in) or 'custom' (user-defined)

One of the following:
:anthropic
:custom
skill_id: String

Skill ID

maxLength64
minLength1
version: String

The resolved version: a skill version ID for custom skills.

maxLength64
minLength1
class ContainerUploadBlock { type, file_id }

Response model for a file uploaded to the container.

type: :container_upload
file_id: String
class ContainerUploadBlockParam { type, file_id, cache_control }

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.

type: :container_upload
file_id: String
cache_control: CacheControlEphemeral { type, ttl }

Create a cache control breakpoint at this content block.

type: :ephemeral
ttl: :"5m" | :"1h"

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. See prompt caching pricing for details.

One of the following:
:"5m"
:"1h"
ContentBlock = TextBlock { type, citations, text } | ThinkingBlock { type, signature, thinking } | RedactedThinkingBlock { type, data } | 9 more
One of the following:
ContentBlockParam = TextBlockParam { type, text, cache_control, citations } | ImageBlockParam { type, source, cache_control, transformations } | DocumentBlockParam { type, source, cache_control, 3 more } | 13 more
One of the following:
class ContentBlockSource { type, content }
type: :content
content: String | Array[ContentBlockSourceContent]
One of the following:
String = String
ContentBlockSourceContent = Array[ContentBlockSourceContent]
One of the following:
class TextBlockParam { type, text, cache_control, citations }
class ImageBlockParam { type, source, cache_control, transformations }
ContentBlockSourceContent = TextBlockParam { type, text, cache_control, citations } | ImageBlockParam { type, source, cache_control, transformations }
One of the following:
class TextBlockParam { type, text, cache_control, citations }
class ImageBlockParam { type, source, cache_control, transformations }
class DirectCaller { type }

Tool invocation directly from the model.

type: :direct
class DocumentBlock { type, citations, source, title }
class DocumentBlockParam { type, source, cache_control, 3 more }
class EncryptedCodeExecutionResultBlock { type, content, encrypted_stdout, 2 more }

Code execution result with encrypted stdout for PFC + web_search results.

type: :encrypted_code_execution_result
content: Array[CodeExecutionOutputBlock { type, file_id }]
type: :code_execution_output
file_id: String
encrypted_stdout: String
return_code: Integer
stderr: String
class EncryptedCodeExecutionResultBlockParam { type, content, encrypted_stdout, 2 more }

Code execution result with encrypted stdout for PFC + web_search results.

type: :encrypted_code_execution_result
content: Array[CodeExecutionOutputBlockParam { type, file_id }]
type: :code_execution_output
file_id: String
encrypted_stdout: String
return_code: Integer
stderr: String
class FileDocumentSource { type, file_id }
type: :file
file_id: String
class FileImageSource { type, file_id }
type: :file
file_id: String
class ImageBlockParam { type, source, cache_control, transformations }
class ImageTransformationsParam { oversized_image }

Configures the transformations the server applies to this image before the model observes it. Each key names a condition the server transforms images for; its value selects the transformation applied. Omitted keys keep their default behavior, and an empty object is equivalent to omitting the field.

oversized_image: :downsize | :error

What the server does when this image exceeds the model's maximum image size. "downsize" (the default) scales the image down to fit, which changes the dimensions the model observes without telling you. "error" instead rejects the request with a 400 error naming the image's dimensions and the largest dimensions that fit, so you can scale the image deliberately — your image is never silently scaled down.

One of the following:
:downsize
:error
class InputJSONDelta { type, partial_json }
type: :input_json_delta
partial_json: String
class JSONOutputFormat { type, schema }
type: :json_schema
schema: Hash[Symbol, untyped]

The JSON schema of the format

class MemoryTool20250818 { type, name, allowed_callers, 4 more }
class Message { type, id, container, 7 more }
MessageCountTokensTool = Tool { type, input_schema, name, 7 more } | ToolBash20250124 { type, name, allowed_callers, 4 more } | CodeExecutionTool20250522 { type, name, allowed_callers, 3 more } | 18 more
One of the following:
MessageCreateParamsContainer = ContainerParams { id, skills } | String

Container identifier for reuse across requests.

One of the following:
class ContainerParams { id, skills }

Container parameters with skills to be loaded.

id: String

Container id

skills: Array[SkillParams { type, skill_id, version }]

List of skills to load in the container

maxItems20
type: :anthropic | :custom

Type of skill - either 'anthropic' (built-in) or 'custom' (user-defined)

One of the following:
:anthropic
:custom
skill_id: String

Skill ID

maxLength64
minLength1
version: String

Skill version or 'latest' for most recent version

maxLength64
minLength1
String = String
class MessageDeltaUsage { cache_creation_input_tokens, cache_read_input_tokens, input_tokens, 3 more }
class MessageParam { content, role }
class MessageTokensCount { input_tokens }
input_tokens: Integer

The total number of tokens across the provided list of messages, system prompt, and tools.

class Metadata { user_id }
user_id: String

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.

maxLength512
Model = :"claude-fable-5-1" | :"claude-mythos-5-1" | :"claude-sonnet-5" | 14 more | String

The model that will complete your prompt.

See models for additional details and options.

One of the following:
class OutputConfig { effort, format_ }
effort: :low | :medium | :high | 2 more

All possible effort levels.

One of the following:
:low
:medium
:high
:xhigh
:max
format_: JSONOutputFormat { type, schema }

A schema to specify Claude's output format in responses. See structured outputs

type: :json_schema
schema: Hash[Symbol, untyped]

The JSON schema of the format

class OutputTokensDetails { thinking_tokens }
thinking_tokens: Integer

Number of output tokens the model generated as internal reasoning, including the thinking-block delimiter tokens.

Reflects the raw reasoning the model produced, not the (possibly shorter) summarized thinking text returned in the response body. Computed by re-tokenizing the raw reasoning text, so it may differ from the model's exact generation count by a small number of tokens. Always ≤ output_tokens; output_tokens - thinking_tokens approximates the non-reasoning output.

minimum0
class PlainTextSource { type, data, media_type }
type: :text
data: String
media_type: :"text/plain"
RawContentBlockDelta = TextDelta { type, text } | InputJSONDelta { type, partial_json } | CitationsDelta { type, citation } | 2 more
One of the following:
class RawContentBlockDeltaEvent { type, delta, index }
type: :content_block_delta
One of the following:
index: Integer
class RawContentBlockStartEvent { type, content_block, index }
class RawContentBlockStopEvent { type, index }
type: :content_block_stop
index: Integer
class RawMessageDeltaEvent { type, delta, usage }
class RawMessageStartEvent { type, message }
type: :message_start
message: Message { type, id, container, 7 more }
class RawMessageStopEvent { type }
type: :message_stop
RawMessageStreamEvent = RawMessageStartEvent { type, message } | RawMessageDeltaEvent { type, delta, usage } | RawMessageStopEvent { type } | 3 more
One of the following:
class RedactedThinkingBlock { type, data }
type: :redacted_thinking
data: String

The contents of this redacted thinking block, returned when portions of the model's thinking were safety-redacted. This field is opaque and encrypted, with no readable content.

Pass redacted_thinking blocks back to the API unchanged when continuing a multi-turn conversation.

See extended thinking for details.

class RedactedThinkingBlockParam { type, data }
type: :redacted_thinking
data: String

The data value of this redacted thinking block, exactly as returned by the API in a previous response. Opaque and encrypted; pass it back unchanged.

class RefusalStopDetails { type, category, explanation }

Structured information about a refusal.

type: :refusal
category: :cyber | :bio | :frontier_llm | 2 more

The policy category that triggered a refusal.

One of the following:
:cyber

The request could enable cyber harm, such as malware or exploit development. Benign cybersecurity work can also trigger this category.

:bio

The request could enable biological harm, such as dangerous lab methods. Beneficial life sciences work can also trigger this category.

:frontier_llm

The request could assist the development of competing AI models, which is restricted under Anthropic's commercial terms. Benign machine learning work can also trigger this category.

:reasoning_extraction

The request asks the model to reproduce its internal reasoning in the response text. To get reasoning in a structured form instead, use adaptive thinking.

:general_harms

The request could be related to an area that was determined as harmful. Benign work might sometimes trigger this category.

explanation: String

Human-readable explanation of the refusal.

This text is not guaranteed to be stable. null when no explanation is available for the category.

class SearchResultBlockParam { type, content, source, 3 more }
class ServerToolCaller { type, tool_id }

Tool invocation generated by a server-side tool.

type: :code_execution_20250825
tool_id: String
pattern^srvtoolu_[a-zA-Z0-9_]+$
class ServerToolCaller20260120 { type, tool_id }
type: :code_execution_20260120
tool_id: String
pattern^srvtoolu_[a-zA-Z0-9_]+$
class ServerToolUsage { web_fetch_requests, web_search_requests }
web_fetch_requests: Integer

The number of web fetch tool requests.

minimum0
web_search_requests: Integer

The number of web search tool requests.

minimum0
class ServerToolUseBlock { type, id, caller_, 2 more }
class ServerToolUseBlockParam { type, id, input, 3 more }
class SignatureDelta { type, signature }
type: :signature_delta
signature: String

The signature for this thinking block: an opaque value used to verify that the block was generated by Claude when it is passed back to the API. Delivered in a signature_delta event just before the block's content_block_stop event.

class SkillParams { type, skill_id, version }

Specification for a skill to be loaded in a container (request model).

type: :anthropic | :custom

Type of skill - either 'anthropic' (built-in) or 'custom' (user-defined)

One of the following:
:anthropic
:custom
skill_id: String

Skill ID

maxLength64
minLength1
version: String

Skill version or 'latest' for most recent version

maxLength64
minLength1
StopReason = :end_turn | :max_tokens | :stop_sequence | 4 more
One of the following:
:end_turn
:max_tokens
:stop_sequence
:tool_use
:pause_turn
:refusal
:model_context_window_exceeded
class TextBlock { type, citations, text }
class TextBlockParam { type, text, cache_control, citations }
TextCitation = CitationCharLocation { type, cited_text, document_index, 4 more } | CitationPageLocation { type, cited_text, document_index, 4 more } | CitationContentBlockLocation { type, cited_text, document_index, 4 more } | 2 more
One of the following:
TextCitationParam = CitationCharLocationParam { type, cited_text, document_index, 3 more } | CitationPageLocationParam { type, cited_text, document_index, 3 more } | CitationContentBlockLocationParam { type, cited_text, document_index, 3 more } | 2 more
One of the following:
class TextDelta { type, text }
type: :text_delta
text: String
class TextEditorCodeExecutionCreateResultBlock { type, is_file_update }
type: :text_editor_code_execution_create_result
is_file_update: bool
class TextEditorCodeExecutionCreateResultBlockParam { type, is_file_update }
type: :text_editor_code_execution_create_result
is_file_update: bool
class TextEditorCodeExecutionStrReplaceResultBlock { type, lines, new_lines, 3 more }
type: :text_editor_code_execution_str_replace_result
lines: Array[String]
new_lines: Integer
new_start: Integer
old_lines: Integer
old_start: Integer
class TextEditorCodeExecutionStrReplaceResultBlockParam { type, lines, new_lines, 3 more }
type: :text_editor_code_execution_str_replace_result
lines: Array[String]
new_lines: Integer
new_start: Integer
old_lines: Integer
old_start: Integer
class TextEditorCodeExecutionToolResultBlock { type, content, tool_use_id }
class TextEditorCodeExecutionToolResultBlockParam { type, content, tool_use_id, cache_control }
class TextEditorCodeExecutionToolResultError { type, error_code, error_message }
type: :text_editor_code_execution_tool_result_error
One of the following:
:invalid_tool_input
:unavailable
:too_many_requests
:execution_time_exceeded
:file_not_found
error_message: String
TextEditorCodeExecutionToolResultErrorCode = :invalid_tool_input | :unavailable | :too_many_requests | 2 more
One of the following:
:invalid_tool_input
:unavailable
:too_many_requests
:execution_time_exceeded
:file_not_found
class TextEditorCodeExecutionToolResultErrorParam { type, error_code, error_message }
type: :text_editor_code_execution_tool_result_error
One of the following:
:invalid_tool_input
:unavailable
:too_many_requests
:execution_time_exceeded
:file_not_found
error_message: String
class TextEditorCodeExecutionViewResultBlock { type, content, file_type, 3 more }
type: :text_editor_code_execution_view_result
content: String
file_type: :text | :image | :pdf
One of the following:
:text
:image
:pdf
num_lines: Integer
start_line: Integer
total_lines: Integer
class TextEditorCodeExecutionViewResultBlockParam { type, content, file_type, 3 more }
type: :text_editor_code_execution_view_result
content: String
file_type: :text | :image | :pdf
One of the following:
:text
:image
:pdf
num_lines: Integer
start_line: Integer
total_lines: Integer
class ThinkingBlock { type, signature, thinking }
type: :thinking
signature: String

A value used to verify that this thinking block was generated by Claude when it is passed back to the API.

This is an opaque field and should not be interpreted or parsed. When passing thinking blocks back to the API (required when using tools with extended thinking), pass them back exactly as received, with this field intact.

See extended thinking for details.

thinking: String

The text of Claude's thinking process for this block.

class ThinkingBlockParam { type, signature, thinking }
type: :thinking
signature: String

The signature value of this thinking block, exactly as returned by the API in a previous response. Used to verify that the block was generated by Claude.

Thinking blocks must be passed back unmodified and in their original order; a modified block results in a 400 invalid_request_error.

thinking: String

The thinking text of this block as returned by the API.

class ThinkingConfigAdaptive { type, display_ }
type: :adaptive
display_: :summarized | :omitted

Controls how thinking content appears in the response. When set to summarized, thinking is returned normally. When set to omitted, thinking content is redacted but a signature is returned for multi-turn continuity. Defaults to summarized.

One of the following:
:summarized
:omitted
class ThinkingConfigDisabled { type }
type: :disabled
class ThinkingConfigEnabled { type, budget_tokens, display_ }
type: :enabled
budget_tokens: Integer

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 for details.

minimum1024
display_: :summarized | :omitted

Controls how thinking content appears in the response. When set to summarized, thinking is returned normally. When set to omitted, thinking content is redacted but a signature is returned for multi-turn continuity. Defaults to summarized.

One of the following:
:summarized
:omitted
ThinkingConfigParam = ThinkingConfigEnabled { type, budget_tokens, display_ } | ThinkingConfigDisabled { type } | ThinkingConfigAdaptive { type, display_ }

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 for details.

One of the following:
class ThinkingDelta { type, thinking }
type: :thinking_delta
thinking: String

The incremental thinking text for this content block. Concatenate the thinking values of successive thinking_delta events to assemble the block's full thinking value.

class Tool { type, input_schema, name, 7 more }
class ToolBash20250124 { type, name, allowed_callers, 4 more }
ToolChoice = ToolChoiceAuto { type, disable_parallel_tool_use } | ToolChoiceAny { type, disable_parallel_tool_use } | ToolChoiceTool { type, name, disable_parallel_tool_use } | ToolChoiceNone { type }

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.

One of the following:
class ToolChoiceAny { type, disable_parallel_tool_use }

The model will use any available tools.

type: :any
disable_parallel_tool_use: bool

Whether to disable parallel tool use.

Defaults to false. If set to true, the model will output exactly one tool use.

class ToolChoiceAuto { type, disable_parallel_tool_use }

The model will automatically decide whether to use tools.

type: :auto
disable_parallel_tool_use: bool

Whether to disable parallel tool use.

Defaults to false. If set to true, the model will output at most one tool use.

class ToolChoiceNone { type }

The model will not be allowed to use tools.

type: :none
class ToolChoiceTool { type, name, disable_parallel_tool_use }

The model will use the specified tool with tool_choice.name.

type: :tool
name: String

The name of the tool to use.

disable_parallel_tool_use: bool

Whether to disable parallel tool use.

Defaults to false. If set to true, the model will output exactly one tool use.

class ToolReferenceBlock { type, tool_name }
type: :tool_reference
tool_name: String
maxLength256
minLength1
pattern^[a-zA-Z0-9_-]{1,256}$
class ToolReferenceBlockParam { type, tool_name, cache_control }

Tool reference block that can be included in tool_result content.

type: :tool_reference
tool_name: String
maxLength256
minLength1
pattern^[a-zA-Z0-9_-]{1,256}$
cache_control: CacheControlEphemeral { type, ttl }

Create a cache control breakpoint at this content block.

type: :ephemeral
ttl: :"5m" | :"1h"

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. See prompt caching pricing for details.

One of the following:
:"5m"
:"1h"
class ToolResultBlockParam { type, tool_use_id, cache_control, 3 more }
class ToolSearchToolBm25_20251119 { type, name, allowed_callers, 3 more }
class ToolSearchToolRegex20251119 { type, name, allowed_callers, 3 more }
class ToolSearchToolResultBlock { type, content, tool_use_id }
class ToolSearchToolResultBlockParam { type, content, tool_use_id, cache_control }
class ToolSearchToolResultError { type, error_code, error_message }
type: :tool_search_tool_result_error
One of the following:
:invalid_tool_input
:unavailable
:too_many_requests
:execution_time_exceeded
error_message: String
ToolSearchToolResultErrorCode = :invalid_tool_input | :unavailable | :too_many_requests | :execution_time_exceeded
One of the following:
:invalid_tool_input
:unavailable
:too_many_requests
:execution_time_exceeded
class ToolSearchToolResultErrorParam { type, error_code, error_message }
type: :tool_search_tool_result_error
One of the following:
:invalid_tool_input
:unavailable
:too_many_requests
:execution_time_exceeded
error_message: String
class ToolSearchToolSearchResultBlock { type, tool_references }
type: :tool_search_tool_search_result
tool_references: Array[ToolReferenceBlock { type, tool_name }]
type: :tool_reference
tool_name: String
maxLength256
minLength1
pattern^[a-zA-Z0-9_-]{1,256}$
class ToolSearchToolSearchResultBlockParam { type, tool_references }
type: :tool_search_tool_search_result
tool_references: Array[ToolReferenceBlockParam { type, tool_name, cache_control }]
type: :tool_reference
tool_name: String
maxLength256
minLength1
pattern^[a-zA-Z0-9_-]{1,256}$
cache_control: CacheControlEphemeral { type, ttl }

Create a cache control breakpoint at this content block.

type: :ephemeral
ttl: :"5m" | :"1h"

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. See prompt caching pricing for details.

One of the following:
:"5m"
:"1h"
class ToolTextEditor20250124 { type, name, allowed_callers, 4 more }
class ToolTextEditor20250429 { type, name, allowed_callers, 4 more }
class ToolTextEditor20250728 { type, name, allowed_callers, 5 more }
ToolUnion = Tool { type, input_schema, name, 7 more } | ToolBash20250124 { type, name, allowed_callers, 4 more } | CodeExecutionTool20250522 { type, name, allowed_callers, 3 more } | 18 more
One of the following:
class ToolUseBlock { type, id, caller_, 3 more }
class ToolUseBlockParam { type, id, input, 4 more }
class URLImageSource { type, url }
type: :url
url: String
class URLPDFSource { type, url }
type: :url
url: String
class Usage { cache_creation, cache_creation_input_tokens, cache_read_input_tokens, 6 more }
class UserLocation { type, city, country, 2 more }
type: :approximate
city: String

The city of the user.

maxLength255
minLength1
country: String

The two letter ISO country code of the user.

maxLength2
minLength2
region: String

The region of the user.

maxLength255
minLength1
timezone: String

The IANA timezone of the user.

maxLength255
minLength1
class WebFetchBlock { type, content, retrieved_at, url }
type: :web_fetch_result
content: DocumentBlock { type, citations, source, title }
retrieved_at: String

ISO 8601 timestamp when the content was retrieved

url: String

Fetched content URL

class WebFetchBlockParam { type, content, url, retrieved_at }
type: :web_fetch_result
content: DocumentBlockParam { type, source, cache_control, 3 more }
url: String

Fetched content URL

retrieved_at: String

ISO 8601 timestamp when the content was retrieved

class WebFetchTool20250910 { type, name, allowed_callers, 8 more }
class WebFetchTool20260209 { type, name, allowed_callers, 8 more }
class WebFetchTool20260309 { type, name, allowed_callers, 9 more }

Web fetch tool with use_cache parameter for bypassing cached content.

class WebFetchTool20260318 { type, name, allowed_callers, 10 more }
class WebFetchToolResultBlock { type, caller_, content, tool_use_id }
class WebFetchToolResultBlockParam { type, content, tool_use_id, 2 more }
class WebFetchToolResultErrorBlock { type, error_code }
type: :web_fetch_tool_result_error
One of the following:
:invalid_tool_input
:url_too_long
:url_not_allowed
:url_not_in_prior_context
:url_not_accessible
:unsupported_content_type
:too_many_requests
:max_uses_exceeded
:unavailable
:content_too_large
class WebFetchToolResultErrorBlockParam { type, error_code }
type: :web_fetch_tool_result_error
One of the following:
:invalid_tool_input
:url_too_long
:url_not_allowed
:url_not_in_prior_context
:url_not_accessible
:unsupported_content_type
:too_many_requests
:max_uses_exceeded
:unavailable
:content_too_large
WebFetchToolResultErrorCode = :invalid_tool_input | :url_too_long | :url_not_allowed | 7 more
One of the following:
:invalid_tool_input
:url_too_long
:url_not_allowed
:url_not_in_prior_context
:url_not_accessible
:unsupported_content_type
:too_many_requests
:max_uses_exceeded
:unavailable
:content_too_large
class WebSearchResultBlock { type, encrypted_content, page_age, 2 more }
type: :web_search_result
encrypted_content: String
page_age: String
title: String
url: String
class WebSearchResultBlockParam { type, encrypted_content, title, 2 more }
type: :web_search_result
encrypted_content: String
title: String
url: String
page_age: String
class WebSearchTool20250305 { type, name, allowed_callers, 7 more }
class WebSearchTool20260209 { type, name, allowed_callers, 7 more }
class WebSearchTool20260318 { type, name, allowed_callers, 8 more }
class WebSearchToolRequestError { type, error_code }
type: :web_search_tool_result_error
One of the following:
:invalid_tool_input
:unavailable
:max_uses_exceeded
:too_many_requests
:query_too_long
:request_too_large
class WebSearchToolResultBlock { type, caller_, content, tool_use_id }
WebSearchToolResultBlockContent = WebSearchToolResultError { type, error_code } | Array[WebSearchResultBlock { type, encrypted_content, page_age, 2 more }]
One of the following:
class WebSearchToolResultBlockParam { type, content, tool_use_id, 2 more }
WebSearchToolResultBlockParamContent = Array[WebSearchResultBlockParam { type, encrypted_content, title, 2 more }] | WebSearchToolRequestError { type, error_code }
One of the following:
class WebSearchToolResultError { type, error_code }
type: :web_search_tool_result_error
One of the following:
:invalid_tool_input
:unavailable
:max_uses_exceeded
:too_many_requests
:query_too_long
:request_too_large
WebSearchToolResultErrorCode = :invalid_tool_input | :unavailable | :max_uses_exceeded | 3 more
One of the following:
:invalid_tool_input
:unavailable
:max_uses_exceeded
:too_many_requests
:query_too_long
:request_too_large

MessagesBatches

Create a Message Batch
messages.batches.create(**kwargs) -> MessageBatch
POST/v1/messages/batches

Send a batch of Message creation requests.

Retrieve a Message Batch
messages.batches.retrieve(message_batch_id, **kwargs) -> MessageBatch
GET/v1/messages/batches/{message_batch_id}

This endpoint is idempotent and can be used to poll for Message Batch completion. To access the results of a Message Batch, make a request to the results_url field in the response.

List Message Batches
messages.batches.list(**kwargs) -> Page<MessageBatch>
GET/v1/messages/batches

List all Message Batches within a Workspace. Most recently created batches are returned first.

Cancel a Message Batch
messages.batches.cancel(message_batch_id, **kwargs) -> MessageBatch
POST/v1/messages/batches/{message_batch_id}/cancel

Batches may be canceled any time before processing ends. Once cancellation is initiated, the batch enters a canceling state, at which time the system may complete any in-progress, non-interruptible requests before finalizing cancellation.

Delete a Message Batch
messages.batches.delete(message_batch_id, **kwargs) -> DeletedMessageBatch
DELETE/v1/messages/batches/{message_batch_id}
Retrieve Message Batch results
messages.batches.results(message_batch_id, **kwargs) -> MessageBatchIndividualResponse
GET/v1/messages/batches/{message_batch_id}/results

Streams the results of a Message Batch as a .jsonl file.