Genesys Cloud Speech Analytics API returns empty transcript for completed interactions

I’m working on a C# backend service that needs to pull the full voice-to-text transcript for calls after they wrap up. The goal is to index these transcripts into our internal search engine for agent assist features. I’m using the @genesyscloud/genesyscloud JS SDK in a Node wrapper for now to test the logic before porting to .NET.

I can successfully fetch the interaction ID from the conversation API. When I call the speech analytics endpoint, the response comes back with a 200 OK status, but the transcript field is completely empty. It looks like the transcription job might not be finishing before I query it, or I’m hitting the wrong endpoint.

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

const { SpeechAnalyticsApi } = require('@genesyscloud/genesyscloud');
const analytics = new SpeechAnalyticsApi();

async function getTranscript(interactionId) {
 try {
 const result = await analytics.postInteractionTranscripts({
 body: {
 interactionId: interactionId,
 language: 'en-us'
 }
 });
 console.log('Status:', result.statusCode);
 console.log('Transcript:', result.body.transcript);
 return result.body;
 } catch (error) {
 console.error('Failed to get transcript:', error.message);
 }
}

The JSON response body looks like this:

{
 "interactionId": "abc-123-def",
 "status": "completed",
 "transcript": {
 "segments": []
 }
}

I’ve waited 5 minutes after the call ended before triggering this script. The status says “completed” so I assume the text is ready. I’ve checked the interaction ID and it matches the call in the Genesys UI where I can see the transcript clearly. Is there a specific flag I need to set in the postInteractionTranscripts body to force the retrieval of the generated text? Or is there a different endpoint for fetching the raw text versus the analysis metrics?

I’m running this in the US East region. Any pointers on why the segments array is coming back null would be appreciated.