---
title: "Stream Conversation Turn Events"
method: GET
path: "/v1/convai/conversations/{conversation_id}/turns/{turn_id}/events"
tags: ["Agents Platform"]
---

# Stream Conversation Turn Events

`GET /v1/convai/conversations/{conversation_id}/turns/{turn_id}/events`

## Request

- Base URL: `https://api.elevenlabs.io` (the document declares no server; this is the origin it was published from)
- URL: `https://api.elevenlabs.io/v1/convai/conversations/{conversation_id}/turns/{turn_id}/events`
- Auth: none declared
- TypeScript: <https://skmtc.dev/elevenlabs/apis/elevenlabs-api-documentation/docs/v1/convai/conversations/:conversation_id/turns/:turn_id/events/get.ts> (a function with typed inputs; its response is checked against the schema)

Stream the events of a turn as server-sent events. Send `Last-Event-ID` to resume after an event. The server keeps events for about an hour. This endpoint is in alpha and may change.

## Path parameters

- `conversation_id` string, required: The Conversation ID
- `turn_id` string, required: The Turn ID

## Headers

- `Last-Event-ID` string, nullable
- `xi-api-key` string, nullable: Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.

## Response `200`

Server-sent events. Each event has the stream cursor as its `id`, the event type as its `event`, and a stream envelope as its `data`.

- StreamEnvelope
  - `conversation_id` string, required
  - `turn_id` string, required
  - `created_at_unix_ms` integer, required
  - `event` union, required
    - StreamEndedEvent
      - `type` 'stream_ended'
      - `stream_ended_event` StreamEndedData, required
        - `status` 'in_progress' | 'completed' | 'requires_action' | 'failed' | 'timed_out', required
        - `error` AgentOutputError
          - `type` string, required
          - `code` string, required
          - `message` string, required
        - `required_actions` ClientToolCallRequiredAction[]: The actions the agent waits on. Answer each `client_tool_call` with a `client_tool_result` item in `input` to continue.
          - `type` 'client_tool_call'
          - `tool_call_id` string, required
          - `tool_name` string, required
          - `parameters` object, required
    - AgentChatResponsePartClientEvent
      - `text_response_part` AgentChatResponsePartClientEventData, required
        - `text` string, required
        - `type` 'start' | 'delta' | 'stop', required
        - `event_id` integer, required
        - `response_id` string, required
      - `type` 'agent_chat_response_part'
    - AgentReasoningResponsePartClientEvent
      - `reasoning_response_part` AgentReasoningResponsePartClientEventData, required
        - `text` string, required
        - `type` 'start' | 'delta' | 'stop', required
        - `event_id` integer, required
      - `type` 'agent_reasoning_response_part'
    - AgentResponseClientEvent
      - `agent_response_event` AgentResponseClientEventData, required
        - `agent_response` string, required
        - `event_id` integer, required
        - `response_id` string, required
        - `in_response_to_ids` string[]
        - `response_type` 'text' | 'voice'
        - `attachments` AgentResponseAttachment[]
          - `url` string, required
          - `name` string, required
          - `mime_type` string, nullable
      - `type` 'agent_response'
    - AgentToolRequestStreamedEvent
      - `agent_tool_request` AgentToolRequestClientEventData, required
        - `tool_name` string, required
        - `tool_call_id` string, required
        - `tool_type` string, required
        - `event_id` integer, required
        - `expects_response` boolean, required
        - `disable_interruptions` boolean, required
        - `response_timeout_secs` integer, required
        - `execution_mode` string, required
      - `type` 'agent_tool_request'
    - AgentToolResponseStreamedEvent
      - `agent_tool_response` AgentToolResponseClientEventData, required
        - `tool_name` string, required
        - `tool_call_id` string, required
        - `tool_type` string, required
        - `is_error` boolean, required
        - `is_blocked` boolean
        - `event_id` integer, required
        - `is_called` boolean, required
        - `status` 'success' | 'error' | 'blocked' | 'skipped', required
      - `type` 'agent_tool_response'
    - ClientToolCallEvent: `ClientToolCallClientEvent` as a stream event, because its custom `__init__` can't parse its own JSON.
      - `type` 'client_tool_call'
      - `client_tool_call` ClientToolCallClientEventData, required
        - `tool_name` string, required
        - `tool_call_id` string, required
        - `parameters` object, required
        - `event_id` integer, required
        - `expects_response` boolean, required: Whether the server expects a ClientToolResult response.

## Other responses

- `422`: Validation Error

## Changes

- **2026-11-12** `f2fab82c4571`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/elevenlabs/apis/elevenlabs-api-documentation/changes/v1/convai/conversations/:conversation_id/turns/:turn_id/events/get.md)

---

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