Skip to main content

GET /calls/{callid}/recordings/{uniqueid}

Get one recorded leg

Scoperecordings:read
Role permissionCall reports → allow recordings (OAuth only)
CostFree

404 for a leg that isn't recorded on this call, whatever the reason — saying more would let a caller probe which leg ids exist.

Path parameters

NameTypeRequiredExampleDescription
callidstringyes1754489201.884213The call id from call history, reports or a call webhook — a unix timestamp, a dot, and a sequence number. A malformed id is a 400 that names the expected shape, not a 404.
uniqueidstringyes1754489201.884213The leg identifier, from uniqueId in the list response.

Responses

200

The recorded leg.

FieldTypeDescription
uniqueIdstringIdentifies this leg. Pass it back to the per-leg endpoint to re-fetch just this one.
callIdstringThe switch's call id for the leg. On a transferred call it can differ from the id in the request path — the request id names the whole journey, this one names the leg.
urlstringPlays the audio. A stable signed link on this platform, not the storage location: - Requires no Authorization header, so it can go straight into an <audio> element or a transcription service. - The account id is sealed inside the signature, so it cannot be edited to reach another account's recording. - It does not expire. Treat it as a secret — anyone holding it can play the conversation.
startTimestring (RFC 3339)When this leg started, RFC 3339 UTC.
durationSecondsintegerThe leg's full length including ringing.
talkTimeSecondsintegerOnly the connected portion — the closer match to the length of the audio.
fromstringThe leg's originating endpoint. On an internal leg this is an extension, not a phone number.
tostringThe leg's destination endpoint. On an internal leg this is an extension.

Errors

StatusMeaning
400invalid_request — a missing or malformed field, an unknown enum value, or an unknown field in the body. Nothing was charged.
401unauthenticated — no credential, or one that is invalid, revoked or expired. The WWW-Authenticate header names the scope the endpoint wanted.
403Two different failures share this status, and the type tells them apart:
404not_found — no such object, or it is not this account's. The two are deliberately indistinguishable.
500internal_error — something failed on our side. For a send, nothing was charged, guaranteed, which is what makes a retry safe.

See Errors for the full catalog and what to do about each.

Example

curl -X GET 'https://api.account.telebroad.com/api/public/v1/calls/1754489201.884213/recordings/1754489201.884213' \
-H "Authorization: Bearer $TB_KEY"

Try it in the playground →