List Session Thread Events

get /v1/sessions/{session_id}/threads/{thread_id}/events

List Session Thread Events

Path Parameters

  • session_id: string

  • thread_id: string

Query Parameters

  • limit: optional number

    Query parameter for limit

  • page: optional string

    Query parameter for page

Header Parameters

  • "anthropic-beta": optional array of AnthropicBeta

    Optional header to specify the beta version(s) you want to use.

    • string

    • "message-batches-2024-09-24" or "prompt-caching-2024-07-31" or "computer-use-2024-10-22" or 22 more

      • "message-batches-2024-09-24"

      • "prompt-caching-2024-07-31"

      • "computer-use-2024-10-22"

      • "computer-use-2025-01-24"

      • "pdfs-2024-09-25"

      • "token-counting-2024-11-01"

      • "token-efficient-tools-2025-02-19"

      • "output-128k-2025-02-19"

      • "files-api-2025-04-14"

      • "mcp-client-2025-04-04"

      • "mcp-client-2025-11-20"

      • "dev-full-thinking-2025-05-14"

      • "interleaved-thinking-2025-05-14"

      • "code-execution-2025-05-22"

      • "extended-cache-ttl-2025-04-11"

      • "context-1m-2025-08-07"

      • "context-management-2025-06-27"

      • "model-context-window-exceeded-2025-08-26"

      • "skills-2025-10-02"

      • "fast-mode-2026-02-01"

      • "output-300k-2026-03-24"

      • "user-profiles-2026-03-24"

      • "advisor-tool-2026-03-01"

      • "managed-agents-2026-04-01"

      • "cache-diagnosis-2026-04-07"

Returns

  • data: optional array of BetaManagedAgentsSessionEvent

    Events for the thread, ordered by created_at.

    • BetaManagedAgentsUserMessageEvent object { id, content, type, processed_at }

      A user message event in the session conversation.

      • id: string

        Unique identifier for this event.

      • content: array of BetaManagedAgentsTextBlock or BetaManagedAgentsImageBlock or BetaManagedAgentsDocumentBlock

        Array of content blocks comprising the user message.

        • BetaManagedAgentsTextBlock object { text, type }

          Regular text content.

          • text: string

            The text content.

          • type: "text"

            • "text"
        • BetaManagedAgentsImageBlock object { source, type }

          Image content specified directly as base64 data or as a reference via a URL.

          • source: BetaManagedAgentsBase64ImageSource or BetaManagedAgentsURLImageSource or BetaManagedAgentsFileImageSource

            Union type for image source variants.

            • BetaManagedAgentsBase64ImageSource object { data, media_type, type }

              Base64-encoded image data.

              • data: string

                Base64-encoded image data.

              • media_type: string

                MIME type of the image (e.g., "image/png", "image/jpeg", "image/gif", "image/webp").

              • type: "base64"

                • "base64"
            • BetaManagedAgentsURLImageSource object { type, url }

              Image referenced by URL.

              • type: "url"

                • "url"
              • url: string

                URL of the image to fetch.

            • BetaManagedAgentsFileImageSource object { file_id, type }

              Image referenced by file ID.

              • file_id: string

                ID of a previously uploaded file.

              • type: "file"

                • "file"
          • type: "image"

            • "image"
        • BetaManagedAgentsDocumentBlock object { source, type, context, title }

          Document content, either specified directly as base64 data, as text, or as a reference via a URL.

          • source: BetaManagedAgentsBase64DocumentSource or BetaManagedAgentsPlainTextDocumentSource or BetaManagedAgentsURLDocumentSource or BetaManagedAgentsFileDocumentSource

            Union type for document source variants.

            • BetaManagedAgentsBase64DocumentSource object { data, media_type, type }

              Base64-encoded document data.

              • data: string

                Base64-encoded document data.

              • media_type: string

                MIME type of the document (e.g., "application/pdf").

              • type: "base64"

                • "base64"
            • BetaManagedAgentsPlainTextDocumentSource object { data, media_type, type }

              Plain text document content.

              • data: string

                The plain text content.

              • media_type: "text/plain"

                MIME type of the text content. Must be "text/plain".

                • "text/plain"
              • type: "text"

                • "text"
            • BetaManagedAgentsURLDocumentSource object { type, url }

              Document referenced by URL.

              • type: "url"

                • "url"
              • url: string

                URL of the document to fetch.

            • BetaManagedAgentsFileDocumentSource object { file_id, type }

              Document referenced by file ID.

              • file_id: string

                ID of a previously uploaded file.

              • type: "file"

                • "file"
          • type: "document"

            • "document"
          • context: optional string

            Additional context about the document for the model.

          • title: optional string

            The title of the document.

      • type: "user.message"

        • "user.message"
      • processed_at: optional string

        A timestamp in RFC 3339 format

    • BetaManagedAgentsUserInterruptEvent object { id, type, processed_at, session_thread_id }

      An interrupt event that pauses agent execution and returns control to the user.

      • id: string

        Unique identifier for this event.

      • type: "user.interrupt"

        • "user.interrupt"
      • processed_at: optional string

        A timestamp in RFC 3339 format

      • session_thread_id: optional string

        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 }

      A tool confirmation event that approves or denies a pending tool execution.

      • id: string

        Unique identifier for this event.

      • result: "allow" or "deny"

        UserToolConfirmationResult enum

        • "allow"

        • "deny"

      • tool_use_id: string

        The id of the agent.tool_use or agent.mcp_tool_use event this result corresponds to, which can be found in the last session.status_idle event's stop_reason.event_ids field.

      • type: "user.tool_confirmation"

        • "user.tool_confirmation"
      • deny_message: optional string

        Optional message providing context for a 'deny' decision. Only allowed when result is 'deny'.

      • processed_at: optional string

        A timestamp in RFC 3339 format

      • session_thread_id: optional string

        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 }

      Event sent by the client providing the result of a custom tool execution.

      • id: string

        Unique identifier for this event.

      • custom_tool_use_id: string

        The id of the agent.custom_tool_use event this result corresponds to, which can be found in the last session.status_idle event's stop_reason.event_ids field.

      • 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 }

          Regular text content.

        • BetaManagedAgentsImageBlock object { source, type }

          Image content specified directly as base64 data or as a reference via a URL.

        • BetaManagedAgentsDocumentBlock object { source, type, context, title }

          Document content, either specified directly as base64 data, as text, or as a reference via a URL.

        • BetaManagedAgentsSearchResultBlock object { citations, content, source, 2 more }

          A block containing a web search result.

          • citations: BetaManagedAgentsSearchResultCitations

            Citation settings for a search result.

            • enabled: boolean

              Whether citations are enabled for this search result.

          • content: array of BetaManagedAgentsSearchResultContent

            Array of text content blocks from the search result.

            • text: string

              The text content.

            • type: "text"

              • "text"
          • source: string

            The URL source of the search result.

          • title: string

            The title of the search result.

          • type: "search_result"

            • "search_result"
      • is_error: optional boolean

        Whether the tool execution resulted in an error.

      • processed_at: optional string

        A timestamp in RFC 3339 format

      • session_thread_id: optional string

        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 }

      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.

      • id: string

        Unique identifier for this event.

      • input: map[unknown]

        Input parameters for the tool call.

      • name: string

        Name of the custom tool being called.

      • processed_at: string

        A timestamp in RFC 3339 format

      • type: "agent.custom_tool_use"

        • "agent.custom_tool_use"
      • session_thread_id: optional string

        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 }

      An agent response event in the session conversation.

      • id: string

        Unique identifier for this event.

      • content: array of BetaManagedAgentsTextBlock

        Array of text blocks comprising the agent response.

        • text: string

          The text content.

        • type: "text"

      • processed_at: string

        A timestamp in RFC 3339 format

      • type: "agent.message"

        • "agent.message"
    • BetaManagedAgentsAgentThinkingEvent object { id, processed_at, type }

      Indicates the agent is making forward progress via extended thinking. A progress signal, not a content carrier.

      • id: string

        Unique identifier for this event.

      • processed_at: string

        A timestamp in RFC 3339 format

      • type: "agent.thinking"

        • "agent.thinking"
    • BetaManagedAgentsAgentMCPToolUseEvent object { id, input, mcp_server_name, 5 more }

      Event emitted when the agent invokes a tool provided by an MCP server.

      • id: string

        Unique identifier for this event.

      • input: map[unknown]

        Input parameters for the tool call.

      • mcp_server_name: string

        Name of the MCP server providing the tool.

      • name: string

        Name of the MCP tool being used.

      • processed_at: string

        A timestamp in RFC 3339 format

      • type: "agent.mcp_tool_use"

        • "agent.mcp_tool_use"
      • evaluated_permission: optional "allow" or "ask" or "deny"

        AgentEvaluatedPermission enum

        • "allow"

        • "ask"

        • "deny"

      • session_thread_id: optional string

        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 }

      Event representing the result of an MCP tool execution.

      • id: string

        Unique identifier for this event.

      • mcp_tool_use_id: string

        The id of the agent.mcp_tool_use event this result corresponds to.

      • processed_at: string

        A timestamp in RFC 3339 format

      • 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 }

          Regular text content.

        • BetaManagedAgentsImageBlock object { source, type }

          Image content specified directly as base64 data or as a reference via a URL.

        • BetaManagedAgentsDocumentBlock object { source, type, context, title }

          Document content, either specified directly as base64 data, as text, or as a reference via a URL.

        • BetaManagedAgentsSearchResultBlock object { citations, content, source, 2 more }

          A block containing a web search result.

      • is_error: optional boolean

        Whether the tool execution resulted in an error.

    • BetaManagedAgentsAgentToolUseEvent object { id, input, name, 4 more }

      Event emitted when the agent invokes a built-in agent tool.

      • id: string

        Unique identifier for this event.

      • input: map[unknown]

        Input parameters for the tool call.

      • name: string

        Name of the agent tool being used.

      • processed_at: string

        A timestamp in RFC 3339 format

      • type: "agent.tool_use"

        • "agent.tool_use"
      • evaluated_permission: optional "allow" or "ask" or "deny"

        AgentEvaluatedPermission enum

        • "allow"

        • "ask"

        • "deny"

      • session_thread_id: optional string

        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 }

      Event representing the result of an agent tool execution.

      • id: string

        Unique identifier for this event.

      • processed_at: string

        A timestamp in RFC 3339 format

      • 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 }

          Regular text content.

        • BetaManagedAgentsImageBlock object { source, type }

          Image content specified directly as base64 data or as a reference via a URL.

        • BetaManagedAgentsDocumentBlock object { source, type, context, title }

          Document content, either specified directly as base64 data, as text, or as a reference via a URL.

        • BetaManagedAgentsSearchResultBlock object { citations, content, source, 2 more }

          A block containing a web search result.

      • is_error: optional boolean

        Whether the tool execution resulted in an error.

    • BetaManagedAgentsAgentThreadMessageReceivedEvent object { id, content, from_session_thread_id, 3 more }

      Delivery event written to the target thread's input stream when an agent-to-agent message arrives.

      • id: string

        Unique identifier for this event.

      • content: array of BetaManagedAgentsTextBlock or BetaManagedAgentsImageBlock or BetaManagedAgentsDocumentBlock

        Message content blocks.

        • BetaManagedAgentsTextBlock object { text, type }

          Regular text content.

        • BetaManagedAgentsImageBlock object { source, type }

          Image content specified directly as base64 data or as a reference via a URL.

        • BetaManagedAgentsDocumentBlock object { source, type, context, title }

          Document content, either specified directly as base64 data, as text, or as a reference via a URL.

      • from_session_thread_id: string

        Public sthr_ ID of the thread that sent the message.

      • processed_at: string

        A timestamp in RFC 3339 format

      • type: "agent.thread_message_received"

        • "agent.thread_message_received"
      • from_agent_name: optional string

        Name of the callable agent this message came from. Absent when received from the primary agent.

    • BetaManagedAgentsAgentThreadMessageSentEvent object { id, content, processed_at, 3 more }

      Observability event emitted to the sender's output stream when an agent-to-agent message is sent.

      • id: string

        Unique identifier for this event.

      • content: array of BetaManagedAgentsTextBlock or BetaManagedAgentsImageBlock or BetaManagedAgentsDocumentBlock

        Message content blocks.

        • BetaManagedAgentsTextBlock object { text, type }

          Regular text content.

        • BetaManagedAgentsImageBlock object { source, type }

          Image content specified directly as base64 data or as a reference via a URL.

        • BetaManagedAgentsDocumentBlock object { source, type, context, title }

          Document content, either specified directly as base64 data, as text, or as a reference via a URL.

      • processed_at: string

        A timestamp in RFC 3339 format

      • 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

        Name of the callable agent this message was sent to. Absent when sent to the primary agent.

    • BetaManagedAgentsAgentThreadContextCompactedEvent object { id, processed_at, type }

      Indicates that context compaction (summarization) occurred during the session.

      • id: string

        Unique identifier for this event.

      • processed_at: string

        A timestamp in RFC 3339 format

      • type: "agent.thread_context_compacted"

        • "agent.thread_context_compacted"
    • BetaManagedAgentsSessionErrorEvent object { id, error, processed_at, type }

      An error event indicating a problem occurred during session execution.

      • id: string

        Unique identifier for this event.

      • error: BetaManagedAgentsUnknownError or BetaManagedAgentsModelOverloadedError or BetaManagedAgentsModelRateLimitedError or 4 more

        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 }

          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.

          • message: string

            Human-readable error description.

          • retry_status: BetaManagedAgentsRetryStatusRetrying or BetaManagedAgentsRetryStatusExhausted or BetaManagedAgentsRetryStatusTerminal

            What the client should do next in response to this error.

            • BetaManagedAgentsRetryStatusRetrying object { type }

              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 }

              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 }

              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 }

          The model is currently overloaded. Emitted after automatic retries are exhausted.

          • message: string

            Human-readable error description.

          • retry_status: BetaManagedAgentsRetryStatusRetrying or BetaManagedAgentsRetryStatusExhausted or BetaManagedAgentsRetryStatusTerminal

            What the client should do next in response to this error.

            • BetaManagedAgentsRetryStatusRetrying object { type }

              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 }

              This turn is dead; queued inputs are flushed and the session returns to idle. Client may send a new prompt.

            • BetaManagedAgentsRetryStatusTerminal object { type }

              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 }

          The model request was rate-limited.

          • message: string

            Human-readable error description.

          • retry_status: BetaManagedAgentsRetryStatusRetrying or BetaManagedAgentsRetryStatusExhausted or BetaManagedAgentsRetryStatusTerminal

            What the client should do next in response to this error.

            • BetaManagedAgentsRetryStatusRetrying object { type }

              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 }

              This turn is dead; queued inputs are flushed and the session returns to idle. Client may send a new prompt.

            • BetaManagedAgentsRetryStatusTerminal object { type }

              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 }

          A model request failed for a reason other than overload or rate-limiting.

          • message: string

            Human-readable error description.

          • retry_status: BetaManagedAgentsRetryStatusRetrying or BetaManagedAgentsRetryStatusExhausted or BetaManagedAgentsRetryStatusTerminal

            What the client should do next in response to this error.

            • BetaManagedAgentsRetryStatusRetrying object { type }

              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 }

              This turn is dead; queued inputs are flushed and the session returns to idle. Client may send a new prompt.

            • BetaManagedAgentsRetryStatusTerminal object { type }

              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 }

          Failed to connect to an MCP server.

          • mcp_server_name: string

            Name of the MCP server that failed to connect.

          • message: string

            Human-readable error description.

          • retry_status: BetaManagedAgentsRetryStatusRetrying or BetaManagedAgentsRetryStatusExhausted or BetaManagedAgentsRetryStatusTerminal

            What the client should do next in response to this error.

            • BetaManagedAgentsRetryStatusRetrying object { type }

              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 }

              This turn is dead; queued inputs are flushed and the session returns to idle. Client may send a new prompt.

            • BetaManagedAgentsRetryStatusTerminal object { type }

              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 }

          Authentication to an MCP server failed.

          • mcp_server_name: string

            Name of the MCP server that failed authentication.

          • message: string

            Human-readable error description.

          • retry_status: BetaManagedAgentsRetryStatusRetrying or BetaManagedAgentsRetryStatusExhausted or BetaManagedAgentsRetryStatusTerminal

            What the client should do next in response to this error.

            • BetaManagedAgentsRetryStatusRetrying object { type }

              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 }

              This turn is dead; queued inputs are flushed and the session returns to idle. Client may send a new prompt.

            • BetaManagedAgentsRetryStatusTerminal object { type }

              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 }

          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.

          • message: string

            Human-readable error description.

          • retry_status: BetaManagedAgentsRetryStatusRetrying or BetaManagedAgentsRetryStatusExhausted or BetaManagedAgentsRetryStatusTerminal

            What the client should do next in response to this error.

            • BetaManagedAgentsRetryStatusRetrying object { type }

              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 }

              This turn is dead; queued inputs are flushed and the session returns to idle. Client may send a new prompt.

            • BetaManagedAgentsRetryStatusTerminal object { type }

              The session encountered a terminal error and will transition to terminated state.

          • type: "billing_error"

            • "billing_error"
      • processed_at: string

        A timestamp in RFC 3339 format

      • type: "session.error"

        • "session.error"
    • BetaManagedAgentsSessionStatusRescheduledEvent object { id, processed_at, type }

      Indicates the session is recovering from an error state and is rescheduled for execution.

      • id: string

        Unique identifier for this event.

      • processed_at: string

        A timestamp in RFC 3339 format

      • type: "session.status_rescheduled"

        • "session.status_rescheduled"
    • BetaManagedAgentsSessionStatusRunningEvent object { id, processed_at, type }

      Indicates the session is actively running and the agent is working.

      • id: string

        Unique identifier for this event.

      • processed_at: string

        A timestamp in RFC 3339 format

      • type: "session.status_running"

        • "session.status_running"
    • BetaManagedAgentsSessionStatusIdleEvent object { id, processed_at, stop_reason, type }

      Indicates the agent has paused and is awaiting user input.

      • id: string

        Unique identifier for this event.

      • processed_at: string

        A timestamp in RFC 3339 format

      • stop_reason: BetaManagedAgentsSessionEndTurn or BetaManagedAgentsSessionRequiresAction or BetaManagedAgentsSessionRetriesExhausted

        The agent completed its turn naturally and is ready for the next user message.

        • BetaManagedAgentsSessionEndTurn object { type }

          The agent completed its turn naturally and is ready for the next user message.

          • type: "end_turn"

            • "end_turn"
        • BetaManagedAgentsSessionRequiresAction object { event_ids, type }

          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.

          • event_ids: array of string

            The ids of events the agent is blocked on. Resolving fewer than all re-emits session.status_idle with the remainder.

          • type: "requires_action"

            • "requires_action"
        • BetaManagedAgentsSessionRetriesExhausted object { type }

          The turn ended because the retry budget was exhausted (max_iterations hit or an error escalated to retry_status: 'exhausted').

          • type: "retries_exhausted"

            • "retries_exhausted"
      • type: "session.status_idle"

        • "session.status_idle"
    • BetaManagedAgentsSessionStatusTerminatedEvent object { id, processed_at, type }

      Indicates the session has terminated, either due to an error or completion.

      • id: string

        Unique identifier for this event.

      • processed_at: string

        A timestamp in RFC 3339 format

      • type: "session.status_terminated"

        • "session.status_terminated"
    • BetaManagedAgentsSessionThreadCreatedEvent object { id, agent_name, processed_at, 2 more }

      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.

      • id: string

        Unique identifier for this event.

      • agent_name: string

        Name of the callable agent the thread runs.

      • processed_at: string

        A timestamp in RFC 3339 format

      • 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 }

      Emitted when an outcome evaluation cycle begins.

      • id: string

        Unique identifier for this event.

      • iteration: number

        0-indexed revision cycle. 0 is the first evaluation; 1 is the re-evaluation after the first revision; etc.

      • outcome_id: string

        The outc_ ID of the outcome being evaluated.

      • processed_at: string

        A timestamp in RFC 3339 format

      • type: "span.outcome_evaluation_start"

        • "span.outcome_evaluation_start"
    • BetaManagedAgentsSpanOutcomeEvaluationEndEvent object { id, explanation, iteration, 6 more }

      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.

      • id: string

        Unique identifier for this event.

      • explanation: string

        Human-readable explanation of the verdict. For needs_revision, describes which criteria failed and why.

      • iteration: number

        0-indexed revision cycle, matching the corresponding span.outcome_evaluation_start.

      • outcome_evaluation_start_id: string

        The id of the corresponding span.outcome_evaluation_start event.

      • outcome_id: string

        The outc_ ID of the outcome being evaluated.

      • processed_at: string

        A timestamp in RFC 3339 format

      • 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.

        • cache_creation_input_tokens: number

          Tokens used to create prompt cache in this request.

        • cache_read_input_tokens: number

          Tokens read from prompt cache in this request.

        • input_tokens: number

          Input tokens consumed by this request.

        • output_tokens: number

          Output tokens generated by this request.

        • speed: optional "standard" or "fast"

          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.

          • "standard"

          • "fast"

    • BetaManagedAgentsSpanModelRequestStartEvent object { id, processed_at, type }

      Emitted when a model request is initiated by the agent.

      • id: string

        Unique identifier for this event.

      • processed_at: string

        A timestamp in RFC 3339 format

      • type: "span.model_request_start"

        • "span.model_request_start"
    • BetaManagedAgentsSpanModelRequestEndEvent object { id, is_error, model_request_start_id, 3 more }

      Emitted when a model request completes.

      • id: string

        Unique identifier for this event.

      • is_error: boolean

        Whether the model request resulted in an error.

      • model_request_start_id: string

        The id of the corresponding span.model_request_start event.

      • model_usage: BetaManagedAgentsSpanModelUsage

        Token usage for a single model request.

      • processed_at: string

        A timestamp in RFC 3339 format

      • type: "span.model_request_end"

        • "span.model_request_end"
    • BetaManagedAgentsSpanOutcomeEvaluationOngoingEvent object { id, iteration, outcome_id, 2 more }

      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.

      • id: string

        Unique identifier for this event.

      • iteration: number

        0-indexed revision cycle, matching the corresponding span.outcome_evaluation_start.

      • outcome_id: string

        The outc_ ID of the outcome being evaluated.

      • processed_at: string

        A timestamp in RFC 3339 format

      • type: "span.outcome_evaluation_ongoing"

        • "span.outcome_evaluation_ongoing"
    • BetaManagedAgentsUserDefineOutcomeEvent object { id, description, max_iterations, 4 more }

      Echo of a user.define_outcome input event. Carries the server-generated outcome_id that subsequent span.outcome_evaluation_* events reference.

      • id: string

        Unique identifier for this event.

      • description: string

        What the agent should produce. Copied from the input event.

      • max_iterations: number

        Evaluate-then-revise cycles before giving up. Default 3, max 20.

      • outcome_id: string

        Server-generated outc_ ID for this outcome. Referenced by span.outcome_evaluation_* events and the session's outcome_evaluations list.

      • processed_at: string

        A timestamp in RFC 3339 format

      • rubric: BetaManagedAgentsFileRubric or BetaManagedAgentsTextRubric

        Rubric for grading the quality of an outcome.

        • BetaManagedAgentsFileRubric object { file_id, type }

          Rubric referenced by a file uploaded via the Files API.

          • file_id: string

            ID of the rubric file.

          • type: "file"

            • "file"
        • BetaManagedAgentsTextRubric object { content, type }

          Rubric content provided inline as text.

          • content: string

            Rubric content. Plain text or markdown — the grader treats it as freeform text.

          • type: "text"

            • "text"
      • type: "user.define_outcome"

        • "user.define_outcome"
    • BetaManagedAgentsSessionDeletedEvent object { id, processed_at, type }

      Emitted when a session has been deleted. Terminates any active event stream — no further events will be emitted for this session.

      • id: string

        Unique identifier for this event.

      • processed_at: string

        A timestamp in RFC 3339 format

      • type: "session.deleted"

        • "session.deleted"
    • BetaManagedAgentsSessionThreadStatusRunningEvent object { id, agent_name, processed_at, 2 more }

      A session thread has begun executing. Emitted on the thread's own stream and cross-posted to the primary stream for child threads.

      • id: string

        Unique identifier for this event.

      • agent_name: string

        Name of the agent the thread runs.

      • processed_at: string

        A timestamp in RFC 3339 format

      • 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 }

      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.

      • id: string

        Unique identifier for this event.

      • agent_name: string

        Name of the agent the thread runs.

      • processed_at: string

        A timestamp in RFC 3339 format

      • session_thread_id: string

        Public sthr_ ID of the thread that went idle.

      • stop_reason: BetaManagedAgentsSessionEndTurn or BetaManagedAgentsSessionRequiresAction or BetaManagedAgentsSessionRetriesExhausted

        The agent completed its turn naturally and is ready for the next user message.

        • BetaManagedAgentsSessionEndTurn object { type }

          The agent completed its turn naturally and is ready for the next user message.

        • BetaManagedAgentsSessionRequiresAction object { event_ids, type }

          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 }

          The turn ended because the retry budget was exhausted (max_iterations hit or an error escalated to retry_status: 'exhausted').

      • type: "session.thread_status_idle"

        • "session.thread_status_idle"
    • BetaManagedAgentsSessionThreadStatusTerminatedEvent object { id, agent_name, processed_at, 2 more }

      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.

      • id: string

        Unique identifier for this event.

      • agent_name: string

        Name of the agent the thread runs.

      • processed_at: string

        A timestamp in RFC 3339 format

      • 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 }

      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.

      • id: string

        Unique identifier for this event.

      • tool_use_id: string

        The id of the agent.tool_use event this result corresponds to, which can be found in the last session.status_idle event's stop_reason.event_ids field.

      • 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 }

          Regular text content.

        • BetaManagedAgentsImageBlock object { source, type }

          Image content specified directly as base64 data or as a reference via a URL.

        • BetaManagedAgentsDocumentBlock object { source, type, context, title }

          Document content, either specified directly as base64 data, as text, or as a reference via a URL.

        • BetaManagedAgentsSearchResultBlock object { citations, content, source, 2 more }

          A block containing a web search result.

      • is_error: optional boolean

        Whether the tool execution resulted in an error.

      • processed_at: optional string

        A timestamp in RFC 3339 format

      • session_thread_id: optional string

        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 }

      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.

      • id: string

        Unique identifier for this event.

      • agent_name: string

        Name of the agent the thread runs.

      • processed_at: string

        A timestamp in RFC 3339 format

      • 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, 3 more }

      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.

      • id: string

        Unique identifier for this event.

      • processed_at: string

        A timestamp in RFC 3339 format

      • type: "session.updated"

        • "session.updated"
      • agent: optional BetaManagedAgentsSessionAgent

        Resolved agent definition for a session. Snapshot of the agent at session creation time.

        • id: string

        • description: string

        • mcp_servers: array of BetaManagedAgentsMCPServerURLDefinition

          • name: string

          • type: "url"

            • "url"
          • url: string

        • model: BetaManagedAgentsModelConfig

          Model identifier and configuration.

          • id: BetaManagedAgentsModel

            The model that will power your agent.

            See models for additional details and options.

            • "claude-opus-4-7" or "claude-opus-4-6" or "claude-sonnet-4-6" or 6 more

              The model that will power your agent.

              See models for additional details and options.

              • "claude-opus-4-7"

                Frontier intelligence for long-running agents and coding

              • "claude-opus-4-6"

                Most intelligent model for building agents and coding

              • "claude-sonnet-4-6"

                Best combination of speed and intelligence

              • "claude-haiku-4-5"

                Fastest model with near-frontier intelligence

              • "claude-haiku-4-5-20251001"

                Fastest model with near-frontier intelligence

              • "claude-opus-4-5"

                Premium model combining maximum intelligence with practical performance

              • "claude-opus-4-5-20251101"

                Premium model combining maximum intelligence with practical performance

              • "claude-sonnet-4-5"

                High-performance model for agents and coding

              • "claude-sonnet-4-5-20250929"

                High-performance model for agents and coding

            • string

          • speed: optional "standard" or "fast"

            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.

            • "standard"

            • "fast"

        • multiagent: BetaManagedAgentsSessionMultiagentCoordinator

          Resolved coordinator topology with full agent definitions for each roster member.

          • agents: array of BetaManagedAgentsSessionThreadAgent

            Full agent definitions the coordinator may spawn as session threads.

            • id: string

            • description: string

            • mcp_servers: array of BetaManagedAgentsMCPServerURLDefinition

              • name: string

              • type: "url"

              • url: string

            • model: BetaManagedAgentsModelConfig

              Model identifier and configuration.

            • name: string

            • skills: array of BetaManagedAgentsAnthropicSkill or BetaManagedAgentsCustomSkill

              • BetaManagedAgentsAnthropicSkill object { skill_id, type, version }

                A resolved Anthropic-managed skill.

                • skill_id: string

                • type: "anthropic"

                  • "anthropic"
                • version: string

              • BetaManagedAgentsCustomSkill object { skill_id, type, version }

                A resolved user-created custom skill.

                • skill_id: string

                • type: "custom"

                  • "custom"
                • version: string

            • system: string

            • tools: array of BetaManagedAgentsAgentToolset20260401 or BetaManagedAgentsMCPToolset or BetaManagedAgentsCustomTool

              • BetaManagedAgentsAgentToolset20260401 object { configs, default_config, type }

                • configs: array of BetaManagedAgentsAgentToolConfig

                  • enabled: boolean

                  • name: "bash" or "edit" or "read" or 5 more

                    Built-in agent tool identifier.

                    • "bash"

                    • "edit"

                    • "read"

                    • "write"

                    • "glob"

                    • "grep"

                    • "web_fetch"

                    • "web_search"

                  • permission_policy: BetaManagedAgentsAlwaysAllowPolicy or BetaManagedAgentsAlwaysAskPolicy

                    Permission policy for tool execution.

                    • BetaManagedAgentsAlwaysAllowPolicy object { type }

                      Tool calls are automatically approved without user confirmation.

                      • type: "always_allow"

                        • "always_allow"
                    • BetaManagedAgentsAlwaysAskPolicy object { type }

                      Tool calls require user confirmation before execution.

                      • type: "always_ask"

                        • "always_ask"
                • default_config: BetaManagedAgentsAgentToolsetDefaultConfig

                  Resolved default configuration for agent tools.

                  • enabled: boolean

                  • permission_policy: BetaManagedAgentsAlwaysAllowPolicy or BetaManagedAgentsAlwaysAskPolicy

                    Permission policy for tool execution.

                    • BetaManagedAgentsAlwaysAllowPolicy object { type }

                      Tool calls are automatically approved without user confirmation.

                    • BetaManagedAgentsAlwaysAskPolicy object { type }

                      Tool calls require user confirmation before execution.

                • type: "agent_toolset_20260401"

                  • "agent_toolset_20260401"
              • BetaManagedAgentsMCPToolset object { configs, default_config, mcp_server_name, type }

                • configs: array of BetaManagedAgentsMCPToolConfig

                  • enabled: boolean

                  • name: string

                  • permission_policy: BetaManagedAgentsAlwaysAllowPolicy or BetaManagedAgentsAlwaysAskPolicy

                    Permission policy for tool execution.

                    • BetaManagedAgentsAlwaysAllowPolicy object { type }

                      Tool calls are automatically approved without user confirmation.

                    • BetaManagedAgentsAlwaysAskPolicy object { type }

                      Tool calls require user confirmation before execution.

                • default_config: BetaManagedAgentsMCPToolsetDefaultConfig

                  Resolved default configuration for all tools from an MCP server.

                  • enabled: boolean

                  • permission_policy: BetaManagedAgentsAlwaysAllowPolicy or BetaManagedAgentsAlwaysAskPolicy

                    Permission policy for tool execution.

                    • BetaManagedAgentsAlwaysAllowPolicy object { type }

                      Tool calls are automatically approved without user confirmation.

                    • BetaManagedAgentsAlwaysAskPolicy object { type }

                      Tool calls require user confirmation before execution.

                • mcp_server_name: string

                • type: "mcp_toolset"

                  • "mcp_toolset"
              • BetaManagedAgentsCustomTool object { description, input_schema, name, type }

                A custom tool as returned in API responses.

                • description: string

                • input_schema: BetaManagedAgentsCustomToolInputSchema

                  JSON Schema for custom tool input parameters.

                  • properties: optional map[unknown]

                    JSON Schema properties defining the tool's input parameters.

                  • required: optional array of string

                    List of required property names.

                  • type: optional "object"

                    Must be 'object' for tool input schemas.

                    • "object"
                • name: string

                • type: "custom"

                  • "custom"
            • type: "agent"

              • "agent"
            • version: number

          • type: "coordinator"

            • "coordinator"
        • name: string

        • skills: array of BetaManagedAgentsAnthropicSkill or BetaManagedAgentsCustomSkill

          • BetaManagedAgentsAnthropicSkill object { skill_id, type, version }

            A resolved Anthropic-managed skill.

          • BetaManagedAgentsCustomSkill object { skill_id, type, version }

            A resolved user-created custom skill.

        • system: string

        • 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 }

            A custom tool as returned in API responses.

        • type: "agent"

          • "agent"
        • version: number

      • 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.

      • title: optional string

        The session's new title. Present only when the update changed it.

  • next_page: optional string

    Opaque cursor for the next page. Null when no more results.

Example

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

{
  "data": [
    {
      "id": "sevt_011CZkZGOp0iBcp4kaQSihUmy",
      "content": [
        {
          "text": "Where is my order #1234?",
          "type": "text"
        }
      ],
      "type": "user.message",
      "processed_at": "2026-03-15T10:00:00Z"
    }
  ],
  "next_page": "next_page"
}