Fetching complete voice-to-text transcripts via /api/v2/analytics/conversations/details returns fragmented text

We’re building a custom agent desktop sidecar using the Genesys Cloud Client App SDK. The goal is to display the full AI-generated transcript for voice interactions directly in the UI. We’re hitting the GET /api/v2/analytics/conversations/details endpoint with type=voice and analyticsType=speechAndText. The docs suggest this should return the transcript segments, but we’re seeing a disconnect between the conversationId and the actual text payload.

Here’s the curl equivalent of what we’re sending:

curl -X GET "https://api.mypurecloud.com/api/v2/analytics/conversations/details?type=voice&analyticsType=speechAndText&dateFrom=2023-10-01T00:00:00.000Z&dateTo=2023-10-02T00:00:00.000Z&groupBy=conversation" \
 -H "Authorization: Bearer <token>" \
 -H "Content-Type: application/json"

The response comes back with a 200 OK, but the JSON structure is confusing. We get a list of conversations, but the transcripts field is either missing or only contains the first 30 seconds of audio. We tried adding intervalSize=PT1H to break it down, but that just gave us hourly aggregates without the actual text.

We also tried using the speech and text analytics conversation endpoint directly. That works for individual IDs, but it’s painfully slow when you have hundreds of calls to process. We need a bulk method.

We’ve checked the analytics job status via GET /api/v2/analytics/conversations/details/jobs/{jobId} and it shows as completed. The speech analytics are enabled in the org settings. We’re using the Python SDK genesys_cloud_analytics package to make these calls.

Is there a specific query parameter we’re missing to force the full transcript retrieval? Or is there a limit on how much text is returned per call? We tried increasing the pageSize to 1000, but that just returns more conversation metadata, not more text per conversation.

Here’s a snippet of the response we’re getting:

{
 "items": [
 {
 "id": "abc-123",
 "type": "voice",
 "transcripts": []
 }
 ]
}

The array is empty. We know the transcript exists because we can see it in the web UI. Any ideas on why the API is returning null data here?

1 Like