---
title: "List Events"
method: GET
path: "/v1/sessions/{session_id}/events?beta=true"
---

# List Events

`GET /v1/sessions/{session_id}/events?beta=true`

## Request

- Base URL: `https://api.anthropic.com`
- URL: `https://api.anthropic.com/v1/sessions/{session_id}/events?beta=true`
- Auth: none declared
- TypeScript: <https://skmtc.dev/anthropics/apis/anthropic-api/docs/v1/sessions/:session_id/events%3Fbeta=true/get.ts> (a function with typed inputs; its response is checked against the schema)

## Path parameters

- `session_id` string, required

## Query parameters

- `limit` integer
- `page` string
- `order` 'asc' | 'desc'
- `types[]` BetaManagedAgentsSessionEventType[]
- `created_at[gte]` string, date-time: A timestamp in RFC 3339 format
- `created_at[gt]` string, date-time: A timestamp in RFC 3339 format
- `created_at[lte]` string, date-time: A timestamp in RFC 3339 format
- `created_at[lt]` string, date-time: A timestamp in RFC 3339 format

## Headers

- `anthropic-version` string: The version of the Claude API you want to use. Read more about versioning and our version history [here](https://platform.claude.com/docs/en/api/versioning).
- `anthropic-beta` AnthropicBeta[]: This endpoint is in beta: requests must send `managed-agents-2026-04-01` in this header.
  - union: Beta names you can send in the `anthropic-beta` header. See [Beta headers](https://platform.claude.com/docs/en/api/beta-headers) for how to send them and where to find the name a feature needs.
    - string
    - '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' | 'user-profiles-2026-08-18' | 'user-profiles-2026-09-04' | 'advisor-tool-2026-03-01' | 'managed-agents-2026-04-01' | 'cache-diagnosis-2026-04-07' | 'dreaming-2026-04-21' | 'thinking-token-count-2026-05-13' | 'server-side-fallback-2026-06-01' | 'server-side-fallback-2026-07-01' | 'fallback-credit-2026-06-01' | 'fallback-credit-2026-07-01' | 'agent-memory-2026-07-22' | 'mid-conversation-tool-changes-2026-07-01' | 'compact-2026-01-12' | 'computer-use-2025-11-24' | 'mcp-tunnels-2026-06-22' | 'structured-outputs-2025-11-13' | 'task-budgets-2026-03-13' | 'thinking-display-updates-2026-08-18' | 'ce-user-management-2026-07-13' | 'mid-conversation-output-config-2026-07-01' | 'thinking-binding-controls-2026-08-01' | 'mid-conversation-system-clear-at-2026-08-21' | 'compact-2026-09-04' | 'inline-tools-2026-09-15' | 'mcp-client-2026-09-15' | 'ce-plugins-2026-09-01' | 'spend-limit-reads-2026-09-26' | 'telemetry-destinations-2026-08-11' | 'webhooks-2026-10-07' | 'admin-user-sign-out-2026-10-08' | 'message-threads-2026-08-12' | 'analytics-usage-cost-2026-08-24' | 'experimental-claude-tag-2026-10-21'
- `anthropic-workspace-id` string

## Response `200`

Successful response (OK)

- BetaManagedAgentsListSessionEvents: Paginated list of events for a `session`.
  - `data` BetaManagedAgentsSessionEvent[]: Events for the session, ordered by `processed_at`.
    - union: Union type for all event types in a session.
      - object: A user message event in the session conversation.
        - `type` 'user.message', required
        - `id` string, required: Unique identifier for this event.
        - `content` BetaManagedAgentsUserContentBlock[], required: Array of content blocks comprising the user message.
          - union: Content block in a user message. Can be `text`, `image`, or `document`.
            - object: Regular text content.
              - …
            - object: Image content specified directly as base64 data or as a reference via a URL.
              - …
            - object: Document content, either specified directly as base64 data, as text, or as a reference via a URL.
              - …
            - object: Placeholder for content withheld by Anthropic model policy.
              - …
        - `processed_at` string, date-time: A timestamp in RFC 3339 format
      - object: An interrupt event that pauses agent execution and returns control to the user.
        - `type` 'user.interrupt', required
        - `id` string, required: Unique identifier for this event.
        - `processed_at` string, date-time: A timestamp in RFC 3339 format
        - `session_thread_id` string, nullable: 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.
      - object: A tool confirmation event that approves or denies a pending tool execution.
        - `type` 'user.tool_confirmation', required
        - `id` string, required: Unique identifier for this event.
        - `tool_use_id` string, required: 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](https://platform.claude.com/docs/en/api/beta/sessions/events/list#beta_managed_agents_session_requires_action.event_ids) `stop_reason.event_ids` field.
        - `result` 'allow' | 'deny', required
        - `deny_message` string, nullable: Optional message providing context for a 'deny' decision. Only allowed when result is 'deny'.
        - `processed_at` string, date-time: A timestamp in RFC 3339 format
        - `session_thread_id` string, nullable: Set by the server to the subagent thread this confirmation was routed to. Omitted when it was routed to the primary thread.
      - object: Event sent by the client providing the result of a custom tool execution.
        - `type` 'user.custom_tool_result', required
        - `id` string, required: Unique identifier for this event.
        - `custom_tool_use_id` string, required: The id of the `agent.custom_tool_use` event this result corresponds to. It is also listed in the last `session.status_idle` [event's](https://platform.claude.com/docs/en/api/beta/sessions/events/list#beta_managed_agents_session_requires_action.event_ids) `stop_reason.event_ids` field.
        - `content` BetaManagedAgentsToolResultContentBlock[]: The result content returned by the tool.
          - union: Content block in a tool result. Can be `text`, `image`, `document`, or `search_result`.
            - object: Regular text content.
              - …
            - object: Image content specified directly as base64 data or as a reference via a URL.
              - …
            - object: Document content, either specified directly as base64 data, as text, or as a reference via a URL.
              - …
            - object: A block containing a web search result.
              - …
        - `is_error` boolean, nullable: Whether the tool execution resulted in an error.
        - `processed_at` string, date-time: A timestamp in RFC 3339 format
        - `session_thread_id` string, nullable: Set by the server to the subagent thread this result was routed to. Omitted when it was routed to the primary thread.
      - 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. The client can send it as soon as this event arrives, without waiting for `session.status_idle`.
        - `type` 'agent.custom_tool_use', required
        - `id` string, required: Unique identifier for this event.
        - `name` string, required: Name of the custom tool being called.
        - `input` BetaManagedAgentsStruct, required
        - `processed_at` string, date-time, required: A timestamp in RFC 3339 format
        - `session_thread_id` string, nullable: 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. Informational only: the server routes the matching `user.custom_tool_result` by `custom_tool_use_id`, so clients do not send it back.
      - object: An agent response event in the session conversation.
        - `type` 'agent.message', required
        - `id` string, required: Unique identifier for this event.
        - `content` BetaManagedAgentsAgentMessageContentBlock[], required: Array of text blocks comprising the agent response.
          - union: Content block in an agent message.
            - object: Regular text content.
              - …
            - object: Placeholder for content withheld by Anthropic model policy.
              - …
        - `processed_at` string, date-time, required: A timestamp in RFC 3339 format
      - object: Indicates the agent is making forward progress via extended thinking. A progress signal, not a content carrier.
        - `type` 'agent.thinking', required
        - `id` string, required: Unique identifier for this event.
        - `processed_at` string, date-time, required: A timestamp in RFC 3339 format
      - object: Event emitted when the agent invokes a tool provided by an MCP server.
        - `type` 'agent.mcp_tool_use', required
        - `id` string, required: Unique identifier for this event.
        - `name` string, required: Name of the MCP tool being used.
        - `mcp_server_name` string, required: Name of the MCP server providing the tool.
        - `input` BetaManagedAgentsStruct, required
        - `processed_at` string, date-time, required: A timestamp in RFC 3339 format
        - `evaluated_permission` 'allow' | 'ask' | 'deny'
        - `session_thread_id` string, nullable: 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. Informational only: the server routes the matching `user.tool_confirmation` by `tool_use_id`, so clients do not send it back.
        - `evaluation` union: Names the resolved permission_policy that produced evaluated_permission, and under auto carries the judgement. Open union: clients must tolerate unknown variants.
          - BetaManagedAgentsAgentToolEvaluationAlwaysAllow: The resolved permission_policy was always_allow; accompanies evaluated_permission "allow".
            - `type` 'always_allow', required
          - BetaManagedAgentsAgentToolEvaluationAlwaysAsk: The resolved permission_policy was always_ask; accompanies evaluated_permission "ask".
            - `type` 'always_ask', required
          - BetaManagedAgentsAgentToolEvaluationAuto: The resolved permission_policy was auto: the server judged this invocation individually.
            - `type` 'auto', required
            - `evaluated_permission` union, required: The server's per-invocation judgement under the auto permission policy. Its type always equals the event's top-level evaluated_permission. Open union: clients must tolerate unknown variants.
              - …
      - object: Event representing the result of an MCP tool execution.
        - `type` 'agent.mcp_tool_result', required
        - `id` string, required: Unique identifier for this event.
        - `mcp_tool_use_id` string, required: The id of the `agent.mcp_tool_use` event this result corresponds to.
        - `content` BetaManagedAgentsToolResultContentBlock[]: The result content returned by the tool.
          - union: Content block in a tool result. Can be `text`, `image`, `document`, or `search_result`.
            - object: Regular text content.
              - …
            - object: Image content specified directly as base64 data or as a reference via a URL.
              - …
            - object: Document content, either specified directly as base64 data, as text, or as a reference via a URL.
              - …
            - object: A block containing a web search result.
              - …
        - `is_error` boolean, nullable: Whether the tool execution resulted in an error.
        - `processed_at` string, date-time, required: A timestamp in RFC 3339 format
      - object: Event emitted when the agent invokes a built-in agent tool.
        - `type` 'agent.tool_use', required
        - `id` string, required: Unique identifier for this event.
        - `name` string, required: Name of the agent tool being used.
        - `input` BetaManagedAgentsStruct, required
        - `processed_at` string, date-time, required: A timestamp in RFC 3339 format
        - `evaluated_permission` 'allow' | 'ask' | 'deny'
        - `session_thread_id` string, nullable: 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. Informational only: the server routes the matching `user.tool_confirmation` or `user.tool_result` by `tool_use_id`, so clients do not send it back.
        - `evaluation` union: Names the resolved permission_policy that produced evaluated_permission, and under auto carries the judgement. Open union: clients must tolerate unknown variants.
          - BetaManagedAgentsAgentToolEvaluationAlwaysAllow: The resolved permission_policy was always_allow; accompanies evaluated_permission "allow".
            - `type` 'always_allow', required
          - BetaManagedAgentsAgentToolEvaluationAlwaysAsk: The resolved permission_policy was always_ask; accompanies evaluated_permission "ask".
            - `type` 'always_ask', required
          - BetaManagedAgentsAgentToolEvaluationAuto: The resolved permission_policy was auto: the server judged this invocation individually.
            - `type` 'auto', required
            - `evaluated_permission` union, required: The server's per-invocation judgement under the auto permission policy. Its type always equals the event's top-level evaluated_permission. Open union: clients must tolerate unknown variants.
              - …
      - object: Event representing the result of an agent tool execution.
        - `type` 'agent.tool_result', required
        - `id` string, required: Unique identifier for this event.
        - `tool_use_id` string, required: The id of the `agent.tool_use` event this result corresponds to.
        - `content` BetaManagedAgentsToolResultContentBlock[]: The result content returned by the tool.
          - union: Content block in a tool result. Can be `text`, `image`, `document`, or `search_result`.
            - object: Regular text content.
              - …
            - object: Image content specified directly as base64 data or as a reference via a URL.
              - …
            - object: Document content, either specified directly as base64 data, as text, or as a reference via a URL.
              - …
            - object: A block containing a web search result.
              - …
        - `is_error` boolean, nullable: Whether the tool execution resulted in an error.
        - `processed_at` string, date-time, required: A timestamp in RFC 3339 format
      - object: Delivery event written to the target thread's input stream when an agent-to-agent message arrives.
        - `type` 'agent.thread_message_received', required
        - `id` string, required: Unique identifier for this event.
        - `processed_at` string, date-time, required: A timestamp in RFC 3339 format
        - `from_agent_name` string, nullable: Name of the callable agent this message came from. Absent when received from the primary agent.
        - `content` BetaManagedAgentsUserContentBlock[], required: Message content blocks.
          - union: Content block in a user message. Can be `text`, `image`, or `document`.
            - object: Regular text content.
              - …
            - object: Image content specified directly as base64 data or as a reference via a URL.
              - …
            - object: Document content, either specified directly as base64 data, as text, or as a reference via a URL.
              - …
            - object: Placeholder for content withheld by Anthropic model policy.
              - …
        - `from_session_thread_id` string, required: Public `sthr_` ID of the thread that sent the message.
      - object: Observability event emitted to the sender's output stream when an agent-to-agent message is sent.
        - `type` 'agent.thread_message_sent', required
        - `id` string, required: Unique identifier for this event.
        - `processed_at` string, date-time, required: A timestamp in RFC 3339 format
        - `to_agent_name` string, nullable: Name of the callable agent this message was sent to. Absent when sent to the primary agent.
        - `content` BetaManagedAgentsUserContentBlock[], required: Message content blocks.
          - union: Content block in a user message. Can be `text`, `image`, or `document`.
            - object: Regular text content.
              - …
            - object: Image content specified directly as base64 data or as a reference via a URL.
              - …
            - object: Document content, either specified directly as base64 data, as text, or as a reference via a URL.
              - …
            - object: Placeholder for content withheld by Anthropic model policy.
              - …
        - `to_session_thread_id` string, required: Public `sthr_` ID of the thread the message was sent to.
      - object: Indicates that context compaction (summarization) occurred during the session.
        - `type` 'agent.thread_context_compacted', required
        - `id` string, required: Unique identifier for this event.
        - `processed_at` string, date-time, required: A timestamp in RFC 3339 format
      - object: An error event indicating a problem occurred during session execution.
        - `type` 'session.error', required
        - `id` string, required: Unique identifier for this event.
        - `processed_at` string, date-time, required: A timestamp in RFC 3339 format
        - `error` union, required
          - 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.
            - `type` 'unknown_error', required
            - `message` string, required: Human-readable error description.
            - `retry_status` union, required: What the client should do next in response to this error.
              - …
          - object: The model is currently overloaded. Emitted after automatic retries are exhausted.
            - `type` 'model_overloaded_error', required
            - `message` string, required: Human-readable error description.
            - `retry_status` union, required: What the client should do next in response to this error.
              - …
          - object: The model request was rate-limited.
            - `type` 'model_rate_limited_error', required
            - `message` string, required: Human-readable error description.
            - `retry_status` union, required: What the client should do next in response to this error.
              - …
          - object: A model request failed for a reason other than overload or rate-limiting.
            - `type` 'model_request_failed_error', required
            - `message` string, required: Human-readable error description.
            - `retry_status` union, required: What the client should do next in response to this error.
              - …
          - object: Failed to connect to an MCP server.
            - `type` 'mcp_connection_failed_error', required
            - `message` string, required: Human-readable error description.
            - `retry_status` union, required: What the client should do next in response to this error.
              - …
            - `mcp_server_name` string, required: Name of the MCP server that failed to connect.
          - object: Authentication to an MCP server failed.
            - `type` 'mcp_authentication_failed_error', required
            - `message` string, required: Human-readable error description.
            - `retry_status` union, required: What the client should do next in response to this error.
              - …
            - `mcp_server_name` string, required: Name of the MCP server that failed authentication.
          - 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.
            - `type` 'billing_error', required
            - `message` string, required: Human-readable error description.
            - `retry_status` union, required: What the client should do next in response to this error.
              - …
          - object: An `environment_variable` credential's `auth.networking.allowed_hosts` includes a host the environment's network policy does not permit.
            - `type` 'credential_host_unreachable_error', required
            - `message` string, required: Human-readable error description.
            - `retry_status` union, required: What the client should do next in response to this error.
              - …
            - `vault_id` string, required: ID of the vault containing the affected credential.
            - `credential_id` string, required: ID of the affected credential.
          - object: The turn stopped because the agent loop reached its limit on tool-use rounds (one model response that calls tools, plus running those tools, is one round), not because a request failed. The thread goes idle with `stop_reason: retries_exhausted` (a child thread then terminates); the next `user.message` starts a new turn.
            - `type` 'tool_use_limit_reached_error', required
            - `message` string, required: Human-readable error description.
            - `retry_status` union, required: What the client should do next in response to this error.
              - …
          - object: The turn stopped because the context was compacted the maximum number of times in a row without the model producing a message or a tool call, not because a request failed. The thread goes idle with `stop_reason: retries_exhausted` (a child thread then terminates); the next `user.message` starts a new turn.
            - `type` 'compaction_limit_reached_error', required
            - `message` string, required: Human-readable error description.
            - `retry_status` union, required: What the client should do next in response to this error.
              - …
          - object: The repository host rejected the credentials, or required credentials and received none.
            - `type` 'repository_authentication_error', required
            - `message` string, required: Human-readable error description.
            - `retry_status` union, required: What the client should do next in response to this error.
              - …
            - `repository_url` string, nullable, required: URL of the repository that could not be cloned. Null when it could not be identified.
          - object: The repository host refused access to the repository.
            - `type` 'repository_forbidden_error', required
            - `message` string, required: Human-readable error description.
            - `retry_status` union, required: What the client should do next in response to this error.
              - …
            - `repository_url` string, nullable, required: URL of the repository that could not be cloned. Null when it could not be identified.
          - object: The repository host reported the repository as not found.
            - `type` 'repository_not_found_error', required
            - `message` string, required: Human-readable error description.
            - `retry_status` union, required: What the client should do next in response to this error.
              - …
            - `repository_url` string, nullable, required: URL of the repository that could not be cloned. Null when it could not be identified.
          - object: The requested branch or commit does not exist in the repository.
            - `type` 'repository_checkout_error', required
            - `message` string, required: Human-readable error description.
            - `retry_status` union, required: What the client should do next in response to this error.
              - …
            - `repository_url` string, nullable, required: URL of the repository that could not be cloned. Null when it could not be identified.
          - object: The repository could not be cloned.
            - `type` 'repository_clone_error', required
            - `message` string, required: Human-readable error description.
            - `retry_status` union, required: What the client should do next in response to this error.
              - …
            - `repository_url` string, nullable, required: URL of the repository that could not be cloned. Null when it could not be identified.
      - object: Indicates the session is recovering from an error state and is rescheduled for execution.
        - `type` 'session.status_rescheduled', required
        - `id` string, required: Unique identifier for this event.
        - `processed_at` string, date-time, required: A timestamp in RFC 3339 format
      - object: Indicates the session is actively running and the agent is working.
        - `type` 'session.status_running', required
        - `id` string, required: Unique identifier for this event.
        - `processed_at` string, date-time, required: A timestamp in RFC 3339 format
      - object: Indicates the agent has paused and is awaiting user input.
        - `type` 'session.status_idle', required
        - `id` string, required: Unique identifier for this event.
        - `processed_at` string, date-time, required: A timestamp in RFC 3339 format
        - `stop_details` BetaManagedAgentsSessionStopDetails, required: Structured information about a refusal.
          - `type` 'refusal', required
          - `category` 'cyber' | 'bio' | 'frontier_llm' | 'reasoning_extraction' | 'general_harms', nullable, required: The policy category that triggered the refusal, or `null` when there is no named category. New values can be added over time.
          - `explanation` string, nullable, required: Human-readable explanation of the refusal, or `null` when none is available. The wording can change, so do not parse it.
        - `stop_reason` union, required
          - object: The agent completed its turn naturally and is ready for the next user message.
            - `type` 'end_turn', required
          - 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', required
            - `event_ids` string[], required: The ids of events the agent is blocked on. Resolving fewer than all re-emits `session.status_idle` with the remainder.
          - object: The turn ended because repeated errors exhausted the retry budget or an error escalated to `retry_status: 'exhausted'`.
            - `type` 'retries_exhausted', required
          - 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', required
          - object: The turn ended because the model's response was refused, for example by a safety classifier.
            - `type` 'refusal', required
      - object: Indicates the session has terminated, either due to an error or completion.
        - `type` 'session.status_terminated', required
        - `id` string, required: Unique identifier for this event.
        - `processed_at` string, date-time, required: A timestamp in RFC 3339 format
      - object: Emitted when a child thread is created. Written to the parent thread's output stream so clients observing the session see child creation.
        - `type` 'session.thread_created', required
        - `id` string, required: Unique identifier for this event.
        - `processed_at` string, date-time, required: A timestamp in RFC 3339 format
        - `agent_name` string, required: Name of the callable agent the thread runs.
        - `session_thread_id` string, required: Public `sthr_` ID of the newly created thread.
        - `workflow_run_id` string, nullable, required: Identifier of the workflow run that created the thread, or `null` for any other thread.
      - object: Emitted when an outcome evaluation cycle begins.
        - `type` 'span.outcome_evaluation_start', required
        - `id` string, required: Unique identifier for this event.
        - `processed_at` string, date-time, required: A timestamp in RFC 3339 format
        - `iteration` integer, required: 0-indexed revision cycle. 0 is the first evaluation; 1 is the re-evaluation after the first revision; etc.
        - `outcome_id` string, required: The `outc_` ID of the outcome being evaluated.
      - 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.
        - `type` 'span.outcome_evaluation_end', required
        - `id` string, required: Unique identifier for this event.
        - `processed_at` string, date-time, required: A timestamp in RFC 3339 format
        - `outcome_evaluation_start_id` string, required: The id of the corresponding `span.outcome_evaluation_start` event.
        - `iteration` integer, required: 0-indexed revision cycle, matching the corresponding `span.outcome_evaluation_start`.
        - `result` string, required: 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.
        - `explanation` string, required: Human-readable explanation of the verdict. For `needs_revision`, describes which criteria failed and why.
        - `usage` BetaManagedAgentsSpanModelUsage, required: Token usage for a single model request.
          - `input_tokens` integer, required: Input tokens consumed by this request.
          - `output_tokens` integer, required: Output tokens generated by this request.
          - `cache_creation_input_tokens` integer, required: Tokens used to create prompt cache in this request.
          - `cache_read_input_tokens` integer, required: Tokens read from prompt cache in this request.
          - `speed` 'standard' | 'fast', nullable: Inference speed tier this request actually ran at. Mirrors `usage.speed` on /v1/messages. Only present when the fast-mode beta is active.
        - `outcome_id` string, required: The `outc_` ID of the outcome being evaluated.
      - object: Emitted when a model request is initiated by the agent.
        - `type` 'span.model_request_start', required
        - `id` string, required: Unique identifier for this event.
        - `processed_at` string, date-time, required: A timestamp in RFC 3339 format
      - object: Emitted when a model request completes.
        - `type` 'span.model_request_end', required
        - `id` string, required: Unique identifier for this event.
        - `processed_at` string, date-time, required: A timestamp in RFC 3339 format
        - `is_error` boolean, nullable, required: Whether the model request resulted in an error.
        - `model_usage` BetaManagedAgentsSpanModelUsage, required: Token usage for a single model request.
          - `input_tokens` integer, required: Input tokens consumed by this request.
          - `output_tokens` integer, required: Output tokens generated by this request.
          - `cache_creation_input_tokens` integer, required: Tokens used to create prompt cache in this request.
          - `cache_read_input_tokens` integer, required: Tokens read from prompt cache in this request.
          - `speed` 'standard' | 'fast', nullable: Inference speed tier this request actually ran at. Mirrors `usage.speed` on /v1/messages. Only present when the fast-mode beta is active.
        - `model_request_start_id` string, required: The id of the corresponding `span.model_request_start` event.
      - 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.
        - `type` 'span.outcome_evaluation_ongoing', required
        - `id` string, required: Unique identifier for this event.
        - `processed_at` string, date-time, required: A timestamp in RFC 3339 format
        - `iteration` integer, required: 0-indexed revision cycle, matching the corresponding `span.outcome_evaluation_start`.
        - `outcome_id` string, required: The `outc_` ID of the outcome being evaluated.
      - object: Echo of a `user.define_outcome` input event. Carries the server-generated `outcome_id` that subsequent `span.outcome_evaluation_*` events reference.
        - `type` 'user.define_outcome', required
        - `id` string, required: Unique identifier for this event.
        - `processed_at` string, date-time, required: A timestamp in RFC 3339 format
        - `outcome_id` string, required: Server-generated `outc_` ID for this outcome. Referenced by `span.outcome_evaluation_*` events and the session's `outcome_evaluations` list.
        - `description` string, required: What the agent should produce. Copied from the input event.
        - `max_iterations` integer, nullable, required: Evaluate-then-revise cycles before giving up. Default 3, max 20.
        - `rubric` union, required: Rubric for grading the quality of an outcome.
          - BetaManagedAgentsFileRubric: Rubric referenced by a file uploaded via the Files API.
            - `type` 'file', required
            - `file_id` string, required: ID of the rubric file.
          - BetaManagedAgentsTextRubric: Rubric content provided inline as text.
            - `type` 'text', required
            - `content` string, required: Rubric content. Plain text or markdown — the grader treats it as freeform text.
      - object: Emitted when a session has been deleted. Terminates any active event stream — no further events will be emitted for this session.
        - `type` 'session.deleted', required
        - `id` string, required: Unique identifier for this event.
        - `processed_at` string, date-time, required: A timestamp in RFC 3339 format
      - object: A session thread has begun executing. Emitted on the thread's own stream and cross-posted to the primary stream for child threads.
        - `type` 'session.thread_status_running', required
        - `id` string, required: Unique identifier for this event.
        - `session_thread_id` string, required: Public sthr_ ID of the thread that started running.
        - `processed_at` string, date-time, required: A timestamp in RFC 3339 format
        - `agent_name` string, required: Name of the agent the thread runs.
      - 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.
        - `type` 'session.thread_status_idle', required
        - `id` string, required: Unique identifier for this event.
        - `session_thread_id` string, required: Public sthr_ ID of the thread that went idle.
        - `processed_at` string, date-time, required: A timestamp in RFC 3339 format
        - `agent_name` string, required: Name of the agent the thread runs.
        - `stop_details` BetaManagedAgentsSessionStopDetails, required: Structured information about a refusal.
          - `type` 'refusal', required
          - `category` 'cyber' | 'bio' | 'frontier_llm' | 'reasoning_extraction' | 'general_harms', nullable, required: The policy category that triggered the refusal, or `null` when there is no named category. New values can be added over time.
          - `explanation` string, nullable, required: Human-readable explanation of the refusal, or `null` when none is available. The wording can change, so do not parse it.
        - `stop_reason` union, required
          - object: The agent completed its turn naturally and is ready for the next user message.
            - `type` 'end_turn', required
          - 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', required
            - `event_ids` string[], required: The ids of events the agent is blocked on. Resolving fewer than all re-emits `session.status_idle` with the remainder.
          - object: The turn ended because repeated errors exhausted the retry budget or an error escalated to `retry_status: 'exhausted'`.
            - `type` 'retries_exhausted', required
          - 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', required
          - object: The turn ended because the model's response was refused, for example by a safety classifier.
            - `type` 'refusal', required
      - 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.
        - `type` 'session.thread_status_terminated', required
        - `id` string, required: Unique identifier for this event.
        - `session_thread_id` string, required: Public sthr_ ID of the thread that terminated.
        - `processed_at` string, date-time, required: A timestamp in RFC 3339 format
        - `agent_name` string, required: Name of the agent the thread runs.
      - 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', required
        - `id` string, required: Unique identifier for this event.
        - `tool_use_id` string, required: The id of the `agent.tool_use` event this result corresponds to, which can be found in the last `session.status_idle` [event's](https://platform.claude.com/docs/en/api/beta/sessions/events/list#beta_managed_agents_session_requires_action.event_ids) `stop_reason.event_ids` field.
        - `content` BetaManagedAgentsToolResultContentBlock[]: The result content returned by the tool.
          - union: Content block in a tool result. Can be `text`, `image`, `document`, or `search_result`.
            - object: Regular text content.
              - …
            - object: Image content specified directly as base64 data or as a reference via a URL.
              - …
            - object: Document content, either specified directly as base64 data, as text, or as a reference via a URL.
              - …
            - object: A block containing a web search result.
              - …
        - `is_error` boolean, nullable: Whether the tool execution resulted in an error.
        - `processed_at` string, date-time: A timestamp in RFC 3339 format
        - `session_thread_id` string, nullable: Set by the server to the subagent thread this result was routed to. Omitted when it was routed to the primary thread.
      - 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.
        - `type` 'session.thread_status_rescheduled', required
        - `id` string, required: Unique identifier for this event.
        - `session_thread_id` string, required: Public sthr_ ID of the thread that is retrying.
        - `processed_at` string, date-time, required: A timestamp in RFC 3339 format
        - `agent_name` string, required: Name of the agent the thread runs.
      - 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.
        - `type` 'session.updated', required
        - `id` string, required: Unique identifier for this event.
        - `processed_at` string, date-time, required: A timestamp in RFC 3339 format
        - `title` string, nullable: The session's new title. Present only when the update changed it.
        - `metadata` object: 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.
        - `agent` BetaManagedAgentsSessionAgent: Resolved `agent` definition for a `session`. Snapshot of the `agent` at `session` creation time.
          - `type` 'agent', required
          - `id` string, required
          - `version` integer, required
          - `name` string, required
          - `description` string, nullable, required
          - `model` BetaManagedAgentsModelConfig, required: Model identifier and configuration.
            - `id` union, required: The model that will power your agent. See [models](https://docs.anthropic.com/en/docs/models-overview) for additional details and options.
              - …
            - `speed` 'standard' | 'fast'
            - `effort` union: How hard Claude works on each turn. Sets `output_config.effort` on every Messages call the session makes.
              - …
            - `inference_geo` string: Geographic region for model inference. When unset, requests fall through to the workspace's default_inference_geo.
          - `system` string, nullable, required
          - `tools` BetaManagedAgentsAgentTool[], required
            - union: Union type for tool configurations returned in API responses.
              - …
          - `mcp_servers` BetaManagedAgentsMCPServer[], required
            - `type` 'url', required
            - `name` string, required
            - `url` string, required
          - `skills` BetaManagedAgentsSkill[], required
            - union: Resolved skill as returned in API responses.
              - …
          - `multiagent` union, required: Resolved multiagent orchestration configuration as returned on a `session`.
            - object: Resolved coordinator topology with full agent definitions for each roster member.
              - …
            - object: Resolved multiagent configuration with three members, as copied to the `session` at creation.
              - …
          - `execution_identity` union, required: Execution principal for runs of this agent as returned in API responses.
            - BetaManagedAgentsAwsRoleExecutionIdentity: An AWS IAM role principal as returned in API responses.
              - …
            - BetaManagedAgentsServiceAccountExecutionIdentity: The Anthropic-managed service account as returned in API responses.
              - …
        - `budget` object, nullable: A hard spend ceiling. The session stops issuing new model requests once the tracked list cost reaches `max_list_cost`.
          - `type` 'limit', required
          - `max_list_cost` BetaMonetaryAmount, required: A monetary amount in a specific currency.
            - `currency` 'USD', required
            - `amount` string, required: Amount in minor units of the currency, as an integer decimal string with no leading zeros: "2500" is $25.00 and "50" is fifty cents. A string rather than a number so no float rounding is ever applied.
      - object: A mid-conversation system message event. Carries system-role content that is appended to the session as a `role: "system"` turn.
        - `type` 'system.message', required
        - `id` string, required: Unique identifier for this event.
        - `content` BetaManagedAgentsSystemContentBlock[], required: System content blocks. Text-only.
          - `type` 'text', required
          - `text` string, required: The text content.
        - `processed_at` string, date-time: A timestamp in RFC 3339 format
      - object: Periodic snapshot of the session's cumulative usage and tracked list cost.
        - `type` 'session.usage', required
        - `id` string, required: Unique identifier for this event.
        - `processed_at` string, date-time, required: A timestamp in RFC 3339 format
        - `usage` BetaManagedAgentsSessionUsageSnapshot, required: Point-in-time snapshot of a session's cumulative usage.
          - `input_tokens` integer: Total input tokens consumed across all turns.
          - `output_tokens` integer: Total output tokens generated across all turns.
          - `cache_read_input_tokens` integer: Total tokens read from prompt cache.
          - `cache_creation` BetaManagedAgentsCacheCreationUsage: Prompt-cache creation token usage broken down by cache lifetime.
            - `ephemeral_1h_input_tokens` integer: Tokens used to create 1-hour ephemeral cache entries.
            - `ephemeral_5m_input_tokens` integer: Tokens used to create 5-minute ephemeral cache entries.
          - `list_cost` BetaMonetaryAmount: A monetary amount in a specific currency.
            - `currency` 'USD', required
            - `amount` string, required: Amount in minor units of the currency, as an integer decimal string with no leading zeros: "2500" is $25.00 and "50" is fifty cents. A string rather than a number so no float rounding is ever applied.
          - `server_tool_use` BetaManagedAgentsServerToolUsage: Cumulative count of server-executed tool invocations, broken down by tool.
            - `web_search_requests` integer: Number of server-executed web search requests.
            - `web_fetch_requests` integer: Number of server-executed web fetch requests.
          - `active_seconds` number, double: 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.
        - `budget` BetaManagedAgentsBudget: A hard spend ceiling. The session stops issuing new model requests once the tracked list cost reaches `max_list_cost`.
          - `type` 'limit', required
          - `max_list_cost` BetaMonetaryAmount, required: A monetary amount in a specific currency.
            - `currency` 'USD', required
            - `amount` string, required: Amount in minor units of the currency, as an integer decimal string with no leading zeros: "2500" is $25.00 and "50" is fifty cents. A string rather than a number so no float rounding is ever applied.
      - object: A workflow run was created. A workflow run is background work that the session's agent starts. Emitted once per run, before the run's other `workflow_run.*` events.
        - `type` 'workflow_run.created', required
        - `id` string, required: Unique identifier for this event.
        - `processed_at` string, date-time, required: A timestamp in RFC 3339 format
        - `workflow_run_id` string, required: Identifier of the run. The same value is on all of the run's `workflow_run.*` events.
        - `name` string, required: Name that the agent gave the run, passed on as written, or a name that the server assigned.
        - `description` string, nullable, required: Description that the agent gave the run, passed on as written, or `null` if it gave none.
        - `phases` BetaManagedAgentsWorkflowRunPhase[], required: The phases that the run's plan declares, in the plan's order. Can be empty.
          - `id` string, required: Unique identifier for the phase.
          - `name` string, required: Name that the agent gave the phase, passed on as written.
          - `description` string, nullable, required: Description that the agent gave the phase, passed on as written, or `null` if it gave none.
      - object: A workflow run ended. Emitted once per run, as the last of the run's `workflow_run.*` events.
        - `type` 'workflow_run.status_ended', required
        - `id` string, required: Unique identifier for this event.
        - `processed_at` string, date-time, required: A timestamp in RFC 3339 format
        - `workflow_run_id` string, required: Identifier of the run. The same value is on all of the run's `workflow_run.*` events.
        - `result` union, required: How a workflow run ended.
          - object: The run's plan, a program that the agent wrote, finished. This does not say whether the work succeeded.
            - `type` 'completed', required
          - object: The run failed or reached its time limit.
            - `type` 'error', required
            - `error` union, required: Why a workflow run did not finish, or was not created. More types may be added. On `workflow_run.status_ended`, for a `type` you do not recognize, rely on the event's `result.type`.
              - …
          - object: The agent stopped the run.
            - `type` 'stopped', required
      - object: A workflow run's plan entered a phase.
        - `type` 'workflow_run.phase_started', required
        - `id` string, required: Unique identifier for this event.
        - `processed_at` string, date-time, required: A timestamp in RFC 3339 format
        - `workflow_run_id` string, required: Identifier of the run. The same value is on all of the run's `workflow_run.*` events.
        - `workflow_run_phase_id` string, required: Identifier of the phase, as in `phases` on the run's `workflow_run.created` event.
      - object: A workflow run's plan left a phase, or the run's end closed it. Emitted once for every `workflow_run.phase_started` event, before the run's `workflow_run.status_ended` event. The event does not say whether the plan finished the phase's work, or why it left.
        - `type` 'workflow_run.phase_ended', required
        - `id` string, required: Unique identifier for this event.
        - `processed_at` string, date-time, required: A timestamp in RFC 3339 format
        - `workflow_run_id` string, required: Identifier of the run. The same value is on all of the run's `workflow_run.*` events.
        - `workflow_run_phase_id` string, required: Identifier of the phase, as in `phases` on the run's `workflow_run.created` event.
        - `phase_started_id` string, required: Identifier of the `workflow_run.phase_started` event that opened the phase.
      - object: A workflow run is running. Emitted when the run starts to execute, and each time it resumes after being idle. A run that starts idle emits `workflow_run.status_idle` first.
        - `type` 'workflow_run.status_running', required
        - `id` string, required: Unique identifier for this event.
        - `processed_at` string, date-time, required: A timestamp in RFC 3339 format
        - `workflow_run_id` string, required: Identifier of the run. The same value is on all of the run's `workflow_run.*` events.
      - object: A workflow run is idle. Emitted each time the run goes idle, whatever the cause. If the run ends while idle, no `workflow_run.status_running` comes between this event and its `workflow_run.status_ended`.
        - `type` 'workflow_run.status_idle', required
        - `id` string, required: Unique identifier for this event.
        - `processed_at` string, date-time, required: A timestamp in RFC 3339 format
        - `workflow_run_id` string, required: Identifier of the run. The same value is on all of the run's `workflow_run.*` events.
      - object: A workflow run met an error, or an error kept a run from being created. A run that ends with a `result.type` of `error` emits this event before its `workflow_run.status_ended`, with the same `error`.
        - `type` 'workflow_run.error', required
        - `id` string, required: Unique identifier for this event.
        - `processed_at` string, date-time, required: A timestamp in RFC 3339 format
        - `workflow_run_id` string, nullable, required: Identifier of the run that met the error, or `null` when the error kept a run from being created.
        - `error` union, required: Why a workflow run did not finish, or was not created. More types may be added. On `workflow_run.status_ended`, for a `type` you do not recognize, rely on the event's `result.type`.
          - object: The run reached its time limit.
            - `type` 'timeout_error', required
            - `message` string, required: Short explanation written by the server. It never contains content from the run or its agents.
          - object: The plan, a program that the agent wrote, failed, or the server refused it.
            - `type` 'program_error', required
            - `message` string, required: Short explanation written by the server. It never contains content from the run or its agents.
          - object: A failure that has no type of its own.
            - `type` 'unknown_error', required
            - `message` string, required: Short explanation written by the server. It never contains content from the run or its agents.
          - object: The run exceeded the limit on the number of threads that a run can create.
            - `type` 'thread_limit_error', required
            - `message` string, required: Short explanation written by the server. It never contains content from the run or its agents.
          - object: No run was created, because the session was at its limit of open workflow runs, which are runs that have not ended. Only `workflow_run.error` carries this type.
            - `type` 'max_workflow_runs_error', required
            - `message` string, required: Short explanation written by the server. It never contains content from the run or its agents.
  - `next_page` string, nullable: Opaque cursor for the next page. Null when no more results.

## Other responses

- `400`: Invalid argument - The client specified an invalid argument
- `401`: Unauthenticated - The request does not have valid authentication credentials
- `403`: Permission denied - The caller does not have permission to execute the specified operation
- `404`: Not found - Some requested entity was not found
- `408`: Deadline exceeded - The deadline expired before the operation could complete
- `409`: Aborted - The operation was aborted due to concurrency issue
- `412`: Failed precondition - Operation was rejected because the system is not in required state
- `413`: Out of range - Operation was attempted past the valid range
- `429`: Resource exhausted - Some resource has been exhausted (rate limiting)
- `431`: Request header fields too large - Request metadata was too large
- `499`: Cancelled - The operation was cancelled by the client
- `500`: Internal - Internal server error
- `501`: Unimplemented - The operation is not implemented or supported
- `503`: Unavailable - The service is currently unavailable
- `504`: Deadline exceeded - Upstream service did not respond in time

## Changes

- **2026-11-05** `037a593978dc`: 1 info
  - added the enum value `admin-user-sign-out-2026-10-08` to the property `items/anyOf[subschema #2]/` of the `header` request parameter `anthropic-beta`
- …earlier changes not shown

[Operation history](https://skmtc.dev/anthropics/apis/anthropic-api/changes/v1/sessions/:session_id/events%3Fbeta=true/get.md)

---

[API](https://skmtc.dev/anthropics/apis/anthropic-api.md) - [All operations](https://skmtc.dev/anthropics/apis/anthropic-api/llms.txt) - [OpenAPI document](https://skmtc.dev/anthropics/apis/anthropic-api/revisions/d5be78f1f9a8?raw)
