GET /api/v2/recordings returns empty list despite active calls

Migration from On-Premises to Cloud completed last week. We are running v10.4 in US-East-1. The GET /api/v2/recordings endpoint returns 200 OK with empty body despite active calls during business hours. Filter by date range works but recordingId list is null for scheduled shifts. Are there specific permissions required for the API token? Service Account has all Cloud Admin scopes.

This occurs when the Recording Retention Policy deletes metadata faster than retrieval. We saw this with the Salesforce managed package failing to pull playback URLs. Check the Data Action configuration in WFM if you are exporting to SFDC.

Ensure the View Recordings permission is on the API token, not just the User Account.

Permissions are the primary cause here. Also check if your organization is using Sensitive Recording Encryption. You must use the GET /api/v2/recordings/{recordingId}/playback endpoint to get a signed URL before downloading.

Provided below is a Python script for automating this download process based on date filters.