Sign inGet Started

Get a call's transcript

GET
/v1/voice/calls/{call_id}/transcript
const transcript = await bird.voice.calls.transcript("vcs_01krdgeqcxet5s7t44vh8rt9mg");
for (const cue of transcript.cues) {
  console.log(cue.text);
}
响应200
{
  "call_id": "vcs_01krdgeqcxet5s7t44vh8rt9mg",
  "parties": [
    {
      "endpoint": {
        "type": "pstn"
      },
      "address": "+14155551234"
    }
  ],
  "cues": [
    {
      "party": 0,
      "start_at": "2026-11-01T12:00:00Z",
      "end_at": "2026-11-01T12:00:01Z",
      "text": "Hello."
    }
  ],
  "complete": true,
  "evaluated_at": "2026-11-01T12:01:00Z"
}

Returns one transcript for the whole call: the cues of every party's stream in spoken order, each pointing into parties at the party its stream was captured from.

It is assembled on each read from the call's stored transcripts, one per stream: the latest whose every cue is timed, otherwise the latest that succeeded. When a live transcript exists, its cues take precedence; the selected transcript adds only timed cues that do not overlap them. Timed cues are placed by start_at. A transcript that timed nothing has null times, and its cues are placed at the start of their stream. A stream whose every transcription failed contributes nothing and sets complete to false. A stream where nothing was heard, one that was never transcribed, or one whose transcript has not arrived yet contributes no cues and leaves complete as it is.

Transcripts leave the API 30 days after the source audio starts. A call this workspace never placed, or whose transcripts have all expired, answers with no cues rather than 404.

参数

call_idstring

The call to read. Every leg carries its call's ID as call_id.

响应载荷

call_id
string
必填
parties
array of object
必填

Each distinct stored party heard in cues, once. A stream with no recorded party adds nothing here; its cues carry a null party.

显示子属性
cues
array of object
必填

Every cue of the call in spoken order. A cue without times sits at the start of its stream.

显示子属性
cues.party
nullable integer
必填

Index into the transcript's parties of the party who spoke this cue, the party its stream was captured from. null on a stream with no recorded party.

cues.start_at
nullable string
必填

When this cue began, measured on its stream. null on a transcript that timed nothing, whose cues are placed at their stream's start.

cues.end_at
nullable string
必填

When this cue ended. null on the same terms as start_at.

cues.text
string
必填

What was transcribed for this cue.

complete
boolean
必填

false when a stream's every transcription failed, or the read was cut at its limit. true does not mean every stream has cues: a stream where nothing was heard, one never transcribed, or one whose transcript has not arrived yet contributes none and leaves this true.

evaluated_at
string
必填

The instant retention was decided at. A transcript can expire after it.