Recordings: authenticated presigned-URL flow
New endpoint documented: GET /atoms/v1/recordings/{callId}?channel=mono|dual returns a short-lived presigned S3 URL for the call’s audio (atoms-platform#3625, Phase 1 of PRO-2775). Presigned URLs expire in 15 minutes. Response envelope is { status: true, data: { url: "..." } }.
Both channels are supported: channel=mono (default) for the composite track, channel=dual for stereo when the call was captured with per-side audio.
Prose docs updated:
- Accessing Recordings on Call Metrics now leads with the new endpoint, with cURL and Python examples plus a full error table (400 / 401 / 404).
- Recording Review on Monitoring and Debugging: the
get_recordinghelper accepts achannelargument and hits the new endpoint. recordingUrlandrecordingDualUrlfield descriptions across the call detail response, thepost-conversationwebhook payload, and the campaign CSV export are now described as stable identifiers. Docs direct customers to resolve them through the new endpoint so integrations stay correct regardless of which cluster URL is returned.
The older endpoint GET /atoms/v1/conversation/{callId}/recording/download-url (mono only, data.presignedUrl envelope) stays documented as legacy; existing customers do not need to migrate immediately, but new integrations should use the recordings endpoint. Both endpoints share the same 15-minute presigned-URL TTL post-#3625.
Per-org rollout on the platform side: new organizations see the authenticated endpoint URL in recordingUrl fields; existing organizations continue to see raw CloudFront URLs today. The docs recommend always going through /atoms/v1/recordings/{callId} so integrations work either way and stay correct after the Phase 2 CloudFront lockdown lands.