Join Keys
Fields below reflect the versioned endpoints (
/api/public/v1/...), which
use camelCase. The legacy unversioned endpoints return the same fields in
snake_case (e.g. answer_id) and are deprecated starting
August 1, 2026.Entity Fields
Study
Returned by List Studies.Response
Returned by Get Responses. Each response belongs to a study vialinkId.
Answer
Nested insideResponse.answersArray.
TranscriptRow
Returned by Get Single Response inside thetranscript array.
Question
Returned by Get Study Questions.Concept
Nested insideQuestion.concepts.
Traversal Examples
Get all answers for a study, grouped by question
GET /api/public/v1/studies— find the study’sidandlinkIdGET /api/public/v1/studies/{studyId}/questions— get all questions (using theid)GET /api/public/v1/responses/{linkId}— get all responses- Join each
answersArray[]item to its question usingdiscussionGuideQuestionId=Question.id
Match transcript audio/video to specific questions
GET /api/public/v1/responses/{linkId}/{responseId}— get the full transcriptGET /api/public/v1/studies/{studyId}/questions— get question definitions- Each transcript row’s
discussionGuideQuestionIdtells you which question it belongs to - Use
audio,video, andscreenVideofields on the transcript row to access the media for that exchange
Group transcript rows by answer (including follow-ups)
GET /api/public/v1/responses/{linkId}/{responseId}— get the full transcript- Group transcript rows by
answerId— rows sharing the sameanswerIdbelong to the same answer, with follow-ups marked byisFollowUp: true - Cross-reference with
answersArrayfrom the list endpoint using the sameanswerIdto get the extracted answer text