Skip to content

Recording resource

A Recording is the captured audio of a call, stored under your retention policy with AES-256-GCM envelope encryption at rest. Recordings are produced when a call is created with record enabled or when a call-control document records mid-call. You retrieve the audio through a short-lived signed URL — issued only on fetch and audited — and you can list, inspect or delete recordings through the API.

IllustrativeThe recording pipeline is real and shipping in TelVox Dial — recording modes (always / on-demand / never) with pause and resume, AES-256-GCM envelope encryption, S3 / local / SFTP backends, wav→mp3, filename templates with a masked phone tail, signed-URL audited playback (HIPAA REC-04) and a retention worker. The public REST shapes and field names below are developer preview and may change before GA. Base URL: https://api.telvox.dev.

Properties

The media_url is a short-lived signed URL issued only when you fetch a single recording; fetch the audio promptly and do not cache the URL. Every access is written to the append-only audit trail.

PropertyTypeDescription
sidstringUnique identifier for the recording, prefixed RE.
objectstringAlways "recording".
call_sidstringThe SID of the call this recording belongs to.
statusenumLifecycle state — see the status enum below.
durationintegerRecording length in seconds. Null until completed.
channelsinteger1 for a mixed mono recording, 2 for dual-channel (each party on its own channel).
formatenumContainer of the stored media: wav or mp3.
encryptionstringAlways "aes-256-gcm" — recordings are envelope-encrypted at rest.
storage_backendenumWhere the media lives: s3, local, or sftp, per your account configuration.
media_urlstringShort-lived signed URL to fetch the audio. Issued on fetch, never embedded in lists; access is audited (HIPAA REC-04).
retention_untilstringISO 8601 time after which the retention worker deletes this recording.
created_atstringISO 8601 time the recording was created.

Status enum

The status field reports where a recording is in its lifecycle. The same values are delivered as recording_status on the callback below.

ValueTypeDescription
in-progressstatusThe recording is actively capturing the call.
completedstatusThe recording finished and the encrypted media is stored.
absentstatusNo audio was captured (e.g. the call ended before recording started).
failedstatusThe recording could not be completed or stored.

Fetch a recording

Retrieve a single recording by its SID. The response includes a short-lived signed media_url for the audio.

GET/v1/recordings/{sid}

Fetch one recording, including a signed media URL.

GET/v1/recordings/{sid}
# illustrative — shape may differ at GA
curl https://api.telvox.dev/v1/recordings/RE2a7f9c1d4b6e8a0c3f5d7b9e1a2c4d6 \
  -H "Authorization: Bearer $TELVOX_API_KEY"
200 ok
200 response
// illustrative — shape may differ at GA
{
  "object": "recording",
  "sid": "RE2a7f9c1d4b6e8a0c3f5d7b9e1a2c4d6",
  "call_sid": "CA8f0e1d7c4b2a9f6e3d0c1b8a7f6e5d4",
  "status": "completed",
  "duration": 47,
  "channels": 2,
  "format": "mp3",
  "encryption": "aes-256-gcm",
  "storage_backend": "s3",
  "media_url": "https://api.telvox.dev/media/RE2a7f…?sig=…&exp=1750612951",
  "retention_until": "2026-12-22T00:00:00Z",
  "created_at": "2026-06-22T17:04:58Z"
}
200 ok

List recordings

Return a paginated list of recordings, newest first, narrowed by the filters below. Signed media URLs are omitted from lists — fetch an individual recording to obtain one. See pagination for cursoring.

GET/v1/recordings

List recordings with optional filters and pagination.

QueryTypeDescription
call_sidstringReturn only recordings for this call.
statusenumFilter by recording status, e.g. completed.
created_afterstringReturn recordings created on or after this ISO 8601 timestamp.
created_beforestringReturn recordings created on or before this ISO 8601 timestamp.
limitintegerPage size, 1–100. Defaults to 50.
starting_afterstringCursor — a recording SID to page forward from.
GET/v1/recordings
# illustrative — shape may differ at GA
curl "https://api.telvox.dev/v1/recordings?call_sid=CA8f0e1d7c4b2a9f6e3d0c1b8a7f6e5d4" \
  -H "Authorization: Bearer $TELVOX_API_KEY"
200 ok
200 response
// illustrative — media_url is omitted from lists; fetch a recording to get one
{
  "object": "list",
  "url": "/v1/recordings",
  "has_more": false,
  "next_cursor": null,
  "data": [
    {
      "object": "recording",
      "sid": "RE2a7f9c1d4b6e8a0c3f5d7b9e1a2c4d6",
      "call_sid": "CA8f0e1d7c4b2a9f6e3d0c1b8a7f6e5d4",
      "status": "completed",
      "duration": 47,
      "channels": 2,
      "format": "mp3"
    }
  ]
}
200 ok

Delete a recording

Permanently delete a recording and its encrypted media. The deletion is recorded in the audit trail and cannot be undone.

DELETE/v1/recordings/{sid}

Delete a recording and its stored media.

DELETE/v1/recordings/{sid}
# illustrative — shape may differ at GA
curl -X DELETE \
  https://api.telvox.dev/v1/recordings/RE2a7f9c1d4b6e8a0c3f5d7b9e1a2c4d6 \
  -H "Authorization: Bearer $TELVOX_API_KEY"
204 no content
204 response
// illustrative — no response body
HTTP/1.1 204 No Content
204 no content

RecordingStatusCallback

Set a recording_status_callback when you start recording and Connect POSTs to that URL as the recording moves through its lifecycle. Respond 2xx promptly. Delivery is over the same signed, SSRF-safe egress that powers Dial — see webhooks & callbacks for signature verification.

recording_statusFires when
in-progressRecording has started capturing the call.
completedRecording finished; encrypted media is stored and ready to fetch.
absentNo audio was captured for the call.
failedThe recording could not be completed or stored.

Callback payload

POSTyour recording_status_callback
// illustrative — POST body delivered to your recording_status_callback
{
  "recording_sid": "RE2a7f9c1d4b6e8a0c3f5d7b9e1a2c4d6",
  "call_sid": "CA8f0e1d7c4b2a9f6e3d0c1b8a7f6e5d4",
  "recording_status": "completed",
  "duration": 47,
  "channels": 2,
  "timestamp": "2026-06-22T17:05:01Z"
}
deliver to your endpointcompleted
FieldTypeDescription
recording_sidstringThe SID of the recording this event is about.
call_sidstringThe SID of the call being recorded.
recording_statusenumThe status: in-progress, completed, absent, or failed.
durationintegerPresent on completed — recording length in seconds.
channelsinteger1 (mixed mono) or 2 (dual-channel).
timestampstringISO 8601 time the event fired.