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

# Send Events

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

## Path parameters

- `session_id` string, required

## Headers

- `anthropic-version` string
- `anthropic-beta` string

## Request body

- BetaManagedAgentsSendSessionEventsParams — Request parameters for sending events to a `session`.
  - `events` BetaManagedAgentsEventParams[], required — Events to send to the `session`.
    - union — Union type for event parameters that can be sent to a session.
      - object — Parameters for sending a user message to the session.
        - `type` 'user.message', required
        - `content` BetaManagedAgentsUserContentBlock[], required — Array of content blocks for 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 — Parameters for sending an interrupt to pause the agent.
        - `type` 'user.interrupt', required
        - `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 — Parameters for confirming or denying a tool execution request.
        - `type` 'user.tool_confirmation', required
        - `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 — UserToolConfirmationResult enum
        - `deny_message` string, nullable — Optional message providing context for a 'deny' decision. Only allowed when result is 'deny'.
      - object — Parameters for providing the result of a custom tool execution.
        - `type` 'user.custom_tool_result', required
        - `custom_tool_use_id` string, required — 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](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.
      - object — Parameters for defining an outcome the agent should work toward. The agent begins work on receipt.
        - `type` 'user.define_outcome', required
        - `description` string, required — What the agent should produce. This is the task specification.
        - `rubric` union, required — Rubric for grading the quality of an outcome.
          - BetaManagedAgentsFileRubricParams — Rubric referenced by a file uploaded via the Files API.
            - `type` 'file', required
            - `file_id` string, required — ID of the rubric file.
          - BetaManagedAgentsTextRubricParams — 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. Maximum 262144 characters.
        - `max_iterations` integer, nullable — Eval→revision cycles before giving up. Default 3, max 20.
      - object — Parameters for 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
        - `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.

## Response `200`

Successful response (OK)

- BetaManagedAgentsSendSessionEvents — Events that were successfully sent to the session.
  - `data` BetaManagedAgentsInputEvent[] — Sent events
    - union — Union type for events that can be sent to 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.
              - …
        - `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 — UserToolConfirmationResult enum
        - `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 — 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.
      - 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, 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 — Routes this result to a subagent thread. Copy from the `agent.custom_tool_use` event's `session_thread_id`.
      - 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 — 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 — Routes this result to a subagent thread. Copy from the `agent.tool_use` event's `session_thread_id`.

## 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-05-19** `40e330aba8bc` — 1 breaking, 3 info
  - added `#/components/schemas/BetaManagedAgentsUserToolResultEvent` to the `data/items/` response property `oneOf` list for the response status `200`
  - added `user.tool_result` discriminator mapping keys to the `events/items/` request property
  - added `#/components/schemas/BetaManagedAgentsUserToolResultEventParams` to the `events/items/` request property `oneOf` list
  - added `user.tool_result` discriminator mapping keys to the `data/items/` response property for the response status `200`
- **2026-05-13** `88ef81f4f457` — 1 breaking, 1 warning
  - removed the required property `data/items/oneOf[#/components/schemas/BetaManagedAgentsUserCustomToolResultEvent]/content/items/oneOf[#/components/schemas/BetaManagedAgentsSearchResultBlock]/tool_use_id` from the response with the `200` status
  - removed the request property `events/items/oneOf[#/components/schemas/BetaManagedAgentsUserCustomToolResultEventParams]/content/items/oneOf[#/components/schemas/BetaManagedAgentsSearchResultBlock]/tool_use_id`
- …earlier changes not shown

[Full history](https://skmtc.dev/anthropics/apis/anthropic-api/changes/v1/sessions/:session_id/events?beta=true/post.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/478045ff0f4f?raw)
