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 GET /api/v2/analytics/conversations/transcripts/{conversationId} 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/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?