Endpoint
GET/api/v1/events?callId={callId}
| Detail | Value |
|---|---|
| Protocol | Server-Sent Events (SSE) |
| Authentication | Cookie-based (logged-in dashboard user) |
| Authorization | User must belong to the org that owns the agent |
| Content-Type | text/event-stream |
Query Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
callId | string | Yes | The call ID to subscribe events for |
Errors
| Status | Condition |
|---|---|
| 400 | Missing or invalid callId |
| 400 | Call is already completed |
| 404 | Not authorized / org mismatch |
| 404 | Call log or agent not found |
Event Types (Transcript-related)
All events are sent asdata: <JSON>\n\n. The three transcript-relevant event types are:
1. user_interim_transcription
Fired as the user is speaking. Contains partial, in-progress transcription text. These events are emitted frequently and may change as more audio is processed.2. user_transcription
Fired when the user finishes a speech segment. Contains the final transcription for that turn.3. tts_completed
Fired when the agent finishes speaking a TTS segment. Contains the text that was spoken and optionally the TTS latency.Lifecycle Events
sse_init
Sent immediately when the SSE connection is established.sse_close
Sent when the call ends, right before the server closes the connection.Usage Examples
cURL
JavaScript (Browser)
Node.js
Python
Notes
- The connection is real-time — events stream directly from the call runtime as they are produced.
- Interim transcriptions are partial and will be superseded by the final
user_transcriptionevent. Use them for live preview UI only. - The SSE connection auto-closes when the call ends (
sse_closeevent). The server will also terminate the connection. - Only active calls can be subscribed to. Completed calls return a 400 error.
- Other event types (e.g.
call_start,call_end,turn_latency, metrics) are also sent on this stream but are not covered in this doc.

