Genesys Cloud Speech Analytics API returning empty transcript body

We’re trying to pull the full voice-to-text transcript for a specific conversation to feed into our custom adherence tracking tool. I know the WFM side usually handles the metrics, but we need the actual text for some manual quality checks that the standard reports don’t cover. I’m using the Python SDK because it’s what we’ve been using for the adherence pulls mentioned in my earlier posts.

Here is the code snippet I’m using to fetch the transcript:

from genesyscloud import analytics_api

# ... auth setup ...

api_instance = analytics_api.AnalyticsApi(api_client)
conversation_id = 'conv-12345-abcde'

try:
 api_response = api_instance.get_analytics_conversations_transcript(
 conversation_id=conversation_id,
 expand='transcript'
 )
 print(api_response.transcript)
except Exception as e:
 print("Exception when calling AnalyticsApi->get_analytics_conversations_transcript: %s\n" % e)

The API call returns a 200 OK status, which is good. However, when I print api_response.transcript, it’s either None or an empty list []. I’ve double-checked the conversation_id and it definitely exists in the Genesys Cloud UI. I can see the transcript there, so the data is there somewhere.

I’ve also tried calling the raw endpoint /api/v2/analytics/conversations/transcripts/{conversationId} directly using requests.get() with the same OAuth token. The response body looks like this:

{
 "conversationId": "conv-12345-abcde",
 "transcript": []
}

Is there a specific delay before the transcript becomes available via the API? Or is there a different endpoint I should be hitting? The documentation mentions the Speech and Text Analytics API, but I can’t find a clear example of pulling the raw text for a single conversation. I’ve waited 10 minutes after the call ended, but still nothing. Any help would be appreciated.

The issue is almost certainly the transcriptType parameter. If you don’t explicitly set it to FULL, the API defaults to returning only the SUMMARY or ANNOTATED versions, which might be empty if the analytics engine hasn’t finished processing the full text yet. The Python SDK is strict about these enums.

You’ll want to adjust your get_conversations_voice_analytics_transcript call. Make sure you’re passing transcript_type="FULL" in the kwargs. Also, double-check that the conversation has actually been analyzed. You can verify this by checking the status field in the analytics entity response before attempting the fetch. If it’s still PENDING, the transcript body will be null.

Here’s how the call should look:

from platformclientv2 import AnalyticsApi

analytics_api = AnalyticsApi()
transcript = analytics_api.get_conversations_voice_analytics_transcript(
 conversation_id=conversation_id, 
 transcript_type="FULL"
)

If the status is COMPLETED and you’re still seeing empty data, check the OAuth scopes. You need conversation:view and analytics:conversation:view.