Get started →
API reference

Recordings API

Fetch recordings and their transcripts. Recordings are created automatically when a call uses <Record>, <Dial record=…>, or a conference recording.

Recording resource

{
  "sid": "RE…",
  "account_sid": "AC…",
  "call_sid": "CA…",
  "conference_sid": null,
  "channels": 2,
  "source": "DialVerb",
  "status": "completed",
  "track": "both",
  "duration": "42",
  "transcription_status": "completed",
  "transcription_text": "Hello.\nHow can I help?",
  "transcription_provider": "whisperx",
  "transcription_language": "en",
  "transcription_segments": [
    { "speaker": "customer", "text": "Hello.", "start_time": 0.0, "end_time": 1.8 },
    { "speaker": "agent", "text": "How can I help?", "start_time": 2.1, "end_time": 4.0 }
  ],
  "media_url": "https://voice.ruut.chat/…/Recordings/RE….wav",
  "uri": "/2010-04-01/Accounts/AC…/Recordings/RE…"
}

List recordings

GET/2010-04-01/Accounts/{AccountSid}/Recordings

List recordings for the account. Scoped to a call with /Calls/{CallSid}/Recordings.

ParameterTypeDescription
Page optionalinteger0-indexed page.
PageSize optionalintegerRecords per page (max 1000).

Fetch a recording

GET/2010-04-01/Accounts/{AccountSid}/Recordings/{RecordingSid}.json

Return the recording resource (including transcription fields when present).

ParameterTypeDescription
RecordingSid requiredstringThe recording SID (e.g. RE…).

Fetch recording audio

GET/2010-04-01/Accounts/{AccountSid}/Recordings/{RecordingSid}.wav

Download the recording as WAV. Use .mp3 for a compressed copy. Redirects to the media file.

ParameterTypeDescription
RecordingSid requiredstringThe recording SID.
format optionalstringwav (default) or mp3.

Recordings can be listed account-wide or scoped to a call:

  • GET /Recordings — all recordings for the account.
  • GET /Calls/{CallSid}/Recordings — recordings for one call.

With the SDK

import { RuutVoice } from "@ruut/voice-sdk";

const client = new RuutVoice({ accountSid, authToken, baseUrl });

const list = await client.recordings.list({ callSid: "CA…", pageSize: 10 });
const rec = await client.recordings.get("RE…");

console.log(rec.transcription_status);
for (const seg of rec.transcription_segments ?? []) {
  console.log(seg.speaker, seg.text);
}

const wavUrl = client.recordings.mediaUrl("RE…", { format: "wav" });
const mp3Url = client.recordings.mediaUrl("RE…", { format: "mp3" });

Webhooks