Running a Node.js service to pull CSAT data, and the Quality API keeps dropping the interactionId field. We’ve got a cron job hitting /api/v2/quality/surveys through the official JS SDK, but the response array comes back with empty strings for every interactionId. Swapped to raw fetch with a bearer token. Got the exact same garbage back. The filter object looks solid on paper.
const filters = [
{ name: 'status', operator: 'EQ', value: 'COMPLETED' },
{ name: 'surveyType', operator: 'EQ', value: 'CSAT' }
];
const result = await qualityApi.getQualitySurveys({
filters: filters,
pageSize: 100,
select: ['id', 'interactionId', 'score', 'submittedAt']
});
HTTP 200 response returns exactly 100 objects. Every single interactionId is an empty string. Score and submittedAt populate fine. Already tried adding interactionId to the expand array, but that throws a 400 saying the field isn’t supported for expansion. The webhook payloads for CSAT submissions actually include the full interactionId, so the data exists somewhere in the backend. SDK version is 4.2.1. Checked the Postman collection from the docs, and that same endpoint actually returns the IDs there. Maybe the select array syntax changed again. Or is there a separate expand param missing.
Pagination cursor works without throwing. Just can’t map the surveys back to the conversation logs. Looking for the exact filter syntax or a workaround to force the ID into the response. Running this out of Tokyo and the API latency is fine, just the payload structure is acting up. Console logs show the payload shape matches the docs exactly, except for that missing ID.