GET /v1/lab/agent/conversations/{id}/events
The live events of one of the caller’s assistant conversations, as Server-Sent Events (text/event-stream; each frame `id: <stream id>` + `data: <event JSON>`). Without Last-Event-ID: the turn answering the conversation’s latest message, from its start (or from now, while it is still queued). With Last-Event-ID (the header, or ?last_event_id=): every event after it. A comment line every 15 s keeps the connection open; it closes after `turn_end` (or after 10 minutes: reconnect with Last-Event-ID). A `turn_end` without an id means the turn had already ended and its events are no longer kept: read GET …/:id. Events and cards: docs/LAB_AGENT_STREAM_CONTRACT.md. 503 `lab_agent_live_unavailable` when the live stream cannot be read (poll GET …/:id instead). 404 `lab_agent_disabled` while LAB_AGENT_ENABLED is off.
The live events of one of the caller’s assistant conversations, as Server-Sent Events (text/event-stream; each frame id: <stream id> + data: <event JSON>). Without Last-Event-ID: the turn answering the conversation’s latest message, from its start (or from now, while it is still queued). With Last-Event-ID (the header, or ?last_event_id=): every event after it. A comment line every 15 s keeps the connection open; it closes after turn_end (or after 10 minutes: reconnect with Last-Event-ID). A turn_end without an id means the turn had already ended and its events are no longer kept: read GET …/:id. Events and cards: docs/LAB_AGENT_STREAM_CONTRACT.md. 503 lab_agent_live_unavailable when the live stream cannot be read (poll GET …/:id instead). 404 lab_agent_disabled while LAB_AGENT_ENABLED is off.
API key: Authorization: Bearer pk_live_… (mint at polyrank.app/api-keys)
In: header
Path Parameters
Query Parameters
Response Body
curl -X GET "https://example.com/v1/lab/agent/conversations/497f6eca-6276-4993-bfeb-53cbbbba6f08/events"