Skip to main content

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 via linkId.

Answer

Nested inside Response.answersArray.

TranscriptRow

Returned by Get Single Response inside the transcript array.

Question

Returned by Get Study Questions.

Concept

Nested inside Question.concepts.

Traversal Examples

Get all answers for a study, grouped by question

  1. GET /api/public/v1/studies — find the study’s id and linkId
  2. GET /api/public/v1/studies/{studyId}/questions — get all questions (using the id)
  3. GET /api/public/v1/responses/{linkId} — get all responses
  4. Join each answersArray[] item to its question using discussionGuideQuestionId = Question.id

Match transcript audio/video to specific questions

  1. GET /api/public/v1/responses/{linkId}/{responseId} — get the full transcript
  2. GET /api/public/v1/studies/{studyId}/questions — get question definitions
  3. Each transcript row’s discussionGuideQuestionId tells you which question it belongs to
  4. Use audio, video, and screenVideo fields on the transcript row to access the media for that exchange

Group transcript rows by answer (including follow-ups)

  1. GET /api/public/v1/responses/{linkId}/{responseId} — get the full transcript
  2. Group transcript rows by answerId — rows sharing the same answerId belong to the same answer, with follow-ups marked by isFollowUp: true
  3. Cross-reference with answersArray from the list endpoint using the same answerId to get the extracted answer text