Stream Call Recording Track
Stream one track as FLAC, decrypting segment by segment. A single
Range is answered with 206 and maps onto the segments it covers; a
multi-range request is answered with the whole track.
The conversation must be visible to the caller under the conversation detail rule (own with conversations:read, any with conversations:read_all), and access requires recordings:play in its organisation, which no platform bypass grants: platform admins get no access to customer audio. Every request re-checks that the recording's key exists and its retention has not elapsed, independently of the nightly expiry job.
The access row is an attempt audit: it is written and committed before the stored header is opened and the range parsed, so a request answered 503 or 416 is still logged. One row per playback session; its further range requests add none.
Every value the stream needs is read before that commit, and no ORM attribute is touched after it, so the session holds no database connection while the body is sent. A consequence is that the checks happen once per request: a revocation or storage failure after streaming has started does not stop the response already under way, which ends early (storage failure) or runs to its end (revocation). A player's next range request is refused.
Authorization
OAuth2AuthorizationCodeBearer In: header
Path Parameters
uuidValue in
- "caller"
- "agent"
Query Parameters
Identifies one playback session; its range requests log one access
uuidtrueHeader Parameters
Response Body
audio/flac
audio/flac
application/json
application/json
application/json
application/json
application/json
application/json
application/json
curl -X GET "https://example.com/v1/conversations/497f6eca-6276-4993-bfeb-53cbbbba6f08/recording/caller?playback_id=497f6eca-6276-4993-bfeb-53cbbbba6f08"{ "detail": "string", "code": "string"}{ "detail": "string", "code": "string"}{ "detail": "string", "code": "string"}{ "detail": "string", "code": "string"}{ "detail": "string", "code": "string"}{ "detail": [ { "loc": [ "string" ], "msg": "string", "type": "string" } ]}{ "detail": "string", "code": "string"}