VocalDocscontracts 1.65.0

Read a recording

GET /v1/recordings/{recording_id}

PropertyValue
Operationget_recording
GroupRecordings
Scoperecordings:read
Route classread
IdempotencyNo Idempotency-Key
AuditNot audited: A metadata read; the recording row carries no audio.
Released in1.15.0
Phase 0 hostServed (the hosted api pins 1.65.0)

Request

Set VOCAL_API to the base URL of your API and VOCAL_API_KEY to an API key with the recordings:read scope (Authentication and keys). Replace each placeholder, such as agt_... or <name>, with your own value.

curl "$VOCAL_API/v1/recordings/rec_..." \
  -H "Authorization: Bearer $VOCAL_API_KEY"

Parameters

NameInTypeRequiredDescription
recording_idpathRecordingIdyesThe id of a Call recording: rec_ and the row's UUIDv7 in 26 Crockford base32 characters. Opaque and safe to log.

Responses

StatusContent typeShapeError codes
200application/jsonRecording
400application/jsonErrorEnvelopeinvalid_request
401application/jsonErrorEnvelopeunauthenticated
403application/jsonErrorEnvelopeforbidden
404application/jsonErrorEnvelopenot_found
429application/jsonErrorEnveloperate_limited
500application/jsonErrorEnvelopeinternal_error

Fields of the 200 answer

The shape is Recording.

FieldTypeRequiredDescription
call_idCallIdyes
created_atTimestampyes
duration_msinteger or nullyesThe length of the audio; null until the audio is uploaded.
formatRecordingFormat or nullyesNull until the audio is uploaded.
idRecordingIdyes
key_versionintegeryesThe version of the key that wraps the per-Call key; safe to log.
object"recording"yes
ring_msinteger or nullnoThe length in milliseconds of the ring tone the audio begins with (1.42.0, board #136): the ring-to-answer period of an inbound phone Call, the Call's ring_ms, so the Agent answered at this offset into the audio and a player marks the answer instant there. 0 to 60,000. Null when the audio begins at the answer, as for a web Call or a recording whose worker wrote no tone; absent from an api older than 1.42.0, which a reader treats as null.
size_bytesinteger or nullyesThe size of the stored object, ciphertext included; null until uploaded.
statusRecordingStatusyes
updated_atTimestampyes