call.transcribed

View as Markdown

Emitted when a voice call’s transcript has been processed and is ready to read. This is a thin event — it carries only the call id. Fetch the transcript (and the rest of the call record) from relatedObject.url (GET /api/v1/calls/{id}).

It is separate from call.ended because the transcript is produced by the voice provider after the call terminates. call.ended fires the moment the call reaches its terminal status; call.transcribed follows once the transcript lands — typically a few seconds later, sometimes more.

Schema

Shares the common event envelope (id, object, type, version, createdAt, relatedObject). relatedObject is { id: <callId>, type: "call", url: "/api/v1/calls/<callId>" }. The data payload is intentionally minimal:

data fieldTypeDescription
callIdstringDial-issued ID for the call. Matches the id returned by GET /api/v1/calls. Fetch the call to read the transcript.

Example

1{
2 "id": "evt_9d2e1f3a4b5c6d7e8f90a1b2c3d4e5f6a7b8c9d0",
3 "object": "event",
4 "type": "call.transcribed",
5 "version": 1,
6 "createdAt": "2026-05-28T14:35:29.402Z",
7 "relatedObject": { "id": "call_01HW3X7P5QF6K2YQ9YJ7Q8R5N3", "type": "call", "url": "/api/v1/calls/call_01HW3X7P5QF6K2YQ9YJ7Q8R5N3" },
8 "data": { "callId": "call_01HW3X7P5QF6K2YQ9YJ7Q8R5N3" }
9}

When it fires

  • Only for calls that produced a transcript. A cancelled, no-answer, or failed call emits call.ended but never call.transcribed.
  • Exactly once per call, when the transcript is first persisted. Late re-deliveries from the voice provider do not produce duplicate events.
  • After call.ended. Wait for it (or poll the call record) when you need the transcript rather than just the fact that the call ended.