Speech Analytics API: GET /analytics/conversations/voice/transcripts returns 404 for valid conversation IDs

Why does this endpoint consistently return 404 despite the conversation existing and having a valid transcription?

I am automating transcript retrieval via a Python script using the Genesys Cloud REST API. The goal is to pull voice-to-text transcripts for quality assurance analysis within our CI/CD pipeline.

The workflow:

  1. Query /api/v2/analytics/conversations/voice/summary to get conversation IDs.
  2. Verify transcription status is complete.
  3. Call /api/v2/analytics/conversations/voice/transcripts/{conversationId}.

Request details:

  • Method: GET
  • Header: Authorization: Bearer {token} (valid, tested against /api/v2/users/me)
  • Header: Accept: application/json

Response:

404 Not Found
{
 "message": "Not found",
 "status": 404
}

Debugging steps taken:

  • Confirmed conversation ID format (UUID).
  • Checked transcription status via summary endpoint; returns complete.
  • Verified OAuth scope includes analytics:conversation:view.
  • Tested with Postman; same 404 result.

The documentation implies this endpoint should return the transcript body. However, it seems to require specific conditions not explicitly stated. Is there a delay between status complete and transcript availability? Or does the endpoint require additional query parameters?

Code snippet:

import requests

url = f"https://api.mypurecloud.com/api/v2/analytics/conversations/voice/transcripts/{conv_id}"
headers = {
 "Authorization": f"Bearer {token}",
 "Accept": "application/json"
}

resp = requests.get(url, headers=headers)
print(resp.status_code)
print(resp.json())

Any insights on why this fails? I suspect the API might be region-specific or require a different scope. The organization is in us-east-1. Terraform state shows no anomalies in analytics configuration.

TL;DR: Check your… endpoint path. That specific URL doesn’t exist. Use the standard analytics query API instead. It’s more reliable for batch pulls anyway.

# Use this instead
resp = platformClient.analytics.postAnalyticsConversationsVoiceQuery(body=query_body)

If I remember correctly, that endpoint might be deprecated. 404 usually means the path is wrong. try using the query API instead. platformClient.analytics.postAnalyticsConversationsVoiceQuery works for me in my python scripts. check the docs for the exact payload structure.