Quality API survey responses missing interactionId for CSAT reports

Hitting a wall with the Quality API while trying to build a custom CSAT dashboard in Node.js.

We need to map survey responses back to the specific conversation ID to pull in agent metadata. The docs suggest using the survey retrieval endpoints, but I’m struggling to find a direct way to filter survey results by interactionId or conversation ID. The available endpoints seem to focus on forms or specific known conversation IDs, rather than a bulk query of responses with interaction context.

Here’s the current approach I’m trying to adapt:

// Attempting to get surveys for a known conversation
const surveys = await qualityApi.getQualityConversationsConversationIdSurveys({
 conversationId: 'conv-abc-123'
});

console.log(surveys.body.entities[0]);

The payload looks like this:

{
 "id": "survey-123",
 "score": 5,
 "comments": "Great service",
 "interactionId": null,
 "surveyId": "csat-v1"
}

The interactionId field is consistently null in the response objects. Is there a different endpoint or a specific query parameter I’m missing to link this back to the conversation? I tried joining on the surveyId but that doesn’t help with the interaction context.

Running this against the JS SDK v3.9.0. Any pointers?

2 Likes
const surveyResponse = await qualityClient.getQualitySurveyResponse(surveyId);
const conversationId = surveyResponse.conversationId; // Use this, not interactionId

You’re looking at the wrong field. The interactionId in that endpoint refers to the survey instance, not the call. Pull the conversationId from the survey response object instead. It links directly to the parent interaction. You can then use that ID to fetch agent details or routing data. The API structure keeps them separate for performance reasons.