Events
api/beta/sessions/threads/events
Nearest release: v2.1.245, published an hour after this site recorded the change. Shown because the two are within 24 hours of each other. Nothing here says the release caused the edit.
api/beta/sessions/threads/events Changed · +638 / -773 lines
### Path parameters ### Query parameters ### Headers #### Response (200) ### Path parameters ### Query parameters ### Headers #### Response (200) ### Path Parameters ### Query Parameters ### Header Parameters #### Response ### Path Parameters ### Query Parameters ### Header Parameters #### Response
The two sides of this change are too far apart to line up, so this is the differ's own diff of it.
---- -title: Events -url: https://platform.claude.com/docs/en/api/beta/sessions/threads/events ---- - # Events ## List Session Thread Events -**get** `/v1/sessions/{session_id}/threads/{thread_id}/events` +**GET** `/v1/sessions/{session_id}/threads/{thread_id}/events` List Session Thread Events -### Path Parameters +### Path parameters - `session_id: string` - `thread_id: string` -### Query Parameters +### Query parameters - `limit: optional number` Query parameter for limit + format: int32 + - `page: optional string` Query parameter for page -### Header Parameters +### Headers - `"anthropic-beta": optional array of AnthropicBeta`
Events for the thread, ordered by `processed_at`. - - `BetaManagedAgentsUserMessageEvent object { id, content, type, processed_at }` + - `BetaManagedAgentsUserMessageEvent object` A user message event in the session conversation.
Array of content blocks comprising the user message. - - `BetaManagedAgentsTextBlock object { text, type }` + - `BetaManagedAgentsTextBlock object` Regular text content.
The text content. + minLength: 1 + - `type: "text"` - - `"text"` - - - `BetaManagedAgentsImageBlock object { source, type }` + - `BetaManagedAgentsImageBlock object` Image content specified directly as base64 data or as a reference via a URL.
Union type for image source variants. - - `BetaManagedAgentsBase64ImageSource object { data, media_type, type }` + - `BetaManagedAgentsBase64ImageSource object` Base64-encoded image data.
Base64-encoded image data. + minLength: 1 + - `media_type: string` MIME type of the image (e.g., "image/png", "image/jpeg", "image/gif", "image/webp"). + minLength: 1 + - `type: "base64"` - - `"base64"` - - - `BetaManagedAgentsURLImageSource object { type, url }` + - `BetaManagedAgentsURLImageSource object` Image referenced by URL. - `type: "url"` - - `"url"` - - `url: string` URL of the image to fetch. - - `BetaManagedAgentsFileImageSource object { file_id, type }` + minLength: 1 + + - `BetaManagedAgentsFileImageSource object` Image referenced by file ID.
ID of a previously uploaded file. + minLength: 1 + - `type: "file"` - - `"file"` - - `type: "image"` - - `"image"` - - - `BetaManagedAgentsDocumentBlock object { source, type, context, title }` + - `BetaManagedAgentsDocumentBlock object` Document content, either specified directly as base64 data, as text, or as a reference via a URL.
Union type for document source variants. - - `BetaManagedAgentsBase64DocumentSource object { data, media_type, type }` + - `BetaManagedAgentsBase64DocumentSource object` Base64-encoded document data.
Base64-encoded document data. + minLength: 1 + - `media_type: string` MIME type of the document (e.g., "application/pdf"). + minLength: 1 + - `type: "base64"` - - `"base64"` - - - `BetaManagedAgentsPlainTextDocumentSource object { data, media_type, type }` + - `BetaManagedAgentsPlainTextDocumentSource object` Plain text document content.
The plain text content. + minLength: 1 + - `media_type: "text/plain"` MIME type of the text content. Must be "text/plain". - - `"text/plain"` - - `type: "text"` - - `"text"` - - - `BetaManagedAgentsURLDocumentSource object { type, url }` + - `BetaManagedAgentsURLDocumentSource object` Document referenced by URL. - `type: "url"` - - `"url"` - - `url: string` URL of the document to fetch. - - `BetaManagedAgentsFileDocumentSource object { file_id, type }` + minLength: 1 + + - `BetaManagedAgentsFileDocumentSource object` Document referenced by file ID.
ID of a previously uploaded file. + minLength: 1 + - `type: "file"` - - `"file"` - - `type: "document"` - - `"document"` - - `context: optional string or null` Additional context about the document for the model.
The title of the document. - - `BetaManagedAgentsRedactedBlock object { type }` + - `BetaManagedAgentsRedactedBlock object` Placeholder for content withheld by Anthropic model policy. - `type: "redacted"` - - `"redacted"` - - `type: "user.message"` - - `"user.message"` - - `processed_at: optional string or null` A timestamp in RFC 3339 format - - `BetaManagedAgentsUserInterruptEvent object { id, type, processed_at, session_thread_id }` + format: date-time + + - `BetaManagedAgentsUserInterruptEvent object` An interrupt event that pauses agent execution and returns control to the user.
- `type: "user.interrupt"` - - `"user.interrupt"` - - `processed_at: optional string or null` A timestamp in RFC 3339 format + format: date-time + - `session_thread_id: optional string or null` If absent, interrupts every non-archived thread in a multiagent session (or the primary alone in a single-agent session). If present, interrupts only the named thread. - - `BetaManagedAgentsUserToolConfirmationEvent object { id, result, tool_use_id, 4 more }` + - `BetaManagedAgentsUserToolConfirmationEvent object` A tool confirmation event that approves or denies a pending tool execution.
- `type: "user.tool_confirmation"` - - `"user.tool_confirmation"` - - `deny_message: optional string or null` Optional message providing context for a 'deny' decision. Only allowed when result is 'deny'. + maxLength: 10000 + - `processed_at: optional string or null` A timestamp in RFC 3339 format + format: date-time + - `session_thread_id: optional string or null` When set, the confirmation routes to this subagent's thread rather than the primary. Echo this from the `session_thread_id` on the `agent.tool_use` or `agent.mcp_tool_use` event that prompted the approval. - - `BetaManagedAgentsUserCustomToolResultEvent object { id, custom_tool_use_id, type, 4 more }` + - `BetaManagedAgentsUserCustomToolResultEvent object` Event sent by the client providing the result of a custom tool execution.
- `type: "user.custom_tool_result"` - - `"user.custom_tool_result"` - - `content: optional array of BetaManagedAgentsTextBlock or BetaManagedAgentsImageBlock or BetaManagedAgentsDocumentBlock or BetaManagedAgentsSearchResultBlock` The result content returned by the tool. - - `BetaManagedAgentsTextBlock object { text, type }` + - `BetaManagedAgentsTextBlock object` Regular text content. - - `BetaManagedAgentsImageBlock object { source, type }` + - `BetaManagedAgentsImageBlock object` Image content specified directly as base64 data or as a reference via a URL. - - `BetaManagedAgentsDocumentBlock object { source, type, context, title }` + - `BetaManagedAgentsDocumentBlock object` Document content, either specified directly as base64 data, as text, or as a reference via a URL. - - `BetaManagedAgentsSearchResultBlock object { citations, content, source, 2 more }` + - `BetaManagedAgentsSearchResultBlock object` A block containing a web search result.
The text content. + minLength: 1 + - `type: "text"` - - `"text"` - - `source: string` The URL source of the search result. + minLength: 1 + - `title: string` The title of the search result. + minLength: 1 + - `type: "search_result"` - - `"search_result"` - - `is_error: optional boolean or null` Whether the tool execution resulted in an error.
A timestamp in RFC 3339 format + format: date-time + - `session_thread_id: optional string or null` Routes this result to a subagent thread. Copy from the `agent.custom_tool_use` event's `session_thread_id`. - - `BetaManagedAgentsAgentCustomToolUseEvent object { id, input, name, 3 more }` + - `BetaManagedAgentsAgentCustomToolUseEvent object` Event emitted when the agent calls a custom tool. The session goes idle until the client sends a `user.custom_tool_result` event with the result.
A timestamp in RFC 3339 format + format: date-time + - `type: "agent.custom_tool_use"` - - `"agent.custom_tool_use"` - - `session_thread_id: optional string or null` When set, this event was cross-posted from a subagent's thread to surface its custom tool use on the primary thread's stream. Empty on the thread's own events. Echo this on a `user.custom_tool_result` event to route the result back. - - `BetaManagedAgentsAgentMessageEvent object { id, content, processed_at, type }` + - `BetaManagedAgentsAgentMessageEvent object` An agent response event in the session conversation.
Array of text blocks comprising the agent response. - - `BetaManagedAgentsTextBlock object { text, type }` + - `BetaManagedAgentsTextBlock object` Regular text content. - - `BetaManagedAgentsRedactedBlock object { type }` + - `BetaManagedAgentsRedactedBlock object` Placeholder for content withheld by Anthropic model policy.
A timestamp in RFC 3339 format + format: date-time + - `type: "agent.message"` - - `"agent.message"` - - - `BetaManagedAgentsAgentThinkingEvent object { id, processed_at, type }` + - `BetaManagedAgentsAgentThinkingEvent object` Indicates the agent is making forward progress via extended thinking. A progress signal, not a content carrier.
A timestamp in RFC 3339 format + format: date-time + - `type: "agent.thinking"` - - `"agent.thinking"` - - - `BetaManagedAgentsAgentMCPToolUseEvent object { id, input, mcp_server_name, 5 more }` + - `BetaManagedAgentsAgentMCPToolUseEvent object` Event emitted when the agent invokes a tool provided by an MCP server.
A timestamp in RFC 3339 format + format: date-time + - `type: "agent.mcp_tool_use"` - - `"agent.mcp_tool_use"` - - `evaluated_permission: optional "allow" or "ask" or "deny"` AgentEvaluatedPermission enum
When set, this event was cross-posted from a subagent's thread to surface its permission request on the primary thread's stream. Empty on the thread's own events. Echo this on a `user.tool_confirmation` event to route the approval back. - - `BetaManagedAgentsAgentMCPToolResultEvent object { id, mcp_tool_use_id, processed_at, 3 more }` + - `BetaManagedAgentsAgentMCPToolResultEvent object` Event representing the result of an MCP tool execution.
A timestamp in RFC 3339 format + format: date-time + - `type: "agent.mcp_tool_result"` - - `"agent.mcp_tool_result"` - - `content: optional array of BetaManagedAgentsTextBlock or BetaManagedAgentsImageBlock or BetaManagedAgentsDocumentBlock or BetaManagedAgentsSearchResultBlock` The result content returned by the tool. - - `BetaManagedAgentsTextBlock object { text, type }` + - `BetaManagedAgentsTextBlock object` Regular text content. - - `BetaManagedAgentsImageBlock object { source, type }` + - `BetaManagedAgentsImageBlock object` Image content specified directly as base64 data or as a reference via a URL. - - `BetaManagedAgentsDocumentBlock object { source, type, context, title }` + - `BetaManagedAgentsDocumentBlock object` Document content, either specified directly as base64 data, as text, or as a reference via a URL. - - `BetaManagedAgentsSearchResultBlock object { citations, content, source, 2 more }` + - `BetaManagedAgentsSearchResultBlock object` A block containing a web search result.
Whether the tool execution resulted in an error. - - `BetaManagedAgentsAgentToolUseEvent object { id, input, name, 4 more }` + - `BetaManagedAgentsAgentToolUseEvent object` Event emitted when the agent invokes a built-in agent tool.
A timestamp in RFC 3339 format + format: date-time + - `type: "agent.tool_use"` - - `"agent.tool_use"` - - `evaluated_permission: optional "allow" or "ask" or "deny"` AgentEvaluatedPermission enum
When set, this event was cross-posted from a subagent's thread to surface its permission request on the primary thread's stream. Empty on the thread's own events. Echo this on a `user.tool_confirmation` event to route the approval back. - - `BetaManagedAgentsAgentToolResultEvent object { id, processed_at, tool_use_id, 3 more }` + - `BetaManagedAgentsAgentToolResultEvent object` Event representing the result of an agent tool execution.
A timestamp in RFC 3339 format + format: date-time + - `tool_use_id: string` The id of the `agent.tool_use` event this result corresponds to. - `type: "agent.tool_result"` - - `"agent.tool_result"` - - `content: optional array of BetaManagedAgentsTextBlock or BetaManagedAgentsImageBlock or BetaManagedAgentsDocumentBlock or BetaManagedAgentsSearchResultBlock` The result content returned by the tool. - - `BetaManagedAgentsTextBlock object { text, type }` + - `BetaManagedAgentsTextBlock object` Regular text content. - - `BetaManagedAgentsImageBlock object { source, type }` + - `BetaManagedAgentsImageBlock object` Image content specified directly as base64 data or as a reference via a URL. - - `BetaManagedAgentsDocumentBlock object { source, type, context, title }` + - `BetaManagedAgentsDocumentBlock object` Document content, either specified directly as base64 data, as text, or as a reference via a URL. - - `BetaManagedAgentsSearchResultBlock object { citations, content, source, 2 more }` + - `BetaManagedAgentsSearchResultBlock object` A block containing a web search result.
Whether the tool execution resulted in an error. - - `BetaManagedAgentsAgentThreadMessageReceivedEvent object { id, content, from_session_thread_id, 3 more }` + - `BetaManagedAgentsAgentThreadMessageReceivedEvent object` Delivery event written to the target thread's input stream when an agent-to-agent message arrives.
Message content blocks. - - `BetaManagedAgentsTextBlock object { text, type }` + - `BetaManagedAgentsTextBlock object` Regular text content. - - `BetaManagedAgentsImageBlock object { source, type }` + - `BetaManagedAgentsImageBlock object` Image content specified directly as base64 data or as a reference via a URL. - - `BetaManagedAgentsDocumentBlock object { source, type, context, title }` + - `BetaManagedAgentsDocumentBlock object` Document content, either specified directly as base64 data, as text, or as a reference via a URL. - - `BetaManagedAgentsRedactedBlock object { type }` + - `BetaManagedAgentsRedactedBlock object` Placeholder for content withheld by Anthropic model policy.
A timestamp in RFC 3339 format + format: date-time + - `type: "agent.thread_message_received"` - - `"agent.thread_message_received"` - - `from_agent_name: optional string or null` Name of the callable agent this message came from. Absent when received from the primary agent. - - `BetaManagedAgentsAgentThreadMessageSentEvent object { id, content, processed_at, 3 more }` + - `BetaManagedAgentsAgentThreadMessageSentEvent object` Observability event emitted to the sender's output stream when an agent-to-agent message is sent.
Message content blocks. - - `BetaManagedAgentsTextBlock object { text, type }` + - `BetaManagedAgentsTextBlock object` Regular text content. - - `BetaManagedAgentsImageBlock object { source, type }` + - `BetaManagedAgentsImageBlock object` Image content specified directly as base64 data or as a reference via a URL. - - `BetaManagedAgentsDocumentBlock object { source, type, context, title }` + - `BetaManagedAgentsDocumentBlock object` Document content, either specified directly as base64 data, as text, or as a reference via a URL. - - `BetaManagedAgentsRedactedBlock object { type }` + - `BetaManagedAgentsRedactedBlock object` Placeholder for content withheld by Anthropic model policy.
A timestamp in RFC 3339 format + format: date-time + - `to_session_thread_id: string` Public `sthr_` ID of the thread the message was sent to. - `type: "agent.thread_message_sent"` - - `"agent.thread_message_sent"` - - `to_agent_name: optional string or null` Name of the callable agent this message was sent to. Absent when sent to the primary agent. - - `BetaManagedAgentsAgentThreadContextCompactedEvent object { id, processed_at, type }` + - `BetaManagedAgentsAgentThreadContextCompactedEvent object` Indicates that context compaction (summarization) occurred during the session.
A timestamp in RFC 3339 format + format: date-time + - `type: "agent.thread_context_compacted"` - - `"agent.thread_context_compacted"` - - - `BetaManagedAgentsSessionErrorEvent object { id, error, processed_at, type }` + - `BetaManagedAgentsSessionErrorEvent object` An error event indicating a problem occurred during session execution.
An unknown or unexpected error occurred during session execution. A fallback variant; clients that don't recognize a new error code can match on `retry_status` and `message` alone. - - `BetaManagedAgentsUnknownError object { message, retry_status, type }` + - `BetaManagedAgentsUnknownError object` An unknown or unexpected error occurred during session execution. A fallback variant; clients that don't recognize a new error code can match on `retry_status` and `message` alone.
What the client should do next in response to this error. - - `BetaManagedAgentsRetryStatusRetrying object { type }` + - `BetaManagedAgentsRetryStatusRetrying object` The server is retrying automatically. Client should wait; the same error type may fire again as retrying, then once as exhausted when the retry budget runs out. - `type: "retrying"` - - `"retrying"` - - - `BetaManagedAgentsRetryStatusExhausted object { type }` + - `BetaManagedAgentsRetryStatusExhausted object` This turn is dead; queued inputs are flushed and the session returns to idle. Client may send a new prompt. - `type: "exhausted"` - - `"exhausted"` - - - `BetaManagedAgentsRetryStatusTerminal object { type }` + - `BetaManagedAgentsRetryStatusTerminal object` The session encountered a terminal error and will transition to `terminated` state. - `type: "terminal"` - - `"terminal"` - - `type: "unknown_error"` - - `"unknown_error"` - - - `BetaManagedAgentsModelOverloadedError object { message, retry_status, type }` + - `BetaManagedAgentsModelOverloadedError object` The model is currently overloaded. Emitted after automatic retries are exhausted.
What the client should do next in response to this error. - - `BetaManagedAgentsRetryStatusRetrying object { type }` + - `BetaManagedAgentsRetryStatusRetrying object` The server is retrying automatically. Client should wait; the same error type may fire again as retrying, then once as exhausted when the retry budget runs out. - - `BetaManagedAgentsRetryStatusExhausted object { type }` + - `BetaManagedAgentsRetryStatusExhausted object` This turn is dead; queued inputs are flushed and the session returns to idle. Client may send a new prompt. - - `BetaManagedAgentsRetryStatusTerminal object { type }` + - `BetaManagedAgentsRetryStatusTerminal object` The session encountered a terminal error and will transition to `terminated` state. - `type: "model_overloaded_error"` - - `"model_overloaded_error"` - - - `BetaManagedAgentsModelRateLimitedError object { message, retry_status, type }` + - `BetaManagedAgentsModelRateLimitedError object` The model request was rate-limited.
What the client should do next in response to this error. - - `BetaManagedAgentsRetryStatusRetrying object { type }` + - `BetaManagedAgentsRetryStatusRetrying object` The server is retrying automatically. Client should wait; the same error type may fire again as retrying, then once as exhausted when the retry budget runs out. - - `BetaManagedAgentsRetryStatusExhausted object { type }` + - `BetaManagedAgentsRetryStatusExhausted object` This turn is dead; queued inputs are flushed and the session returns to idle. Client may send a new prompt. - - `BetaManagedAgentsRetryStatusTerminal object { type }` + - `BetaManagedAgentsRetryStatusTerminal object` The session encountered a terminal error and will transition to `terminated` state. - `type: "model_rate_limited_error"` - - `"model_rate_limited_error"` - - - `BetaManagedAgentsModelRequestFailedError object { message, retry_status, type }` + - `BetaManagedAgentsModelRequestFailedError object` A model request failed for a reason other than overload or rate-limiting.
What the client should do next in response to this error. - - `BetaManagedAgentsRetryStatusRetrying object { type }` + - `BetaManagedAgentsRetryStatusRetrying object` The server is retrying automatically. Client should wait; the same error type may fire again as retrying, then once as exhausted when the retry budget runs out. - - `BetaManagedAgentsRetryStatusExhausted object { type }` + - `BetaManagedAgentsRetryStatusExhausted object` This turn is dead; queued inputs are flushed and the session returns to idle. Client may send a new prompt. - - `BetaManagedAgentsRetryStatusTerminal object { type }` + - `BetaManagedAgentsRetryStatusTerminal object` The session encountered a terminal error and will transition to `terminated` state. - `type: "model_request_failed_error"` - - `"model_request_failed_error"` - - - `BetaManagedAgentsMCPConnectionFailedError object { mcp_server_name, message, retry_status, type }` + - `BetaManagedAgentsMCPConnectionFailedError object` Failed to connect to an MCP server.
What the client should do next in response to this error. - - `BetaManagedAgentsRetryStatusRetrying object { type }` + - `BetaManagedAgentsRetryStatusRetrying object` The server is retrying automatically. Client should wait; the same error type may fire again as retrying, then once as exhausted when the retry budget runs out. - - `BetaManagedAgentsRetryStatusExhausted object { type }` + - `BetaManagedAgentsRetryStatusExhausted object` This turn is dead; queued inputs are flushed and the session returns to idle. Client may send a new prompt. - - `BetaManagedAgentsRetryStatusTerminal object { type }` + - `BetaManagedAgentsRetryStatusTerminal object` The session encountered a terminal error and will transition to `terminated` state. - `type: "mcp_connection_failed_error"` - - `"mcp_connection_failed_error"` - - - `BetaManagedAgentsMCPAuthenticationFailedError object { mcp_server_name, message, retry_status, type }` + - `BetaManagedAgentsMCPAuthenticationFailedError object` Authentication to an MCP server failed.
What the client should do next in response to this error. - - `BetaManagedAgentsRetryStatusRetrying object { type }` + - `BetaManagedAgentsRetryStatusRetrying object` The server is retrying automatically. Client should wait; the same error type may fire again as retrying, then once as exhausted when the retry budget runs out. - - `BetaManagedAgentsRetryStatusExhausted object { type }` + - `BetaManagedAgentsRetryStatusExhausted object` This turn is dead; queued inputs are flushed and the session returns to idle. Client may send a new prompt. - - `BetaManagedAgentsRetryStatusTerminal object { type }` + - `BetaManagedAgentsRetryStatusTerminal object` The session encountered a terminal error and will transition to `terminated` state. - `type: "mcp_authentication_failed_error"` - - `"mcp_authentication_failed_error"` - - - `BetaManagedAgentsBillingError object { message, retry_status, type }` + - `BetaManagedAgentsBillingError object` The caller's organization or workspace cannot make model requests — out of credits or spend limit reached. Retrying with the same credentials will not succeed; the caller must resolve the billing state.
What the client should do next in response to this error. - - `BetaManagedAgentsRetryStatusRetrying object { type }` + - `BetaManagedAgentsRetryStatusRetrying object` The server is retrying automatically. Client should wait; the same error type may fire again as retrying, then once as exhausted when the retry budget runs out. - - `BetaManagedAgentsRetryStatusExhausted object { type }` + - `BetaManagedAgentsRetryStatusExhausted object` This turn is dead; queued inputs are flushed and the session returns to idle. Client may send a new prompt. - - `BetaManagedAgentsRetryStatusTerminal object { type }` + - `BetaManagedAgentsRetryStatusTerminal object` The session encountered a terminal error and will transition to `terminated` state. - `type: "billing_error"` - - `"billing_error"` - - - `BetaManagedAgentsCredentialHostUnreachableError object { credential_id, message, retry_status, 2 more }` + - `BetaManagedAgentsCredentialHostUnreachableError object` An `environment_variable` credential's `auth.networking.allowed_hosts` includes a host the environment's network policy does not permit.
What the client should do next in response to this error. - - `BetaManagedAgentsRetryStatusRetrying object { type }` + - `BetaManagedAgentsRetryStatusRetrying object` The server is retrying automatically. Client should wait; the same error type may fire again as retrying, then once as exhausted when the retry budget runs out. - - `BetaManagedAgentsRetryStatusExhausted object { type }` + - `BetaManagedAgentsRetryStatusExhausted object` This turn is dead; queued inputs are flushed and the session returns to idle. Client may send a new prompt. - - `BetaManagedAgentsRetryStatusTerminal object { type }` + - `BetaManagedAgentsRetryStatusTerminal object` The session encountered a terminal error and will transition to `terminated` state. - `type: "credential_host_unreachable_error"` - - `"credential_host_unreachable_error"` - - `vault_id: string` ID of the vault containing the affected credential.
A timestamp in RFC 3339 format + format: date-time + - `type: "session.error"` - - `"session.error"` - - - `BetaManagedAgentsSessionStatusRescheduledEvent object { id, processed_at, type }` + - `BetaManagedAgentsSessionStatusRescheduledEvent object` Indicates the session is recovering from an error state and is rescheduled for execution.
A timestamp in RFC 3339 format + format: date-time + - `type: "session.status_rescheduled"` - - `"session.status_rescheduled"` - - - `BetaManagedAgentsSessionStatusRunningEvent object { id, processed_at, type }` + - `BetaManagedAgentsSessionStatusRunningEvent object` Indicates the session is actively running and the agent is working.
A timestamp in RFC 3339 format + format: date-time + - `type: "session.status_running"` - - `"session.status_running"` - - - `BetaManagedAgentsSessionStatusIdleEvent object { id, processed_at, stop_reason, type }` + - `BetaManagedAgentsSessionStatusIdleEvent object` Indicates the agent has paused and is awaiting user input.
A timestamp in RFC 3339 format + format: date-time + - `stop_reason: BetaManagedAgentsSessionEndTurn or BetaManagedAgentsSessionRequiresAction or BetaManagedAgentsSessionRetriesExhausted or BetaManagedAgentsSessionBudgetReached` The agent completed its turn naturally and is ready for the next user message. - - `BetaManagedAgentsSessionEndTurn object { type }` + - `BetaManagedAgentsSessionEndTurn object` The agent completed its turn naturally and is ready for the next user message. - `type: "end_turn"` - - `"end_turn"` - - - `BetaManagedAgentsSessionRequiresAction object { event_ids, type }` + - `BetaManagedAgentsSessionRequiresAction object` The agent is idle waiting on one or more blocking user-input events (tool confirmation, custom tool result, etc.). Resolving all of them transitions the session back to running.
- `type: "requires_action"` - - `"requires_action"` - - - `BetaManagedAgentsSessionRetriesExhausted object { type }` + - `BetaManagedAgentsSessionRetriesExhausted object` The turn ended because repeated errors exhausted the retry budget or an error escalated to `retry_status: 'exhausted'`. - `type: "retries_exhausted"` - - `"retries_exhausted"` - - - `BetaManagedAgentsSessionBudgetReached object { type }` + - `BetaManagedAgentsSessionBudgetReached object` The agent stopped because the session's tracked list cost reached its budget, or because its usage includes a model with no list price (which the budget cannot measure). Raise the budget to continue — or, if raising is rejected because a model has no list price, remove the budget. - `type: "budget_reached"` - - `"budget_reached"` - - `type: "session.status_idle"` - - `"session.status_idle"` - - - `BetaManagedAgentsSessionStatusTerminatedEvent object { id, processed_at, type }` + - `BetaManagedAgentsSessionStatusTerminatedEvent object` Indicates the session has terminated, either due to an error or completion.
A timestamp in RFC 3339 format + format: date-time + - `type: "session.status_terminated"` - - `"session.status_terminated"` - - - `BetaManagedAgentsSessionThreadCreatedEvent object { id, agent_name, processed_at, 2 more }` + - `BetaManagedAgentsSessionThreadCreatedEvent object` Emitted when a subagent is spawned as a new thread. Written to the parent thread's output stream so clients observing the session see child creation.
A timestamp in RFC 3339 format + format: date-time + - `session_thread_id: string` Public `sthr_` ID of the newly created thread. - `type: "session.thread_created"` - - `"session.thread_created"` - - - `BetaManagedAgentsSpanOutcomeEvaluationStartEvent object { id, iteration, outcome_id, 2 more }` + - `BetaManagedAgentsSpanOutcomeEvaluationStartEvent object` Emitted when an outcome evaluation cycle begins.
0-indexed revision cycle. 0 is the first evaluation; 1 is the re-evaluation after the first revision; etc. + format: int32 + - `outcome_id: string` The `outc_` ID of the outcome being evaluated.
A timestamp in RFC 3339 format + format: date-time + - `type: "span.outcome_evaluation_start"` - - `"span.outcome_evaluation_start"` - - - `BetaManagedAgentsSpanOutcomeEvaluationEndEvent object { id, explanation, iteration, 6 more }` + - `BetaManagedAgentsSpanOutcomeEvaluationEndEvent object` Emitted when an outcome evaluation cycle completes. Carries the verdict and aggregate token usage. A verdict of `needs_revision` means another evaluation cycle follows; `satisfied`, `max_iterations_reached`, `failed`, or `interrupted` are terminal — no further evaluation cycles follow.
0-indexed revision cycle, matching the corresponding `span.outcome_evaluation_start`. + format: int32 + - `outcome_evaluation_start_id: string` The id of the corresponding `span.outcome_evaluation_start` event.
A timestamp in RFC 3339 format + format: date-time + - `result: string` Evaluation verdict. 'satisfied': criteria met, session goes idle. 'needs_revision': criteria not met, another revision cycle follows. 'max_iterations_reached': evaluation budget exhausted with criteria still unmet — one final acknowledgment turn follows before the session goes idle, but no further evaluation runs. 'failed': grader determined the rubric does not apply to the deliverables. 'interrupted': user sent an interrupt while evaluation was in progress. - `type: "span.outcome_evaluation_end"` - - `"span.outcome_evaluation_end"` - - `usage: BetaManagedAgentsSpanModelUsage` Token usage for a single model request.
Tokens used to create prompt cache in this request. + format: int32 + - `cache_read_input_tokens: number` Tokens read from prompt cache in this request. + format: int32 + - `input_tokens: number` Input tokens consumed by this request. + format: int32 + - `output_tokens: number` Output tokens generated by this request. + format: int32 + - `speed: optional "standard" or "fast" or null` Inference speed mode. `fast` provides significantly faster output token generation at premium pricing. Not all models support `fast`; invalid combinations are rejected at create time.
- `"fast"` - - `BetaManagedAgentsSpanModelRequestStartEvent object { id, processed_at, type }` + - `BetaManagedAgentsSpanModelRequestStartEvent object` Emitted when a model request is initiated by the agent.
A timestamp in RFC 3339 format + format: date-time + - `type: "span.model_request_start"` - - `"span.model_request_start"` - - - `BetaManagedAgentsSpanModelRequestEndEvent object { id, is_error, model_request_start_id, 3 more }` + - `BetaManagedAgentsSpanModelRequestEndEvent object` Emitted when a model request completes.
A timestamp in RFC 3339 format + format: date-time + - `type: "span.model_request_end"` - - `"span.model_request_end"` - - - `BetaManagedAgentsSpanOutcomeEvaluationOngoingEvent object { id, iteration, outcome_id, 2 more }` + - `BetaManagedAgentsSpanOutcomeEvaluationOngoingEvent object` Periodic heartbeat emitted while an outcome evaluation cycle is in progress. Distinguishes 'evaluation is actively running' from 'evaluation is stuck' between the corresponding `span.outcome_evaluation_start` and `span.outcome_evaluation_end` events.
0-indexed revision cycle, matching the corresponding `span.outcome_evaluation_start`. + format: int32 + - `outcome_id: string` The `outc_` ID of the outcome being evaluated.
A timestamp in RFC 3339 format + format: date-time + - `type: "span.outcome_evaluation_ongoing"` - - `"span.outcome_evaluation_ongoing"` - - - `BetaManagedAgentsUserDefineOutcomeEvent object { id, description, max_iterations, 4 more }` + - `BetaManagedAgentsUserDefineOutcomeEvent object` Echo of a `user.define_outcome` input event. Carries the server-generated `outcome_id` that subsequent `span.outcome_evaluation_*` events reference.
Evaluate-then-revise cycles before giving up. Default 3, max 20. + format: int32 + - `outcome_id: string` Server-generated `outc_` ID for this outcome. Referenced by `span.outcome_evaluation_*` events and the session's `outcome_evaluations` list.
A timestamp in RFC 3339 format + format: date-time + - `rubric: BetaManagedAgentsFileRubric or BetaManagedAgentsTextRubric` Rubric for grading the quality of an outcome. - - `BetaManagedAgentsFileRubric object { file_id, type }` + - `BetaManagedAgentsFileRubric object` Rubric referenced by a file uploaded via the Files API.
- `type: "file"` - - `"file"` - - - `BetaManagedAgentsTextRubric object { content, type }` + - `BetaManagedAgentsTextRubric object` Rubric content provided inline as text.
- `type: "text"` - - `"text"` - - `type: "user.define_outcome"` - - `"user.define_outcome"` - - - `BetaManagedAgentsSessionDeletedEvent object { id, processed_at, type }` + - `BetaManagedAgentsSessionDeletedEvent object` Emitted when a session has been deleted. Terminates any active event stream — no further events will be emitted for this session.
A timestamp in RFC 3339 format + format: date-time + - `type: "session.deleted"` - - `"session.deleted"` - - - `BetaManagedAgentsSessionThreadStatusRunningEvent object { id, agent_name, processed_at, 2 more }` + - `BetaManagedAgentsSessionThreadStatusRunningEvent object` A session thread has begun executing. Emitted on the thread's own stream and cross-posted to the primary stream for child threads.
A timestamp in RFC 3339 format + format: date-time + - `session_thread_id: string` Public sthr_ ID of the thread that started running. - `type: "session.thread_status_running"` - - `"session.thread_status_running"` - - - `BetaManagedAgentsSessionThreadStatusIdleEvent object { id, agent_name, processed_at, 3 more }` + - `BetaManagedAgentsSessionThreadStatusIdleEvent object` A session thread has yielded and is awaiting input. Emitted on the thread's own stream and cross-posted to the primary stream for child threads.
A timestamp in RFC 3339 format + format: date-time + - `session_thread_id: string` Public sthr_ ID of the thread that went idle.
The agent completed its turn naturally and is ready for the next user message. - - `BetaManagedAgentsSessionEndTurn object { type }` + - `BetaManagedAgentsSessionEndTurn object` The agent completed its turn naturally and is ready for the next user message. - - `BetaManagedAgentsSessionRequiresAction object { event_ids, type }` + - `BetaManagedAgentsSessionRequiresAction object` The agent is idle waiting on one or more blocking user-input events (tool confirmation, custom tool result, etc.). Resolving all of them transitions the session back to running. - - `BetaManagedAgentsSessionRetriesExhausted object { type }` + - `BetaManagedAgentsSessionRetriesExhausted object` The turn ended because repeated errors exhausted the retry budget or an error escalated to `retry_status: 'exhausted'`. - - `BetaManagedAgentsSessionBudgetReached object { type }` + - `BetaManagedAgentsSessionBudgetReached object` The agent stopped because the session's tracked list cost reached its budget, or because its usage includes a model with no list price (which the budget cannot measure). Raise the budget to continue — or, if raising is rejected because a model has no list price, remove the budget. - `type: "session.thread_status_idle"` - - `"session.thread_status_idle"` - - - `BetaManagedAgentsSessionThreadStatusTerminatedEvent object { id, agent_name, processed_at, 2 more }` + - `BetaManagedAgentsSessionThreadStatusTerminatedEvent object` A session thread has terminated and will accept no further input. Emitted on the thread's own stream and cross-posted to the primary stream for child threads.
A timestamp in RFC 3339 format + format: date-time + - `session_thread_id: string` Public sthr_ ID of the thread that terminated. - `type: "session.thread_status_terminated"` - - `"session.thread_status_terminated"` - - - `BetaManagedAgentsUserToolResultEvent object { id, tool_use_id, type, 4 more }` + - `BetaManagedAgentsUserToolResultEvent object` Event sent by the client providing the result of an agent-toolset tool execution. Only valid on `self_hosted` environments, where sandbox-routed tools are executed by the client rather than the server.
- `type: "user.tool_result"` - - `"user.tool_result"` - - `content: optional array of BetaManagedAgentsTextBlock or BetaManagedAgentsImageBlock or BetaManagedAgentsDocumentBlock or BetaManagedAgentsSearchResultBlock` The result content returned by the tool. - - `BetaManagedAgentsTextBlock object { text, type }` + - `BetaManagedAgentsTextBlock object` Regular text content. - - `BetaManagedAgentsImageBlock object { source, type }` + - `BetaManagedAgentsImageBlock object` Image content specified directly as base64 data or as a reference via a URL. - - `BetaManagedAgentsDocumentBlock object { source, type, context, title }` + - `BetaManagedAgentsDocumentBlock object` Document content, either specified directly as base64 data, as text, or as a reference via a URL. - - `BetaManagedAgentsSearchResultBlock object { citations, content, source, 2 more }` + - `BetaManagedAgentsSearchResultBlock object` A block containing a web search result.
A timestamp in RFC 3339 format + format: date-time + - `session_thread_id: optional string or null` Routes this result to a subagent thread. Copy from the `agent.tool_use` event's `session_thread_id`. - - `BetaManagedAgentsSessionThreadStatusRescheduledEvent object { id, agent_name, processed_at, 2 more }` + - `BetaManagedAgentsSessionThreadStatusRescheduledEvent object` A session thread hit a transient error and is retrying automatically. Emitted on the thread's own stream and cross-posted to the primary stream for child threads.
A timestamp in RFC 3339 format + format: date-time + - `session_thread_id: string` Public sthr_ ID of the thread that is retrying. - `type: "session.thread_status_rescheduled"` - - `"session.thread_status_rescheduled"` - - - `BetaManagedAgentsSessionUpdatedEvent object { id, processed_at, type, 4 more }` + - `BetaManagedAgentsSessionUpdatedEvent object` Emitted when an UpdateSession request changed at least one field. Carries only the fields that changed; absent fields were not part of the update. The new configuration applies from the next turn.
A timestamp in RFC 3339 format + format: date-time + - `type: "session.updated"` - - `"session.updated"` - - `agent: optional BetaManagedAgentsSessionAgent or null` Resolved `agent` definition for a `session`. Snapshot of the `agent` at `session` creation time.
- `type: "url"` - - `"url"` - - `url: string` - `model: BetaManagedAgentsModelConfig`
How hard Claude works on each turn. Sets `output_config.effort` on every Messages call the session makes. - - `BetaManagedAgentsEffortLow object { type }` + - `BetaManagedAgentsEffortLow object` Low effort. Favors latency over reasoning depth. - `type: "low"` - - `"low"` - - - `BetaManagedAgentsEffortMedium object { type }` + - `BetaManagedAgentsEffortMedium object` Medium effort. Balances latency and reasoning depth. - `type: "medium"` - - `"medium"` - - - `BetaManagedAgentsEffortHigh object { type }` + - `BetaManagedAgentsEffortHigh object` High effort. Favors reasoning depth. - `type: "high"` - - `"high"` - - - `BetaManagedAgentsEffortXhigh object { type }` + - `BetaManagedAgentsEffortXhigh object` Extra-high effort. Not all models accept this level. - `type: "xhigh"` - - `"xhigh"` - - - `BetaManagedAgentsEffortMax object { type }` + - `BetaManagedAgentsEffortMax object` Maximum effort. Favors reasoning depth over latency. - `type: "max"` - - `"max"` - - `inference_geo: optional string` Geographic region for model inference. When unset, requests fall through to the workspace's default_inference_geo.
Full `agent` definitions the coordinator may spawn as session threads. - - `BetaManagedAgentsSessionThreadAgent object { id, description, mcp_servers, 7 more }` + - `BetaManagedAgentsSessionThreadAgent object` Resolved `agent` definition for a single `session_thread`. Snapshot of the agent at thread creation time. The multiagent roster is not repeated here; read it from `Session.agent`.
- `skills: array of BetaManagedAgentsAnthropicSkill or BetaManagedAgentsCustomSkill` - - `BetaManagedAgentsAnthropicSkill object { skill_id, type, version }` + - `BetaManagedAgentsAnthropicSkill object` A resolved Anthropic-managed skill.
- `type: "anthropic"` - - `"anthropic"` - - `version: string` - - `BetaManagedAgentsCustomSkill object { skill_id, type, version }` + - `BetaManagedAgentsCustomSkill object` A resolved user-created custom skill.
- `type: "custom"` - - `"custom"` - - `version: string` - `system: string or null` - `tools: array of BetaManagedAgentsAgentToolset20260401 or BetaManagedAgentsMCPToolset or BetaManagedAgentsCustomTool` - - `BetaManagedAgentsAgentToolset20260401 object { configs, default_config, type }` + - `BetaManagedAgentsAgentToolset20260401 object` - `configs: array of BetaManagedAgentsAgentToolConfig` - - `BetaManagedAgentsBashToolConfig object { enabled, name, permission_policy, type }` + - `BetaManagedAgentsBashToolConfig object` Configuration for the bash tool.
- `name: "bash"` - - `"bash"` - - `permission_policy: BetaManagedAgentsAlwaysAllowPolicy or BetaManagedAgentsAlwaysAskPolicy` Permission policy for tool execution. - - `BetaManagedAgentsAlwaysAllowPolicy object { type }` + - `BetaManagedAgentsAlwaysAllowPolicy object` Tool calls are automatically approved without user confirmation. - `type: "always_allow"` - - `"always_allow"` - - - `BetaManagedAgentsAlwaysAskPolicy object { type }` + - `BetaManagedAgentsAlwaysAskPolicy object` Tool calls require user confirmation before execution. - `type: "always_ask"` - - `"always_ask"` - - `type: "bash"` - - `"bash"` - - - `BetaManagedAgentsEditToolConfig object { enabled, name, permission_policy, type }` + - `BetaManagedAgentsEditToolConfig object` Configuration for the edit tool.
- `name: "edit"` - - `"edit"` - - `permission_policy: BetaManagedAgentsAlwaysAllowPolicy or BetaManagedAgentsAlwaysAskPolicy` Permission policy for tool execution. - - `BetaManagedAgentsAlwaysAllowPolicy object { type }` + - `BetaManagedAgentsAlwaysAllowPolicy object` Tool calls are automatically approved without user confirmation. - - `BetaManagedAgentsAlwaysAskPolicy object { type }` + - `BetaManagedAgentsAlwaysAskPolicy object` Tool calls require user confirmation before execution. - `type: "edit"` - - `"edit"` - - - `BetaManagedAgentsReadToolConfig object { enabled, name, permission_policy, type }` + - `BetaManagedAgentsReadToolConfig object` Configuration for the read tool.
- `name: "read"` - - `"read"` - - `permission_policy: BetaManagedAgentsAlwaysAllowPolicy or BetaManagedAgentsAlwaysAskPolicy` Permission policy for tool execution. - - `BetaManagedAgentsAlwaysAllowPolicy object { type }` + - `BetaManagedAgentsAlwaysAllowPolicy object` Tool calls are automatically approved without user confirmation. - - `BetaManagedAgentsAlwaysAskPolicy object { type }` + - `BetaManagedAgentsAlwaysAskPolicy object` Tool calls require user confirmation before execution. - `type: "read"` - - `"read"` - - - `BetaManagedAgentsWriteToolConfig object { enabled, name, permission_policy, type }` + - `BetaManagedAgentsWriteToolConfig object` Configuration for the write tool.
- `name: "write"` - - `"write"` - - `permission_policy: BetaManagedAgentsAlwaysAllowPolicy or BetaManagedAgentsAlwaysAskPolicy` Permission policy for tool execution. - - `BetaManagedAgentsAlwaysAllowPolicy object { type }` + - `BetaManagedAgentsAlwaysAllowPolicy object` Tool calls are automatically approved without user confirmation. - - `BetaManagedAgentsAlwaysAskPolicy object { type }` + - `BetaManagedAgentsAlwaysAskPolicy object` Tool calls require user confirmation before execution. - `type: "write"` - - `"write"` - - - `BetaManagedAgentsGlobToolConfig object { enabled, name, permission_policy, type }` + - `BetaManagedAgentsGlobToolConfig object` Configuration for the glob tool.
- `name: "glob"` - - `"glob"` - - `permission_policy: BetaManagedAgentsAlwaysAllowPolicy or BetaManagedAgentsAlwaysAskPolicy` Permission policy for tool execution. - - `BetaManagedAgentsAlwaysAllowPolicy object { type }` + - `BetaManagedAgentsAlwaysAllowPolicy object` Tool calls are automatically approved without user confirmation. - - `BetaManagedAgentsAlwaysAskPolicy object { type }` + - `BetaManagedAgentsAlwaysAskPolicy object` Tool calls require user confirmation before execution. - `type: "glob"` - - `"glob"` - - - `BetaManagedAgentsGrepToolConfig object { enabled, name, permission_policy, type }` + - `BetaManagedAgentsGrepToolConfig object` Configuration for the grep tool.
- `name: "grep"` - - `"grep"` - - `permission_policy: BetaManagedAgentsAlwaysAllowPolicy or BetaManagedAgentsAlwaysAskPolicy` Permission policy for tool execution. - - `BetaManagedAgentsAlwaysAllowPolicy object { type }` + - `BetaManagedAgentsAlwaysAllowPolicy object` Tool calls are automatically approved without user confirmation. - - `BetaManagedAgentsAlwaysAskPolicy object { type }` + - `BetaManagedAgentsAlwaysAskPolicy object` Tool calls require user confirmation before execution. - `type: "grep"` - - `"grep"` - - - `BetaManagedAgentsWebFetchToolConfig object { enabled, name, permission_policy, 4 more }` + - `BetaManagedAgentsWebFetchToolConfig object` Configuration for the web_fetch tool.
- `name: "web_fetch"` - - `"web_fetch"` - - `permission_policy: BetaManagedAgentsAlwaysAllowPolicy or BetaManagedAgentsAlwaysAskPolicy` Permission policy for tool execution. - - `BetaManagedAgentsAlwaysAllowPolicy object { type }` + - `BetaManagedAgentsAlwaysAllowPolicy object` Tool calls are automatically approved without user confirmation. - - `BetaManagedAgentsAlwaysAskPolicy object { type }` + - `BetaManagedAgentsAlwaysAskPolicy object` Tool calls require user confirmation before execution. - `type: "web_fetch"` - - `"web_fetch"` - - `allowed_domains: optional array of string` - `blocked_domains: optional array of string` - `max_content_tokens: optional number or null` - - `BetaManagedAgentsWebSearchToolConfig object { enabled, name, permission_policy, 4 more }` + format: int32 + + - `BetaManagedAgentsWebSearchToolConfig object` Configuration for the web_search tool.
- `name: "web_search"` - - `"web_search"` - - `permission_policy: BetaManagedAgentsAlwaysAllowPolicy or BetaManagedAgentsAlwaysAskPolicy` Permission policy for tool execution. - - `BetaManagedAgentsAlwaysAllowPolicy object { type }` + - `BetaManagedAgentsAlwaysAllowPolicy object` Tool calls are automatically approved without user confirmation. - - `BetaManagedAgentsAlwaysAskPolicy object { type }` + - `BetaManagedAgentsAlwaysAskPolicy object` Tool calls require user confirmation before execution. - `type: "web_search"` - - `"web_search"` - - `allowed_domains: optional array of string` - `blocked_domains: optional array of string`
Location precision. Only "approximate" is supported. - - `"approximate"` - - `city: optional string or null` City name. + minLength: 1, maxLength: 255 + - `country: optional string or null` Two-letter ISO 3166-1 country code, uppercase.
Region or state name. + minLength: 1, maxLength: 255 + - `timezone: optional string or null` IANA timezone identifier, e.g. "America/Los_Angeles". + minLength: 1, maxLength: 255 + - `default_config: BetaManagedAgentsAgentToolsetDefaultConfig` Resolved default configuration for agent tools.
Permission policy for tool execution. - - `BetaManagedAgentsAlwaysAllowPolicy object { type }` + - `BetaManagedAgentsAlwaysAllowPolicy object` Tool calls are automatically approved without user confirmation. - - `BetaManagedAgentsAlwaysAskPolicy object { type }` + - `BetaManagedAgentsAlwaysAskPolicy object` Tool calls require user confirmation before execution. - `type: "agent_toolset_20260401"` - - `"agent_toolset_20260401"` - - - `BetaManagedAgentsMCPToolset object { configs, default_config, mcp_server_name, type }` + - `BetaManagedAgentsMCPToolset object` - `configs: array of BetaManagedAgentsMCPToolConfig`
Permission policy for tool execution. - - `BetaManagedAgentsAlwaysAllowPolicy object { type }` + - `BetaManagedAgentsAlwaysAllowPolicy object` Tool calls are automatically approved without user confirmation. - - `BetaManagedAgentsAlwaysAskPolicy object { type }` + - `BetaManagedAgentsAlwaysAskPolicy object` Tool calls require user confirmation before execution.
Permission policy for tool execution. - - `BetaManagedAgentsAlwaysAllowPolicy object { type }` + - `BetaManagedAgentsAlwaysAllowPolicy object` Tool calls are automatically approved without user confirmation. - - `BetaManagedAgentsAlwaysAskPolicy object { type }` + - `BetaManagedAgentsAlwaysAskPolicy object` Tool calls require user confirmation before execution.
- `type: "mcp_toolset"` - - `"mcp_toolset"` - - - `BetaManagedAgentsCustomTool object { description, input_schema, name, type }` + - `BetaManagedAgentsCustomTool object` A custom tool as returned in API responses.
- `type: "object"` - - `"object"` - - `properties: optional map[unknown] or null` - `required: optional array of string or null`
- `type: "custom"` - - `"custom"` - - `type: "agent"` - - `"agent"` - - `version: number` - - `BetaManagedAgentsAdvisor object { model, type }` + format: int32 + + - `BetaManagedAgentsAdvisor object` Platform advisor roster entry: a model the session's primary thread may consult mid-turn.
- `type: "advisor"` - - `"advisor"` - - `type: "coordinator"` - - `"coordinator"` - - `name: string` - `skills: array of BetaManagedAgentsAnthropicSkill or BetaManagedAgentsCustomSkill` - - `BetaManagedAgentsAnthropicSkill object { skill_id, type, version }` + - `BetaManagedAgentsAnthropicSkill object` A resolved Anthropic-managed skill. - - `BetaManagedAgentsCustomSkill object { skill_id, type, version }` + - `BetaManagedAgentsCustomSkill object` A resolved user-created custom skill.
- `tools: array of BetaManagedAgentsAgentToolset20260401 or BetaManagedAgentsMCPToolset or BetaManagedAgentsCustomTool` - - `BetaManagedAgentsAgentToolset20260401 object { configs, default_config, type }` - - - `BetaManagedAgentsMCPToolset object { configs, default_config, mcp_server_name, type }` - - - `BetaManagedAgentsCustomTool object { description, input_schema, name, type }` + - `BetaManagedAgentsAgentToolset20260401 object` + + - `BetaManagedAgentsMCPToolset object` + + - `BetaManagedAgentsCustomTool object` A custom tool as returned in API responses. - `type: "agent"` - - `"agent"` - - `version: number` + format: int32 + - `budget: optional BetaManagedAgentsBudgetLimit or null` A hard spend ceiling. The session stops issuing new model requests once the tracked list cost reaches `max_list_cost`.
Uppercase ISO-4217 currency code. `USD` is the only currency currently supported; the accepted set is closed and grows only when a new currency is priced. - - `"USD"` - - `type: "limit"` - - `"limit"` - - `metadata: optional map[string]` The session's full metadata bag after the update. Present when the update set non-empty metadata; absent when metadata was unchanged or cleared to empty.
The session's new title. Present only when the update changed it. - - `BetaManagedAgentsSystemMessageEvent object { id, content, type, processed_at }` + - `BetaManagedAgentsSystemMessageEvent object` A mid-conversation system message event. Carries system-role content that is appended to the session as a `role: "system"` turn.
The text content. + minLength: 1 + - `type: "text"` - - `"text"` - - `type: "system.message"` - - `"system.message"` - - `processed_at: optional string or null` A timestamp in RFC 3339 format - - `BetaManagedAgentsSessionUsageEvent object { id, processed_at, type, 2 more }` + format: date-time + + - `BetaManagedAgentsSessionUsageEvent object` Periodic snapshot of the session's cumulative usage and tracked list cost.
A timestamp in RFC 3339 format + format: date-time + - `type: "session.usage"` - - `"session.usage"` - - `usage: BetaManagedAgentsSessionUsageSnapshot` Point-in-time snapshot of a session's cumulative usage.
Cumulative time in seconds during which the session had at least one thread in running status. Overlapping activity from concurrent threads is counted once. This is the duration the session's runtime cost is priced on. + format: double + - `cache_creation: optional BetaManagedAgentsCacheCreationUsage` Prompt-cache creation token usage broken down by cache lifetime.
Tokens used to create 1-hour ephemeral cache entries. + format: int32 + - `ephemeral_5m_input_tokens: optional number` Tokens used to create 5-minute ephemeral cache entries. + format: int32 + - `cache_read_input_tokens: optional number` Total tokens read from prompt cache. + format: int32 + - `input_tokens: optional number` Total input tokens consumed across all turns. + format: int32 + - `list_cost: optional BetaMonetaryAmount` A monetary amount in a specific currency.
Total output tokens generated across all turns. + format: int32 + - `server_tool_use: optional BetaManagedAgentsServerToolUsage` Cumulative count of server-executed tool invocations, broken down by tool.
Number of server-executed web fetch requests. + format: int32 + - `web_search_requests: optional number` Number of server-executed web search requests. + format: int32 + - `budget: optional BetaManagedAgentsBudgetLimit or null` A hard spend ceiling. The session stops issuing new model requests once the tracked list cost reaches `max_list_cost`.
### Example -```http +```bash curl https://api.anthropic.com/v1/sessions/$SESSION_ID/threads/$THREAD_ID/events \ -H 'anthropic-version: 2023-06-01' \ -H 'anthropic-beta: managed-agents-2026-04-01' \ -H "X-Api-Key: $ANTHROPIC_API_KEY" ``` -#### Response +#### Response (200) ```json {
## Stream Session Thread Events -**get** `/v1/sessions/{session_id}/threads/{thread_id}/stream` +**GET** `/v1/sessions/{session_id}/threads/{thread_id}/stream` Stream Session Thread Events -### Path Parameters +### Path parameters - `session_id: string` - `thread_id: string` -### Query Parameters +### Query parameters - `event_deltas: optional array of BetaManagedAgentsDeltaType`
- `"agent.thinking"` -### Header Parameters +### Headers - `"anthropic-beta": optional array of AnthropicBeta`
Server-sent event in a single thread's stream. - - `BetaManagedAgentsUserMessageEvent object { id, content, type, processed_at }` + - `BetaManagedAgentsUserMessageEvent object` A user message event in the session conversation.
Array of content blocks comprising the user message. - - `BetaManagedAgentsTextBlock object { text, type }` + - `BetaManagedAgentsTextBlock object` Regular text content.
The text content. + minLength: 1 + - `type: "text"` - - `"text"` - - - `BetaManagedAgentsImageBlock object { source, type }` + - `BetaManagedAgentsImageBlock object` Image content specified directly as base64 data or as a reference via a URL.
Union type for image source variants. - - `BetaManagedAgentsBase64ImageSource object { data, media_type, type }` + - `BetaManagedAgentsBase64ImageSource object` Base64-encoded image data.
Base64-encoded image data. + minLength: 1 + - `media_type: string` MIME type of the image (e.g., "image/png", "image/jpeg", "image/gif", "image/webp"). + minLength: 1 + - `type: "base64"` - - `"base64"` - - - `BetaManagedAgentsURLImageSource object { type, url }` + - `BetaManagedAgentsURLImageSource object` Image referenced by URL. - `type: "url"` - - `"url"` - - `url: string` URL of the image to fetch. - - `BetaManagedAgentsFileImageSource object { file_id, type }` + minLength: 1 + + - `BetaManagedAgentsFileImageSource object` Image referenced by file ID.
ID of a previously uploaded file. + minLength: 1 + - `type: "file"` - - `"file"` - - `type: "image"` - - `"image"` - - - `BetaManagedAgentsDocumentBlock object { source, type, context, title }` + - `BetaManagedAgentsDocumentBlock object` Document content, either specified directly as base64 data, as text, or as a reference via a URL.
Union type for document source variants. - - `BetaManagedAgentsBase64DocumentSource object { data, media_type, type }` + - `BetaManagedAgentsBase64DocumentSource object` Base64-encoded document data.
Base64-encoded document data. + minLength: 1 + - `media_type: string` MIME type of the document (e.g., "application/pdf"). + minLength: 1 + - `type: "base64"` - - `"base64"` - - - `BetaManagedAgentsPlainTextDocumentSource object { data, media_type, type }` + - `BetaManagedAgentsPlainTextDocumentSource object` Plain text document content.
The plain text content. + minLength: 1 + - `media_type: "text/plain"` MIME type of the text content. Must be "text/plain". - - `"text/plain"` - - `type: "text"` - - `"text"` - - - `BetaManagedAgentsURLDocumentSource object { type, url }` + - `BetaManagedAgentsURLDocumentSource object` Document referenced by URL. - `type: "url"` - - `"url"` - - `url: string` URL of the document to fetch. - - `BetaManagedAgentsFileDocumentSource object { file_id, type }` + minLength: 1 + + - `BetaManagedAgentsFileDocumentSource object` Document referenced by file ID.
ID of a previously uploaded file. + minLength: 1 + - `type: "file"` - - `"file"` - - `type: "document"` - - `"document"` - - `context: optional string or null` Additional context about the document for the model.
The title of the document. - - `BetaManagedAgentsRedactedBlock object { type }` + - `BetaManagedAgentsRedactedBlock object` Placeholder for content withheld by Anthropic model policy. - `type: "redacted"` - - `"redacted"` - - `type: "user.message"` - - `"user.message"` - - `processed_at: optional string or null` A timestamp in RFC 3339 format - - `BetaManagedAgentsUserInterruptEvent object { id, type, processed_at, session_thread_id }` + format: date-time + + - `BetaManagedAgentsUserInterruptEvent object` An interrupt event that pauses agent execution and returns control to the user.
- `type: "user.interrupt"` - - `"user.interrupt"` - - `processed_at: optional string or null` A timestamp in RFC 3339 format + format: date-time + - `session_thread_id: optional string or null` If absent, interrupts every non-archived thread in a multiagent session (or the primary alone in a single-agent session). If present, interrupts only the named thread. - - `BetaManagedAgentsUserToolConfirmationEvent object { id, result, tool_use_id, 4 more }` + - `BetaManagedAgentsUserToolConfirmationEvent object` A tool confirmation event that approves or denies a pending tool execution.
- `type: "user.tool_confirmation"` - - `"user.tool_confirmation"` - - `deny_message: optional string or null` Optional message providing context for a 'deny' decision. Only allowed when result is 'deny'. + maxLength: 10000 + - `processed_at: optional string or null` A timestamp in RFC 3339 format + format: date-time + - `session_thread_id: optional string or null` When set, the confirmation routes to this subagent's thread rather than the primary. Echo this from the `session_thread_id` on the `agent.tool_use` or `agent.mcp_tool_use` event that prompted the approval. - - `BetaManagedAgentsUserCustomToolResultEvent object { id, custom_tool_use_id, type, 4 more }` + - `BetaManagedAgentsUserCustomToolResultEvent object` Event sent by the client providing the result of a custom tool execution.
- `type: "user.custom_tool_result"` - - `"user.custom_tool_result"` - - `content: optional array of BetaManagedAgentsTextBlock or BetaManagedAgentsImageBlock or BetaManagedAgentsDocumentBlock or BetaManagedAgentsSearchResultBlock` The result content returned by the tool. - - `BetaManagedAgentsTextBlock object { text, type }` + - `BetaManagedAgentsTextBlock object` Regular text content. - - `BetaManagedAgentsImageBlock object { source, type }` + - `BetaManagedAgentsImageBlock object` Image content specified directly as base64 data or as a reference via a URL. - - `BetaManagedAgentsDocumentBlock object { source, type, context, title }` + - `BetaManagedAgentsDocumentBlock object` Document content, either specified directly as base64 data, as text, or as a reference via a URL. - - `BetaManagedAgentsSearchResultBlock object { citations, content, source, 2 more }` + - `BetaManagedAgentsSearchResultBlock object` A block containing a web search result.
The text content. + minLength: 1 + - `type: "text"` - - `"text"` - - `source: string` The URL source of the search result. + minLength: 1 + - `title: string` The title of the search result. + minLength: 1 + - `type: "search_result"` - - `"search_result"` - - `is_error: optional boolean or null` Whether the tool execution resulted in an error.
A timestamp in RFC 3339 format + format: date-time + - `session_thread_id: optional string or null` Routes this result to a subagent thread. Copy from the `agent.custom_tool_use` event's `session_thread_id`. - - `BetaManagedAgentsAgentCustomToolUseEvent object { id, input, name, 3 more }` + - `BetaManagedAgentsAgentCustomToolUseEvent object` Event emitted when the agent calls a custom tool. The session goes idle until the client sends a `user.custom_tool_result` event with the result.
A timestamp in RFC 3339 format + format: date-time + - `type: "agent.custom_tool_use"` - - `"agent.custom_tool_use"` - - `session_thread_id: optional string or null` When set, this event was cross-posted from a subagent's thread to surface its custom tool use on the primary thread's stream. Empty on the thread's own events. Echo this on a `user.custom_tool_result` event to route the result back. - - `BetaManagedAgentsAgentMessageEvent object { id, content, processed_at, type }` + - `BetaManagedAgentsAgentMessageEvent object` An agent response event in the session conversation.
Array of text blocks comprising the agent response. - - `BetaManagedAgentsTextBlock object { text, type }` + - `BetaManagedAgentsTextBlock object` Regular text content. - - `BetaManagedAgentsRedactedBlock object { type }` + - `BetaManagedAgentsRedactedBlock object` Placeholder for content withheld by Anthropic model policy.
A timestamp in RFC 3339 format + format: date-time + - `type: "agent.message"` - - `"agent.message"` - - - `BetaManagedAgentsAgentThinkingEvent object { id, processed_at, type }` + - `BetaManagedAgentsAgentThinkingEvent object` Indicates the agent is making forward progress via extended thinking. A progress signal, not a content carrier.
A timestamp in RFC 3339 format + format: date-time + - `type: "agent.thinking"` - - `"agent.thinking"` - - - `BetaManagedAgentsAgentMCPToolUseEvent object { id, input, mcp_server_name, 5 more }` + - `BetaManagedAgentsAgentMCPToolUseEvent object` Event emitted when the agent invokes a tool provided by an MCP server.
A timestamp in RFC 3339 format + format: date-time + - `type: "agent.mcp_tool_use"` - - `"agent.mcp_tool_use"` - - `evaluated_permission: optional "allow" or "ask" or "deny"` AgentEvaluatedPermission enum
When set, this event was cross-posted from a subagent's thread to surface its permission request on the primary thread's stream. Empty on the thread's own events. Echo this on a `user.tool_confirmation` event to route the approval back. - - `BetaManagedAgentsAgentMCPToolResultEvent object { id, mcp_tool_use_id, processed_at, 3 more }` + - `BetaManagedAgentsAgentMCPToolResultEvent object` Event representing the result of an MCP tool execution.
A timestamp in RFC 3339 format + format: date-time + - `type: "agent.mcp_tool_result"` - - `"agent.mcp_tool_result"` - - `content: optional array of BetaManagedAgentsTextBlock or BetaManagedAgentsImageBlock or BetaManagedAgentsDocumentBlock or BetaManagedAgentsSearchResultBlock` The result content returned by the tool. - - `BetaManagedAgentsTextBlock object { text, type }` + - `BetaManagedAgentsTextBlock object` Regular text content. - - `BetaManagedAgentsImageBlock object { source, type }` + - `BetaManagedAgentsImageBlock object` Image content specified directly as base64 data or as a reference via a URL. - - `BetaManagedAgentsDocumentBlock object { source, type, context, title }` + - `BetaManagedAgentsDocumentBlock object` Document content, either specified directly as base64 data, as text, or as a reference via a URL. - - `BetaManagedAgentsSearchResultBlock object { citations, content, source, 2 more }` + - `BetaManagedAgentsSearchResultBlock object` A block containing a web search result.
Whether the tool execution resulted in an error. - - `BetaManagedAgentsAgentToolUseEvent object { id, input, name, 4 more }` + - `BetaManagedAgentsAgentToolUseEvent object` Event emitted when the agent invokes a built-in agent tool.
A timestamp in RFC 3339 format + format: date-time + - `type: "agent.tool_use"` - - `"agent.tool_use"` - - `evaluated_permission: optional "allow" or "ask" or "deny"` AgentEvaluatedPermission enum
When set, this event was cross-posted from a subagent's thread to surface its permission request on the primary thread's stream. Empty on the thread's own events. Echo this on a `user.tool_confirmation` event to route the approval back. - - `BetaManagedAgentsAgentToolResultEvent object { id, processed_at, tool_use_id, 3 more }` + - `BetaManagedAgentsAgentToolResultEvent object` Event representing the result of an agent tool execution.
A timestamp in RFC 3339 format + format: date-time + - `tool_use_id: string` The id of the `agent.tool_use` event this result corresponds to. - `type: "agent.tool_result"` - - `"agent.tool_result"` - - `content: optional array of BetaManagedAgentsTextBlock or BetaManagedAgentsImageBlock or BetaManagedAgentsDocumentBlock or BetaManagedAgentsSearchResultBlock` The result content returned by the tool. - - `BetaManagedAgentsTextBlock object { text, type }` + - `BetaManagedAgentsTextBlock object` Regular text content. - - `BetaManagedAgentsImageBlock object { source, type }` + - `BetaManagedAgentsImageBlock object` Image content specified directly as base64 data or as a reference via a URL. - - `BetaManagedAgentsDocumentBlock object { source, type, context, title }` + - `BetaManagedAgentsDocumentBlock object` Document content, either specified directly as base64 data, as text, or as a reference via a URL. - - `BetaManagedAgentsSearchResultBlock object { citations, content, source, 2 more }` + - `BetaManagedAgentsSearchResultBlock object` A block containing a web search result.
Whether the tool execution resulted in an error. - - `BetaManagedAgentsAgentThreadMessageReceivedEvent object { id, content, from_session_thread_id, 3 more }` + - `BetaManagedAgentsAgentThreadMessageReceivedEvent object` Delivery event written to the target thread's input stream when an agent-to-agent message arrives.
Message content blocks. - - `BetaManagedAgentsTextBlock object { text, type }` + - `BetaManagedAgentsTextBlock object` Regular text content. - - `BetaManagedAgentsImageBlock object { source, type }` + - `BetaManagedAgentsImageBlock object` Image content specified directly as base64 data or as a reference via a URL. - - `BetaManagedAgentsDocumentBlock object { source, type, context, title }` + - `BetaManagedAgentsDocumentBlock object` Document content, either specified directly as base64 data, as text, or as a reference via a URL. - - `BetaManagedAgentsRedactedBlock object { type }` + - `BetaManagedAgentsRedactedBlock object` Placeholder for content withheld by Anthropic model policy.
A timestamp in RFC 3339 format + format: date-time + - `type: "agent.thread_message_received"` - - `"agent.thread_message_received"` - - `from_agent_name: optional string or null` Name of the callable agent this message came from. Absent when received from the primary agent. - - `BetaManagedAgentsAgentThreadMessageSentEvent object { id, content, processed_at, 3 more }` + - `BetaManagedAgentsAgentThreadMessageSentEvent object` Observability event emitted to the sender's output stream when an agent-to-agent message is sent.
Message content blocks. - - `BetaManagedAgentsTextBlock object { text, type }` + - `BetaManagedAgentsTextBlock object` Regular text content. - - `BetaManagedAgentsImageBlock object { source, type }` + - `BetaManagedAgentsImageBlock object` Image content specified directly as base64 data or as a reference via a URL. - - `BetaManagedAgentsDocumentBlock object { source, type, context, title }` + - `BetaManagedAgentsDocumentBlock object` Document content, either specified directly as base64 data, as text, or as a reference via a URL. - - `BetaManagedAgentsRedactedBlock object { type }` + - `BetaManagedAgentsRedactedBlock object` Placeholder for content withheld by Anthropic model policy.
A timestamp in RFC 3339 format + format: date-time + - `to_session_thread_id: string` Public `sthr_` ID of the thread the message was sent to. - `type: "agent.thread_message_sent"` - - `"agent.thread_message_sent"` - - `to_agent_name: optional string or null` Name of the callable agent this message was sent to. Absent when sent to the primary agent. - - `BetaManagedAgentsAgentThreadContextCompactedEvent object { id, processed_at, type }` + - `BetaManagedAgentsAgentThreadContextCompactedEvent object` Indicates that context compaction (summarization) occurred during the session.
A timestamp in RFC 3339 format + format: date-time + - `type: "agent.thread_context_compacted"` - - `"agent.thread_context_compacted"` - - - `BetaManagedAgentsSessionErrorEvent object { id, error, processed_at, type }` + - `BetaManagedAgentsSessionErrorEvent object` An error event indicating a problem occurred during session execution.
An unknown or unexpected error occurred during session execution. A fallback variant; clients that don't recognize a new error code can match on `retry_status` and `message` alone. - - `BetaManagedAgentsUnknownError object { message, retry_status, type }` + - `BetaManagedAgentsUnknownError object` An unknown or unexpected error occurred during session execution. A fallback variant; clients that don't recognize a new error code can match on `retry_status` and `message` alone.
What the client should do next in response to this error. - - `BetaManagedAgentsRetryStatusRetrying object { type }` + - `BetaManagedAgentsRetryStatusRetrying object` The server is retrying automatically. Client should wait; the same error type may fire again as retrying, then once as exhausted when the retry budget runs out. - `type: "retrying"` - - `"retrying"` - - - `BetaManagedAgentsRetryStatusExhausted object { type }` + - `BetaManagedAgentsRetryStatusExhausted object` This turn is dead; queued inputs are flushed and the session returns to idle. Client may send a new prompt. - `type: "exhausted"` - - `"exhausted"` - - - `BetaManagedAgentsRetryStatusTerminal object { type }` + - `BetaManagedAgentsRetryStatusTerminal object` The session encountered a terminal error and will transition to `terminated` state. - `type: "terminal"` - - `"terminal"` - - `type: "unknown_error"` - - `"unknown_error"` - - - `BetaManagedAgentsModelOverloadedError object { message, retry_status, type }` + - `BetaManagedAgentsModelOverloadedError object` The model is currently overloaded. Emitted after automatic retries are exhausted.
What the client should do next in response to this error. - - `BetaManagedAgentsRetryStatusRetrying object { type }` + - `BetaManagedAgentsRetryStatusRetrying object` The server is retrying automatically. Client should wait; the same error type may fire again as retrying, then once as exhausted when the retry budget runs out. - - `BetaManagedAgentsRetryStatusExhausted object { type }` + - `BetaManagedAgentsRetryStatusExhausted object` This turn is dead; queued inputs are flushed and the session returns to idle. Client may send a new prompt. - - `BetaManagedAgentsRetryStatusTerminal object { type }` + - `BetaManagedAgentsRetryStatusTerminal object` The session encountered a terminal error and will transition to `terminated` state. - `type: "model_overloaded_error"` - - `"model_overloaded_error"` - - - `BetaManagedAgentsModelRateLimitedError object { message, retry_status, type }` + - `BetaManagedAgentsModelRateLimitedError object` The model request was rate-limited.
What the client should do next in response to this error. - - `BetaManagedAgentsRetryStatusRetrying object { type }` + - `BetaManagedAgentsRetryStatusRetrying object` The server is retrying automatically. Client should wait; the same error type may fire again as retrying, then once as exhausted when the retry budget runs out. - - `BetaManagedAgentsRetryStatusExhausted object { type }` + - `BetaManagedAgentsRetryStatusExhausted object` This turn is dead; queued inputs are flushed and the session returns to idle. Client may send a new prompt. - - `BetaManagedAgentsRetryStatusTerminal object { type }` + - `BetaManagedAgentsRetryStatusTerminal object` The session encountered a terminal error and will transition to `terminated` state. - `type: "model_rate_limited_error"` - - `"model_rate_limited_error"` - - - `BetaManagedAgentsModelRequestFailedError object { message, retry_status, type }` + - `BetaManagedAgentsModelRequestFailedError object` A model request failed for a reason other than overload or rate-limiting.
What the client should do next in response to this error. - - `BetaManagedAgentsRetryStatusRetrying object { type }` + - `BetaManagedAgentsRetryStatusRetrying object` The server is retrying automatically. Client should wait; the same error type may fire again as retrying, then once as exhausted when the retry budget runs out. - - `BetaManagedAgentsRetryStatusExhausted object { type }` + - `BetaManagedAgentsRetryStatusExhausted object` This turn is dead; queued inputs are flushed and the session returns to idle. Client may send a new prompt. - - `BetaManagedAgentsRetryStatusTerminal object { type }` + - `BetaManagedAgentsRetryStatusTerminal object` The session encountered a terminal error and will transition to `terminated` state. - `type: "model_request_failed_error"` - - `"model_request_failed_error"` - - - `BetaManagedAgentsMCPConnectionFailedError object { mcp_server_name, message, retry_status, type }` + - `BetaManagedAgentsMCPConnectionFailedError object` Failed to connect to an MCP server.
What the client should do next in response to this error. - - `BetaManagedAgentsRetryStatusRetrying object { type }` + - `BetaManagedAgentsRetryStatusRetrying object` The server is retrying automatically. Client should wait; the same error type may fire again as retrying, then once as exhausted when the retry budget runs out. - - `BetaManagedAgentsRetryStatusExhausted object { type }` + - `BetaManagedAgentsRetryStatusExhausted object` This turn is dead; queued inputs are flushed and the session returns to idle. Client may send a new prompt. - - `BetaManagedAgentsRetryStatusTerminal object { type }` + - `BetaManagedAgentsRetryStatusTerminal object` The session encountered a terminal error and will transition to `terminated` state. - `type: "mcp_connection_failed_error"` - - `"mcp_connection_failed_error"` - - - `BetaManagedAgentsMCPAuthenticationFailedError object { mcp_server_name, message, retry_status, type }` + - `BetaManagedAgentsMCPAuthenticationFailedError object` Authentication to an MCP server failed.
What the client should do next in response to this error. - - `BetaManagedAgentsRetryStatusRetrying object { type }` + - `BetaManagedAgentsRetryStatusRetrying object` The server is retrying automatically. Client should wait; the same error type may fire again as retrying, then once as exhausted when the retry budget runs out. - - `BetaManagedAgentsRetryStatusExhausted object { type }` + - `BetaManagedAgentsRetryStatusExhausted object` This turn is dead; queued inputs are flushed and the session returns to idle. Client may send a new prompt. - - `BetaManagedAgentsRetryStatusTerminal object { type }` + - `BetaManagedAgentsRetryStatusTerminal object` The session encountered a terminal error and will transition to `terminated` state. - `type: "mcp_authentication_failed_error"` - - `"mcp_authentication_failed_error"` - - - `BetaManagedAgentsBillingError object { message, retry_status, type }` + - `BetaManagedAgentsBillingError object` The caller's organization or workspace cannot make model requests — out of credits or spend limit reached. Retrying with the same credentials will not succeed; the caller must resolve the billing state.
What the client should do next in response to this error. - - `BetaManagedAgentsRetryStatusRetrying object { type }` + - `BetaManagedAgentsRetryStatusRetrying object` The server is retrying automatically. Client should wait; the same error type may fire again as retrying, then once as exhausted when the retry budget runs out. - - `BetaManagedAgentsRetryStatusExhausted object { type }` + - `BetaManagedAgentsRetryStatusExhausted object` This turn is dead; queued inputs are flushed and the session returns to idle. Client may send a new prompt. - - `BetaManagedAgentsRetryStatusTerminal object { type }` + - `BetaManagedAgentsRetryStatusTerminal object` The session encountered a terminal error and will transition to `terminated` state. - `type: "billing_error"` - - `"billing_error"` - - - `BetaManagedAgentsCredentialHostUnreachableError object { credential_id, message, retry_status, 2 more }` + - `BetaManagedAgentsCredentialHostUnreachableError object` An `environment_variable` credential's `auth.networking.allowed_hosts` includes a host the environment's network policy does not permit.
What the client should do next in response to this error. - - `BetaManagedAgentsRetryStatusRetrying object { type }` + - `BetaManagedAgentsRetryStatusRetrying object` The server is retrying automatically. Client should wait; the same error type may fire again as retrying, then once as exhausted when the retry budget runs out. - - `BetaManagedAgentsRetryStatusExhausted object { type }` + - `BetaManagedAgentsRetryStatusExhausted object` This turn is dead; queued inputs are flushed and the session returns to idle. Client may send a new prompt. - - `BetaManagedAgentsRetryStatusTerminal object { type }` + - `BetaManagedAgentsRetryStatusTerminal object` The session encountered a terminal error and will transition to `terminated` state. - `type: "credential_host_unreachable_error"` - - `"credential_host_unreachable_error"` - - `vault_id: string` ID of the vault containing the affected credential.
A timestamp in RFC 3339 format + format: date-time + - `type: "session.error"` - - `"session.error"` - - - `BetaManagedAgentsSessionStatusRescheduledEvent object { id, processed_at, type }` + - `BetaManagedAgentsSessionStatusRescheduledEvent object` Indicates the session is recovering from an error state and is rescheduled for execution.
A timestamp in RFC 3339 format + format: date-time + - `type: "session.status_rescheduled"` - - `"session.status_rescheduled"` - - - `BetaManagedAgentsSessionStatusRunningEvent object { id, processed_at, type }` + - `BetaManagedAgentsSessionStatusRunningEvent object` Indicates the session is actively running and the agent is working.
A timestamp in RFC 3339 format + format: date-time + - `type: "session.status_running"` - - `"session.status_running"` - - - `BetaManagedAgentsSessionStatusIdleEvent object { id, processed_at, stop_reason, type }` + - `BetaManagedAgentsSessionStatusIdleEvent object` Indicates the agent has paused and is awaiting user input.
A timestamp in RFC 3339 format + format: date-time + - `stop_reason: BetaManagedAgentsSessionEndTurn or BetaManagedAgentsSessionRequiresAction or BetaManagedAgentsSessionRetriesExhausted or BetaManagedAgentsSessionBudgetReached` The agent completed its turn naturally and is ready for the next user message. - - `BetaManagedAgentsSessionEndTurn object { type }` + - `BetaManagedAgentsSessionEndTurn object` The agent completed its turn naturally and is ready for the next user message. - `type: "end_turn"` - - `"end_turn"` - - - `BetaManagedAgentsSessionRequiresAction object { event_ids, type }` + - `BetaManagedAgentsSessionRequiresAction object` The agent is idle waiting on one or more blocking user-input events (tool confirmation, custom tool result, etc.). Resolving all of them transitions the session back to running.
- `type: "requires_action"` - - `"requires_action"` - - - `BetaManagedAgentsSessionRetriesExhausted object { type }` + - `BetaManagedAgentsSessionRetriesExhausted object` The turn ended because repeated errors exhausted the retry budget or an error escalated to `retry_status: 'exhausted'`. - `type: "retries_exhausted"` - - `"retries_exhausted"` - - - `BetaManagedAgentsSessionBudgetReached object { type }` + - `BetaManagedAgentsSessionBudgetReached object` The agent stopped because the session's tracked list cost reached its budget, or because its usage includes a model with no list price (which the budget cannot measure). Raise the budget to continue — or, if raising is rejected because a model has no list price, remove the budget. - `type: "budget_reached"` - - `"budget_reached"` - - `type: "session.status_idle"` - - `"session.status_idle"` - - - `BetaManagedAgentsSessionStatusTerminatedEvent object { id, processed_at, type }` + - `BetaManagedAgentsSessionStatusTerminatedEvent object` Indicates the session has terminated, either due to an error or completion.
A timestamp in RFC 3339 format + format: date-time + - `type: "session.status_terminated"` - - `"session.status_terminated"` - - - `BetaManagedAgentsSessionThreadCreatedEvent object { id, agent_name, processed_at, 2 more }` + - `BetaManagedAgentsSessionThreadCreatedEvent object` Emitted when a subagent is spawned as a new thread. Written to the parent thread's output stream so clients observing the session see child creation.
A timestamp in RFC 3339 format + format: date-time + - `session_thread_id: string` Public `sthr_` ID of the newly created thread. - `type: "session.thread_created"` - - `"session.thread_created"` - - - `BetaManagedAgentsSpanOutcomeEvaluationStartEvent object { id, iteration, outcome_id, 2 more }` + - `BetaManagedAgentsSpanOutcomeEvaluationStartEvent object` Emitted when an outcome evaluation cycle begins.
0-indexed revision cycle. 0 is the first evaluation; 1 is the re-evaluation after the first revision; etc. + format: int32 + - `outcome_id: string` The `outc_` ID of the outcome being evaluated.
A timestamp in RFC 3339 format + format: date-time + - `type: "span.outcome_evaluation_start"` - - `"span.outcome_evaluation_start"` - - - `BetaManagedAgentsSpanOutcomeEvaluationEndEvent object { id, explanation, iteration, 6 more }` + - `BetaManagedAgentsSpanOutcomeEvaluationEndEvent object` Emitted when an outcome evaluation cycle completes. Carries the verdict and aggregate token usage. A verdict of `needs_revision` means another evaluation cycle follows; `satisfied`, `max_iterations_reached`, `failed`, or `interrupted` are terminal — no further evaluation cycles follow.
0-indexed revision cycle, matching the corresponding `span.outcome_evaluation_start`. + format: int32 + - `outcome_evaluation_start_id: string` The id of the corresponding `span.outcome_evaluation_start` event.
A timestamp in RFC 3339 format + format: date-time + - `result: string` Evaluation verdict. 'satisfied': criteria met, session goes idle. 'needs_revision': criteria not met, another revision cycle follows. 'max_iterations_reached': evaluation budget exhausted with criteria still unmet — one final acknowledgment turn follows before the session goes idle, but no further evaluation runs. 'failed': grader determined the rubric does not apply to the deliverables. 'interrupted': user sent an interrupt while evaluation was in progress. - `type: "span.outcome_evaluation_end"` - - `"span.outcome_evaluation_end"` - - `usage: BetaManagedAgentsSpanModelUsage` Token usage for a single model request.
Tokens used to create prompt cache in this request. + format: int32 + - `cache_read_input_tokens: number` Tokens read from prompt cache in this request. + format: int32 + - `input_tokens: number` Input tokens consumed by this request. + format: int32 + - `output_tokens: number` Output tokens generated by this request. + format: int32 + - `speed: optional "standard" or "fast" or null` Inference speed mode. `fast` provides significantly faster output token generation at premium pricing. Not all models support `fast`; invalid combinations are rejected at create time.
- `"fast"` - - `BetaManagedAgentsSpanModelRequestStartEvent object { id, processed_at, type }` + - `BetaManagedAgentsSpanModelRequestStartEvent object` Emitted when a model request is initiated by the agent.
A timestamp in RFC 3339 format + format: date-time + - `type: "span.model_request_start"` - - `"span.model_request_start"` - - - `BetaManagedAgentsSpanModelRequestEndEvent object { id, is_error, model_request_start_id, 3 more }` + - `BetaManagedAgentsSpanModelRequestEndEvent object` Emitted when a model request completes.
A timestamp in RFC 3339 format + format: date-time + - `type: "span.model_request_end"` - - `"span.model_request_end"` - - - `BetaManagedAgentsSpanOutcomeEvaluationOngoingEvent object { id, iteration, outcome_id, 2 more }` + - `BetaManagedAgentsSpanOutcomeEvaluationOngoingEvent object` Periodic heartbeat emitted while an outcome evaluation cycle is in progress. Distinguishes 'evaluation is actively running' from 'evaluation is stuck' between the corresponding `span.outcome_evaluation_start` and `span.outcome_evaluation_end` events.
0-indexed revision cycle, matching the corresponding `span.outcome_evaluation_start`. + format: int32 + - `outcome_id: string` The `outc_` ID of the outcome being evaluated.
A timestamp in RFC 3339 format + format: date-time + - `type: "span.outcome_evaluation_ongoing"` - - `"span.outcome_evaluation_ongoing"` - - - `BetaManagedAgentsUserDefineOutcomeEvent object { id, description, max_iterations, 4 more }` + - `BetaManagedAgentsUserDefineOutcomeEvent object` Echo of a `user.define_outcome` input event. Carries the server-generated `outcome_id` that subsequent `span.outcome_evaluation_*` events reference.
Evaluate-then-revise cycles before giving up. Default 3, max 20. + format: int32 + - `outcome_id: string` Server-generated `outc_` ID for this outcome. Referenced by `span.outcome_evaluation_*` events and the session's `outcome_evaluations` list.
A timestamp in RFC 3339 format + format: date-time + - `rubric: BetaManagedAgentsFileRubric or BetaManagedAgentsTextRubric` Rubric for grading the quality of an outcome. - - `BetaManagedAgentsFileRubric object { file_id, type }` + - `BetaManagedAgentsFileRubric object` Rubric referenced by a file uploaded via the Files API.
- `type: "file"` - - `"file"` - - - `BetaManagedAgentsTextRubric object { content, type }` + - `BetaManagedAgentsTextRubric object` Rubric content provided inline as text.
- `type: "text"` - - `"text"` - - `type: "user.define_outcome"` - - `"user.define_outcome"` - - - `BetaManagedAgentsSessionDeletedEvent object { id, processed_at, type }` + - `BetaManagedAgentsSessionDeletedEvent object` Emitted when a session has been deleted. Terminates any active event stream — no further events will be emitted for this session.
A timestamp in RFC 3339 format + format: date-time + - `type: "session.deleted"` - - `"session.deleted"` - - - `BetaManagedAgentsSessionThreadStatusRunningEvent object { id, agent_name, processed_at, 2 more }` + - `BetaManagedAgentsSessionThreadStatusRunningEvent object` A session thread has begun executing. Emitted on the thread's own stream and cross-posted to the primary stream for child threads.
A timestamp in RFC 3339 format + format: date-time + - `session_thread_id: string` Public sthr_ ID of the thread that started running. - `type: "session.thread_status_running"` - - `"session.thread_status_running"` - - - `BetaManagedAgentsSessionThreadStatusIdleEvent object { id, agent_name, processed_at, 3 more }` + - `BetaManagedAgentsSessionThreadStatusIdleEvent object` A session thread has yielded and is awaiting input. Emitted on the thread's own stream and cross-posted to the primary stream for child threads.
A timestamp in RFC 3339 format + format: date-time + - `session_thread_id: string` Public sthr_ ID of the thread that went idle.
The agent completed its turn naturally and is ready for the next user message. - - `BetaManagedAgentsSessionEndTurn object { type }` + - `BetaManagedAgentsSessionEndTurn object` The agent completed its turn naturally and is ready for the next user message. - - `BetaManagedAgentsSessionRequiresAction object { event_ids, type }` + - `BetaManagedAgentsSessionRequiresAction object` The agent is idle waiting on one or more blocking user-input events (tool confirmation, custom tool result, etc.). Resolving all of them transitions the session back to running. - - `BetaManagedAgentsSessionRetriesExhausted object { type }` + - `BetaManagedAgentsSessionRetriesExhausted object` The turn ended because repeated errors exhausted the retry budget or an error escalated to `retry_status: 'exhausted'`. - - `BetaManagedAgentsSessionBudgetReached object { type }` + - `BetaManagedAgentsSessionBudgetReached object` The agent stopped because the session's tracked list cost reached its budget, or because its usage includes a model with no list price (which the budget cannot measure). Raise the budget to continue — or, if raising is rejected because a model has no list price, remove the budget. - `type: "session.thread_status_idle"` - - `"session.thread_status_idle"` - - - `BetaManagedAgentsSessionThreadStatusTerminatedEvent object { id, agent_name, processed_at, 2 more }` + - `BetaManagedAgentsSessionThreadStatusTerminatedEvent object` A session thread has terminated and will accept no further input. Emitted on the thread's own stream and cross-posted to the primary stream for child threads.
A timestamp in RFC 3339 format + format: date-time + - `session_thread_id: string` Public sthr_ ID of the thread that terminated. - `type: "session.thread_status_terminated"` - - `"session.thread_status_terminated"` - - - `BetaManagedAgentsUserToolResultEvent object { id, tool_use_id, type, 4 more }` + - `BetaManagedAgentsUserToolResultEvent object` Event sent by the client providing the result of an agent-toolset tool execution. Only valid on `self_hosted` environments, where sandbox-routed tools are executed by the client rather than the server.
- `type: "user.tool_result"` - - `"user.tool_result"` - - `content: optional array of BetaManagedAgentsTextBlock or BetaManagedAgentsImageBlock or BetaManagedAgentsDocumentBlock or BetaManagedAgentsSearchResultBlock` The result content returned by the tool. - - `BetaManagedAgentsTextBlock object { text, type }` + - `BetaManagedAgentsTextBlock object` Regular text content. - - `BetaManagedAgentsImageBlock object { source, type }` + - `BetaManagedAgentsImageBlock object` Image content specified directly as base64 data or as a reference via a URL. - - `BetaManagedAgentsDocumentBlock object { source, type, context, title }` + - `BetaManagedAgentsDocumentBlock object` Document content, either specified directly as base64 data, as text, or as a reference via a URL. - - `BetaManagedAgentsSearchResultBlock object { citations, content, source, 2 more }` + - `BetaManagedAgentsSearchResultBlock object` A block containing a web search result.
A timestamp in RFC 3339 format + format: date-time + - `session_thread_id: optional string or null` Routes this result to a subagent thread. Copy from the `agent.tool_use` event's `session_thread_id`. - - `BetaManagedAgentsSessionThreadStatusRescheduledEvent object { id, agent_name, processed_at, 2 more }` + - `BetaManagedAgentsSessionThreadStatusRescheduledEvent object` A session thread hit a transient error and is retrying automatically. Emitted on the thread's own stream and cross-posted to the primary stream for child threads.
A timestamp in RFC 3339 format + format: date-time + - `session_thread_id: string` Public sthr_ ID of the thread that is retrying. - `type: "session.thread_status_rescheduled"` - - `"session.thread_status_rescheduled"` - - - `BetaManagedAgentsSessionUpdatedEvent object { id, processed_at, type, 4 more }` + - `BetaManagedAgentsSessionUpdatedEvent object` Emitted when an UpdateSession request changed at least one field. Carries only the fields that changed; absent fields were not part of the update. The new configuration applies from the next turn.
A timestamp in RFC 3339 format + format: date-time + - `type: "session.updated"` - - `"session.updated"` - - `agent: optional BetaManagedAgentsSessionAgent or null` Resolved `agent` definition for a `session`. Snapshot of the `agent` at `session` creation time.
- `type: "url"` - - `"url"` - - `url: string` - `model: BetaManagedAgentsModelConfig`
How hard Claude works on each turn. Sets `output_config.effort` on every Messages call the session makes. - - `BetaManagedAgentsEffortLow object { type }` + - `BetaManagedAgentsEffortLow object` Low effort. Favors latency over reasoning depth. - `type: "low"` - - `"low"` - - - `BetaManagedAgentsEffortMedium object { type }` + - `BetaManagedAgentsEffortMedium object` Medium effort. Balances latency and reasoning depth. - `type: "medium"` - - `"medium"` - - - `BetaManagedAgentsEffortHigh object { type }` + - `BetaManagedAgentsEffortHigh object` High effort. Favors reasoning depth. - `type: "high"` - - `"high"` - - - `BetaManagedAgentsEffortXhigh object { type }` + - `BetaManagedAgentsEffortXhigh object` Extra-high effort. Not all models accept this level. - `type: "xhigh"` - - `"xhigh"` - - - `BetaManagedAgentsEffortMax object { type }` + - `BetaManagedAgentsEffortMax object` Maximum effort. Favors reasoning depth over latency. - `type: "max"` - - `"max"` - - `inference_geo: optional string` Geographic region for model inference. When unset, requests fall through to the workspace's default_inference_geo.
Full `agent` definitions the coordinator may spawn as session threads. - - `BetaManagedAgentsSessionThreadAgent object { id, description, mcp_servers, 7 more }` + - `BetaManagedAgentsSessionThreadAgent object` Resolved `agent` definition for a single `session_thread`. Snapshot of the agent at thread creation time. The multiagent roster is not repeated here; read it from `Session.agent`.
- `skills: array of BetaManagedAgentsAnthropicSkill or BetaManagedAgentsCustomSkill` - - `BetaManagedAgentsAnthropicSkill object { skill_id, type, version }` + - `BetaManagedAgentsAnthropicSkill object` A resolved Anthropic-managed skill.
- `type: "anthropic"` - - `"anthropic"` - - `version: string` - - `BetaManagedAgentsCustomSkill object { skill_id, type, version }` + - `BetaManagedAgentsCustomSkill object` A resolved user-created custom skill.
- `type: "custom"` - - `"custom"` - - `version: string` - `system: string or null` - `tools: array of BetaManagedAgentsAgentToolset20260401 or BetaManagedAgentsMCPToolset or BetaManagedAgentsCustomTool` - - `BetaManagedAgentsAgentToolset20260401 object { configs, default_config, type }` + - `BetaManagedAgentsAgentToolset20260401 object` - `configs: array of BetaManagedAgentsAgentToolConfig` - - `BetaManagedAgentsBashToolConfig object { enabled, name, permission_policy, type }` + - `BetaManagedAgentsBashToolConfig object` Configuration for the bash tool.
- `name: "bash"` - - `"bash"` - - `permission_policy: BetaManagedAgentsAlwaysAllowPolicy or BetaManagedAgentsAlwaysAskPolicy` Permission policy for tool execution. - - `BetaManagedAgentsAlwaysAllowPolicy object { type }` + - `BetaManagedAgentsAlwaysAllowPolicy object` Tool calls are automatically approved without user confirmation. - `type: "always_allow"` - - `"always_allow"` - - - `BetaManagedAgentsAlwaysAskPolicy object { type }` + - `BetaManagedAgentsAlwaysAskPolicy object` Tool calls require user confirmation before execution. - `type: "always_ask"` - - `"always_ask"` - - `type: "bash"` - - `"bash"` - - - `BetaManagedAgentsEditToolConfig object { enabled, name, permission_policy, type }` + - `BetaManagedAgentsEditToolConfig object` Configuration for the edit tool.
- `name: "edit"` - - `"edit"` - - `permission_policy: BetaManagedAgentsAlwaysAllowPolicy or BetaManagedAgentsAlwaysAskPolicy` Permission policy for tool execution. - - `BetaManagedAgentsAlwaysAllowPolicy object { type }` + - `BetaManagedAgentsAlwaysAllowPolicy object` Tool calls are automatically approved without user confirmation. - - `BetaManagedAgentsAlwaysAskPolicy object { type }` + - `BetaManagedAgentsAlwaysAskPolicy object` Tool calls require user confirmation before execution. - `type: "edit"` - - `"edit"` - - - `BetaManagedAgentsReadToolConfig object { enabled, name, permission_policy, type }` + - `BetaManagedAgentsReadToolConfig object` Configuration for the read tool.
- `name: "read"` - - `"read"` - - `permission_policy: BetaManagedAgentsAlwaysAllowPolicy or BetaManagedAgentsAlwaysAskPolicy` Permission policy for tool execution. - - `BetaManagedAgentsAlwaysAllowPolicy object { type }` + - `BetaManagedAgentsAlwaysAllowPolicy object` Tool calls are automatically approved without user confirmation. - - `BetaManagedAgentsAlwaysAskPolicy object { type }` + - `BetaManagedAgentsAlwaysAskPolicy object` Tool calls require user confirmation before execution. - `type: "read"` - - `"read"` - - - `BetaManagedAgentsWriteToolConfig object { enabled, name, permission_policy, type }` + - `BetaManagedAgentsWriteToolConfig object` Configuration for the write tool.
- `name: "write"` - - `"write"` - - `permission_policy: BetaManagedAgentsAlwaysAllowPolicy or BetaManagedAgentsAlwaysAskPolicy` Permission policy for tool execution. - - `BetaManagedAgentsAlwaysAllowPolicy object { type }` + - `BetaManagedAgentsAlwaysAllowPolicy object` Tool calls are automatically approved without user confirmation. - - `BetaManagedAgentsAlwaysAskPolicy object { type }` + - `BetaManagedAgentsAlwaysAskPolicy object` Tool calls require user confirmation before execution. - `type: "write"` - - `"write"` - - - `BetaManagedAgentsGlobToolConfig object { enabled, name, permission_policy, type }` + - `BetaManagedAgentsGlobToolConfig object` Configuration for the glob tool.
- `name: "glob"` - - `"glob"` - - `permission_policy: BetaManagedAgentsAlwaysAllowPolicy or BetaManagedAgentsAlwaysAskPolicy` Permission policy for tool execution. - - `BetaManagedAgentsAlwaysAllowPolicy object { type }` + - `BetaManagedAgentsAlwaysAllowPolicy object` Tool calls are automatically approved without user confirmation. - - `BetaManagedAgentsAlwaysAskPolicy object { type }` + - `BetaManagedAgentsAlwaysAskPolicy object` Tool calls require user confirmation before execution. - `type: "glob"` - - `"glob"` - - - `BetaManagedAgentsGrepToolConfig object { enabled, name, permission_policy, type }` + - `BetaManagedAgentsGrepToolConfig object` Configuration for the grep tool.
- `name: "grep"` - - `"grep"` - - `permission_policy: BetaManagedAgentsAlwaysAllowPolicy or BetaManagedAgentsAlwaysAskPolicy` Permission policy for tool execution. - - `BetaManagedAgentsAlwaysAllowPolicy object { type }` + - `BetaManagedAgentsAlwaysAllowPolicy object` Tool calls are automatically approved without user confirmation. - - `BetaManagedAgentsAlwaysAskPolicy object { type }` + - `BetaManagedAgentsAlwaysAskPolicy object` Tool calls require user confirmation before execution. - `type: "grep"` - - `"grep"` - - - `BetaManagedAgentsWebFetchToolConfig object { enabled, name, permission_policy, 4 more }` + - `BetaManagedAgentsWebFetchToolConfig object` Configuration for the web_fetch tool.
- `name: "web_fetch"` - - `"web_fetch"` - - `permission_policy: BetaManagedAgentsAlwaysAllowPolicy or BetaManagedAgentsAlwaysAskPolicy` Permission policy for tool execution. - - `BetaManagedAgentsAlwaysAllowPolicy object { type }` + - `BetaManagedAgentsAlwaysAllowPolicy object` Tool calls are automatically approved without user confirmation. - - `BetaManagedAgentsAlwaysAskPolicy object { type }` + - `BetaManagedAgentsAlwaysAskPolicy object` Tool calls require user confirmation before execution. - `type: "web_fetch"` - - `"web_fetch"` - - `allowed_domains: optional array of string` - `blocked_domains: optional array of string` - `max_content_tokens: optional number or null` - - `BetaManagedAgentsWebSearchToolConfig object { enabled, name, permission_policy, 4 more }` + format: int32 + + - `BetaManagedAgentsWebSearchToolConfig object` Configuration for the web_search tool.
- `name: "web_search"` - - `"web_search"` - - `permission_policy: BetaManagedAgentsAlwaysAllowPolicy or BetaManagedAgentsAlwaysAskPolicy` Permission policy for tool execution. - - `BetaManagedAgentsAlwaysAllowPolicy object { type }` + - `BetaManagedAgentsAlwaysAllowPolicy object` Tool calls are automatically approved without user confirmation. - - `BetaManagedAgentsAlwaysAskPolicy object { type }` + - `BetaManagedAgentsAlwaysAskPolicy object` Tool calls require user confirmation before execution. - `type: "web_search"` - - `"web_search"` - - `allowed_domains: optional array of string` - `blocked_domains: optional array of string`
Location precision. Only "approximate" is supported. - - `"approximate"` - - `city: optional string or null` City name. + minLength: 1, maxLength: 255 + - `country: optional string or null` Two-letter ISO 3166-1 country code, uppercase.
Region or state name. + minLength: 1, maxLength: 255 + - `timezone: optional string or null` IANA timezone identifier, e.g. "America/Los_Angeles". + minLength: 1, maxLength: 255 + - `default_config: BetaManagedAgentsAgentToolsetDefaultConfig` Resolved default configuration for agent tools.
Permission policy for tool execution. - - `BetaManagedAgentsAlwaysAllowPolicy object { type }` + - `BetaManagedAgentsAlwaysAllowPolicy object` Tool calls are automatically approved without user confirmation. - - `BetaManagedAgentsAlwaysAskPolicy object { type }` + - `BetaManagedAgentsAlwaysAskPolicy object` Tool calls require user confirmation before execution. - `type: "agent_toolset_20260401"` - - `"agent_toolset_20260401"` - - - `BetaManagedAgentsMCPToolset object { configs, default_config, mcp_server_name, type }` + - `BetaManagedAgentsMCPToolset object` - `configs: array of BetaManagedAgentsMCPToolConfig`
Permission policy for tool execution. - - `BetaManagedAgentsAlwaysAllowPolicy object { type }` + - `BetaManagedAgentsAlwaysAllowPolicy object` Tool calls are automatically approved without user confirmation. - - `BetaManagedAgentsAlwaysAskPolicy object { type }` + - `BetaManagedAgentsAlwaysAskPolicy object` Tool calls require user confirmation before execution.
Permission policy for tool execution. - - `BetaManagedAgentsAlwaysAllowPolicy object { type }` + - `BetaManagedAgentsAlwaysAllowPolicy object` Tool calls are automatically approved without user confirmation. - - `BetaManagedAgentsAlwaysAskPolicy object { type }` + - `BetaManagedAgentsAlwaysAskPolicy object` Tool calls require user confirmation before execution.
- `type: "mcp_toolset"` - - `"mcp_toolset"` - - - `BetaManagedAgentsCustomTool object { description, input_schema, name, type }` + - `BetaManagedAgentsCustomTool object` A custom tool as returned in API responses.
- `type: "object"` - - `"object"` - - `properties: optional map[unknown] or null` - `required: optional array of string or null`
- `type: "custom"` - - `"custom"` - - `type: "agent"` - - `"agent"` - - `version: number` - - `BetaManagedAgentsAdvisor object { model, type }` + format: int32 + + - `BetaManagedAgentsAdvisor object` Platform advisor roster entry: a model the session's primary thread may consult mid-turn.
- `type: "advisor"` - - `"advisor"` - - `type: "coordinator"` - - `"coordinator"` - - `name: string` - `skills: array of BetaManagedAgentsAnthropicSkill or BetaManagedAgentsCustomSkill` - - `BetaManagedAgentsAnthropicSkill object { skill_id, type, version }` + - `BetaManagedAgentsAnthropicSkill object` A resolved Anthropic-managed skill. - - `BetaManagedAgentsCustomSkill object { skill_id, type, version }` + - `BetaManagedAgentsCustomSkill object` A resolved user-created custom skill.
- `tools: array of BetaManagedAgentsAgentToolset20260401 or BetaManagedAgentsMCPToolset or BetaManagedAgentsCustomTool` - - `BetaManagedAgentsAgentToolset20260401 object { configs, default_config, type }` - - - `BetaManagedAgentsMCPToolset object { configs, default_config, mcp_server_name, type }` - - - `BetaManagedAgentsCustomTool object { description, input_schema, name, type }` + - `BetaManagedAgentsAgentToolset20260401 object` + + - `BetaManagedAgentsMCPToolset object` + + - `BetaManagedAgentsCustomTool object` A custom tool as returned in API responses. - `type: "agent"` - - `"agent"` - - `version: number` + format: int32 + - `budget: optional BetaManagedAgentsBudgetLimit or null` A hard spend ceiling. The session stops issuing new model requests once the tracked list cost reaches `max_list_cost`.
Uppercase ISO-4217 currency code. `USD` is the only currency currently supported; the accepted set is closed and grows only when a new currency is priced. - - `"USD"` - - `type: "limit"` - - `"limit"` - - `metadata: optional map[string]` The session's full metadata bag after the update. Present when the update set non-empty metadata; absent when metadata was unchanged or cleared to empty.
The session's new title. Present only when the update changed it. - - `BetaManagedAgentsStartEvent object { event, type }` + - `BetaManagedAgentsStartEvent object` Opens a preview of a buffered event. Carries the previewed event's type and id only. Followed by zero or more event_delta events with the same event id, normally concluded by the buffered event carrying that id. If the producing model request ends without that event (an error or interrupt mid-stream), its terminal span.model_request_end closes the preview. Only sent on stream connections that opt in via event_deltas; never appears in event history.
The previewed event's type and id. The event type determines which delta types the preview's event_delta events carry: agent.message events stream content_delta fragments; agent.thinking previews are start-only — no deltas follow, and the buffered agent.thinking with the same id concludes them. - - `BetaManagedAgentsAgentMessagePreview object { id, type }` + - `BetaManagedAgentsAgentMessagePreview object` - `id: string`
- `type: "agent.message"` - - `"agent.message"` - - - `BetaManagedAgentsAgentThinkingPreview object { id, type }` + - `BetaManagedAgentsAgentThinkingPreview object` - `id: string`
- `type: "agent.thinking"` - - `"agent.thinking"` - - `type: "event_start"` - - `"event_start"` - - - `BetaManagedAgentsDeltaEvent object { delta, event_id, type }` + - `BetaManagedAgentsDeltaEvent object` An incremental update to an event that is still being streamed. Deltas are best-effort and may stop early; when the buffered event with id == event_id is produced it carries the complete content. A model request that ends early (an error or interrupt) produces no buffered event — its terminal span.model_request_end closes the preview. Only sent on stream connections that opt in via event_deltas; never appears in event history.
- `type: "content_delta"` - - `"content_delta"` - - `index: optional number` Which entry in the previewed event's content array this fragment lands in. Insert content as that entry when the index is new; append to the existing entry otherwise. + format: uint32 + - `event_id: string` The id of the event being previewed. Matches event.id on the corresponding event_start and the buffered event that reconciles the preview. - `type: "event_delta"` - - `"event_delta"` - - - `BetaManagedAgentsSystemMessageEvent object { id, content, type, processed_at }` + - `BetaManagedAgentsSystemMessageEvent object` A mid-conversation system message event. Carries system-role content that is appended to the session as a `role: "system"` turn.
The text content. + minLength: 1 + - `type: "text"` - - `"text"` - - `type: "system.message"` - - `"system.message"` - - `processed_at: optional string or null` A timestamp in RFC 3339 format - - `BetaManagedAgentsSessionUsageEvent object { id, processed_at, type, 2 more }` + format: date-time + + - `BetaManagedAgentsSessionUsageEvent object` Periodic snapshot of the session's cumulative usage and tracked list cost.
A timestamp in RFC 3339 format + format: date-time + - `type: "session.usage"` - - `"session.usage"` - - `usage: BetaManagedAgentsSessionUsageSnapshot` Point-in-time snapshot of a session's cumulative usage.
Cumulative time in seconds during which the session had at least one thread in running status. Overlapping activity from concurrent threads is counted once. This is the duration the session's runtime cost is priced on. + format: double + - `cache_creation: optional BetaManagedAgentsCacheCreationUsage` Prompt-cache creation token usage broken down by cache lifetime.
Tokens used to create 1-hour ephemeral cache entries. + format: int32 + - `ephemeral_5m_input_tokens: optional number` Tokens used to create 5-minute ephemeral cache entries. + format: int32 + - `cache_read_input_tokens: optional number` Total tokens read from prompt cache. + format: int32 + - `input_tokens: optional number` Total input tokens consumed across all turns. + format: int32 + - `list_cost: optional BetaMonetaryAmount` A monetary amount in a specific currency.
Total output tokens generated across all turns. + format: int32 + - `server_tool_use: optional BetaManagedAgentsServerToolUsage` Cumulative count of server-executed tool invocations, broken down by tool.
Number of server-executed web fetch requests. + format: int32 + - `web_search_requests: optional number` Number of server-executed web search requests. + format: int32 + - `budget: optional BetaManagedAgentsBudgetLimit or null` A hard spend ceiling. The session stops issuing new model requests once the tracked list cost reaches `max_list_cost`. +- `BetaManagedAgentsStreamSessionThreadEvents = BetaManagedAgentsUserMessageEvent or BetaManagedAgentsUserInterruptEvent or BetaManagedAgentsUserToolConfirmationEvent or 34 more` + + Server-sent event in a single thread's stream. + ### Example -```http +```bash curl https://api.anthropic.com/v1/sessions/$SESSION_ID/threads/$THREAD_ID/stream \ -H 'anthropic-version: 2023-06-01' \ -H 'anthropic-beta: managed-agents-2026-04-01' \ -H "X-Api-Key: $ANTHROPIC_API_KEY" ``` -#### Response +#### Response (200) ```json {