Sign inGet Started

List a call's recordings and transcripts

GET
/v1/voice/calls/{call_id}/recordings
const inventory = await bird.voice.calls.recordings.list("vcs_01krdgeqcxet5s7t44vh8rt9mg");
for (const recording of inventory.recordings) {
  console.log(recording.leg_id, recording.id);
}
Odpowiedź200
{
  "media": [
    {
      "id": "vcm_01krdgeqcxet5s7t44vh8rt9mg",
      "leg_id": "vcl_01krdgeqcxet5s7t44vh8rt9mg",
      "call_id": "vcs_01krdgeqcxet5s7t44vh8rt9mg",
      "codec": "PCMU",
      "state": "available",
      "offset_ms": 0,
      "audio_ms": 1000,
      "started_at": "2026-11-01T12:00:00Z",
      "ended_at": "2026-11-01T12:00:01Z",
      "source_party": {
        "endpoint": {
          "type": "pstn"
        },
        "address": "+14155551234"
      }
    }
  ],
  "recordings": [
    {
      "id": "vrc_01krdgeqcxet5s7t44vh8rt9mg",
      "leg_id": "vcl_01krdgeqcxet5s7t44vh8rt9mg",
      "call_id": "vcs_01krdgeqcxet5s7t44vh8rt9mg",
      "number": "+12025550100",
      "channel": "rx",
      "media_id": "vcm_01krdgeqcxet5s7t44vh8rt9mg",
      "media_started_at": "2026-11-01T12:00:00Z",
      "started_at": "2026-11-01T12:00:00Z",
      "ended_at": "2026-11-01T12:00:01Z"
    }
  ],
  "transcripts": [],
  "truncated": false,
  "evaluated_at": "2026-11-01T12:01:00Z"
}

Returns everything captured across every leg of one call: its stored audio, each leg's view of it, and every transcription attempt over it. A stream heard on several legs appears once in media, with one view per leg in recordings.

Audio streams, their recording views and transcripts leave the API 30 days after the source audio starts. Transcription does not restart that period. Read truncated before presenting the result as complete.

The collections arrive independently. A stream can appear before its recording view, or without a view if delivery fails or the view expires. Download audio with getVoiceLegRecordingAudio, passing the recording view's leg_id and id. The download requires a recording view ID, so a stream cannot be downloaded until its view is available.

A call this workspace never placed, or whose recordings have all expired, answers with empty collections rather than 404.

Parametry

call_idstring

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

Treść odpowiedzi

media
array of object
wymagane

The stored audio this read covers, each stream once.

Pokaż atrybuty podrzędne
media.id
string
wymagane

Unique identifier for this stream.

media.leg_id
string
wymagane

The leg this stream was captured from.

media.call_id
nullable string

null on a stream captured before calls existed, which only its leg addresses.

media.codec
string
wymagane

Codec of the stored payload.

media.state
string
wymagane

What became of this stored audio.

open while capture is still running. available once the bytes are stored. failed when capture did not produce any. purged is reserved for future use. Recordings are removed from the response after their retention period.

Possible values: open, available, failed, purged

media.offset_ms
integer
wymagane

Length of the announcement that played before capture started. Zero when nothing was announced. It is not a position on a call clock.

media.audio_ms
integer
wymagane

Length of the payload itself. This runs shorter than ended_at - started_at by the silence before the first packet, so use it for anything about the sound and the window for anything about the leg.

media.source_party
nullable object

The party this audio was captured from, which is what says whose voice it carries. channel only says which direction of the leg the stream came from. A recording view's number identifies a number associated with that view, which can be an outbound destination.

null on a stream stored before the platform recorded a party for it.

Pokaż atrybuty podrzędne
media.started_at
string
wymagane

When capture started, which is after any announcement rather than at the answer.

media.ended_at
nullable string
wymagane

When capture ended, or null while capture is open or its end is unknown.

recordings
array of object
wymagane

Each leg's view of that audio.

Pokaż atrybuty podrzędne
transcripts
array of object
wymagane

Every transcription attempt over that audio, including failed ones.

Pokaż atrybuty podrzędne
truncated
boolean
wymagane

Whether a collection above was cut at this read's per-collection limit of 500. When true, there is more than is shown here and this response is not the whole set.

false means no collection hit that limit, and a collection that could not be read in full fails the request rather than returning a short answer. What false does not establish is that every recording made has arrived: delivery into this store is asynchronous, so a recording made moments ago can be absent from a complete read.

evaluated_at
string
wymagane

The instant each collection's retention was decided at. Nothing here stays true because you are still holding the response. A recording can expire after it.

Przejdź do dokumentacji, przewodników i przykładów dotyczących tego tematu.