Trying to pull the full voice-to-text transcript for conversations traced via OpenTelemetry. The span IDs match, but the transcript is coming back empty.
Calling GET /api/v2/analytics/conversations/summaries with the transcript filter. Got a 200 OK, but the payload has transcripts: [].
{
"items": [
{
"transcripts": [],
"conversationId": "12345678-1234-1234-1234-123456789012"
}
]
}
Checked the conversation details directly in Genesys Cloud UI. The transcript is there. Verified the OAuth client has analytics:conversation:read.
Is there a delay in indexing? Or a specific parameter missing to fetch the actual text? The docs mention transcripts but don’t specify if it’s included by default in the summary endpoint.
The transcript array is empty because the conversation likely hasn’t finished indexing yet. The analytics API runs on a schedule, not in real-time. You’re hitting it too fast after the call ends.
Check the status field in the conversation object. If it’s still queued or processing, the transcripts won’t be there.
You can poll the status first. Here’s a quick C# loop using the SDK to wait for completed:
var analyticsApi = new AnalyticsApi();
bool ready = false;
while (!ready)
{
var summaries = await analyticsApi.PostAnalyticsConversationsSummaries(
new ConversationSummaryRequest { ConversationIds = new List<string> { convId } }
);
if (summaries.Items.Any(i => i.Status == "completed" && i.Transcripts.Any()))
{
ready = true;
Console.WriteLine("Transcripts available.");
}
else
{
Thread.Sleep(5000); // Wait 5s before retry
}
}
Don’t hammer the API. Five seconds is usually enough. The docs mention “near real-time” but it really means “eventually consistent”.