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.

Response Payload

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.

चाइल्ड एट्रिब्यूट दिखाएँ
parties.endpoint
nullable object

What kind of participant sat on this side of a leg, and the coordinate that kind carries: a telephone endpoint off the platform, a SIP or WebRTC endpoint, Bird answering, or the platform placing a leg onward. It does not name a person.

null on an observation this API could not read. The entry stays, because the call counted it when it deduplicated, and dropping it here would report fewer participants than were observed.

चाइल्ड एट्रिब्यूट दिखाएँ
parties.address
nullable string

This side's own address, in E.164 or as a sip: URI. null when the observation carried none, which does not say whether one was withheld, missing, or nonexistent.

parties.overdial_suffix
string

Digits dialled after this party's number, including leading zeroes. Absent when no overdial was received.

parties.trunk_id
nullable string

The workspace trunk on this side of the leg. null when this side sat behind no trunk.

parties.user_id
nullable string

The workspace user this side acted for, such as a user's browser, the ring group member whose side a recording captured, or the user who started a sequence call. null for every other participant, including an API key.

cues
array of object
आवश्यक

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

चाइल्ड एट्रिब्यूट दिखाएँ
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.

इस विषय के लिए दस्तावेज़, गाइड और उदाहरणों के साथ आगे बढ़ें।