These endpoints all authenticate with the
x-api-key header (see Get API Access). The create, launch, and wallet endpoints below build and launch studies; the response and study endpoints further down retrieve data from studies that are already live. For the full study-guide schema (every block type, question type, conditional, and validation rule) see the Study Creation API reference.Create Study
Validates a study guide and creates a draft study in the API key’s organization. Nothing is visible to participants until you launch it.POST https://listenlabs.ai/api/public/v1/studies/create
Request Body
title string required
Internal title of the study.
externalTitle string
Title shown to participants.
background string
Context about your company or product that the interviewer can draw on.
studyGoal string
What you are trying to learn. Guides the interviewer’s follow-ups.
config object
Interview settings. interviewMode (text, audio, audio_text, audio_screen, video, video_screen), questionLanguage (e.g. en, de), optional availableLanguages for auto-translation, and optional targetPlatforms.
welcomeMessage object
Optional title and message shown before the interview starts.
closingMessage string
Message shown when the interview ends.
studyGuide Block[] required
The ordered list of blocks that make up the interview. Each block has a type (flat, concept, or screening), a title, and an items array of questions. See the Study Guide Reference for the complete schema, all question types, conditionals, carry-forward, and cross-field validation rules.
Response
id uuid
Permanent unique identifier for the study. Use it to launch.
linkId string
The link ID of the study (editable later in study settings). Use it with the response endpoints.
status string
Always draft for a freshly created study.
Example Request
Example Response
Errors
Every error response returns anerror message and a stable code you should branch on. 400 schema failures (code: invalid_request_body) also include an issues array pointing at the offending fields; broken study-guide rules return code: invalid_study_guide.
Launch Study
Publishes a draft and returns its self-recruit link. Requires the API key’s user to have permission to start recruitment on the study. Project responses bill to the launch wallet.POST https://listenlabs.ai/api/public/v1/studies/{studyId}/launch
Path Parameters
studyId uuid
The study’s permanent id returned from Create Study.
Request Body
The body is optional.walletId uuid
Wallet to bill this study from; must be granted to the API key’s organization (see List Wallets). It can only be omitted when the organization has exactly one wallet, which is then auto-selected. If you have access to more than one wallet, omitting it returns a 400 (code: wallet_required).
Response
id uuid
The study’s permanent identifier.
linkId string
The link ID of the study.
selfRecruitLink string
The public link to share with participants.
status string
Always live after a successful launch.
wallet object
The wallet this launch is billed to. Omitted when no wallet is bound (organization without wallet billing).
Example Request
Example Response
Errors
List Wallets
Lists the wallets granted to the API key’s organization, each with recruitment and project credit balances. Use a wallet’swalletId when launching a study.
GET https://listenlabs.ai/api/public/v1/wallets
Response
wallets Wallet[]
Each wallet is an object with the following fields:
walletId uuid— Identifier to pass when launching a study.name string— Human-readable wallet name.recruitmentCreditBalance object— Credits for recruiting participants. Hasbalanceandusage(includes active holds).projectCreditBalance object— Credits for project responses. Samebalance/usageshape.
Example Request
Example Response
Get Responses
This endpoint lists all responses for a given study.GET https://listenlabs.ai/api/public/responses/{link_id}
Path Parameters
link_id string
The link ID of the study. You can find this in the study URL or via the List Studies endpoint. For example, in https://listenlabs.ai/s/abc123 the link ID is abc123.
Query Parameters
page integer default:"0"
The page number for pagination.
per_page integer default:"1000"
Number of responses to return per page.
updated_since string
ISO 8601 date string to filter responses updated after this date (e.g., 2023-08-18T11:51:54.649916Z).
include_in_progress boolean default:"true"
Whether to include responses whose analysis is still in progress.
Response
Returns a list of responses for the given study. Each response is an object with the following fields:id uuid
Unique identifier for the response.
response_number number
The ordered number of the response.
created_at string
UTC timestamp of when the response was created.
updated_at string
UTC timestamp of when the response was last updated (uses the analysis completion time when available).
progress string
The completion progress of the response (e.g. "complete", "in_progress").
response_duration_seconds number
The total duration of the response in seconds.
answers object
Answers to all questions of the study.
Summary string— A summary of the entire conversation. Available for all studies.Question 1 string— Everything the user said in response to question 1.Question 2 string— Everything the user said in response to question 2.
answers_array Answer[]
Answers to all questions of the study as an array.
answer_id string— The answer ID. Matches theanswer_idon transcript rows from the single response endpoint, enabling cross-referencing.discussion_guide_question_id string— The discussion guide question ID. Matches theidfield from the Get Study Questions endpoint, enabling you to join answers with their question definitions.concept_id string | null— The concept ID. Null if not concept-specific.question_id string deprecated— Deprecated. Useanswer_idinstead.question string— The question text, prefixed with its number when available (e.g."Q1: What is your age?").answer string— The answer to the question.
attributes object
URL parameters that were passed to the study.
id string— An id that is passed to the study, e.g.https://listenlabs.ai/s/abc123?id=123.
short_transcript string | null
A transcript of the entire conversation where the assistant messages are shortened to a couple of words. Can be null if the transcript has not been generated yet.
short_assistant_messages string[]
Condensed assistant turns used to build compact transcript context.
bullet_summary string[]
Concise bullet-point summary of the response.
quality_score number
Numeric response quality score, typically on a 1-5 scale.
tags string[]
Extracted keyword labels for the response.
tagline string
Short one-line synthesis for the response.
summary string
A natural-language summary of the response. May be omitted from the payload when a summary has not yet been generated for the response.
Example Request
Example Response
Get Single Response
This endpoint retrieves a single response for a specific study.GET https://listenlabs.ai/api/public/responses/{link_id}/{response_id}
Path Parameters
link_id string
The link ID of the study. You can find this in the study URL or via the List Studies endpoint. For example, in https://listenlabs.ai/s/abc123 the link ID is abc123.
response_id string
The unique ID of the specific response you want to retrieve.
Response
Returns a single response with detailed information:id string
Unique identifier for the response.
survey string
The link ID of the survey this response belongs to.
transcript array
A complete transcript of the conversation, with each entry containing:
moderator string— The message from the assistant/moderator.user string— The response from the user.discussion_guide_question_id string— The discussion guide question ID for this row. Matches theidfield from the Get Study Questions endpoint, enabling you to join transcript rows with their question definitions.concept_id string | null— The concept ID for this row. Null if the question isn’t concept-specific.answer_id string | null— The answer ID for this question. Matches theanswer_idin the list endpoint’sanswers_array, enabling cross-referencing between endpoints. Null for non-question rows (e.g. intro messages).response_index number— The zero-based index of this row in the conversation history.is_followup boolean— Whether this row is a follow-up to the same question as the previous row.audio string | null— A signed URL to the audio recording of the user’s response, if available. This URL is valid for 1 hour. Null if no audio recording exists.video object | null— Video playback information, if available. If no video recording exists, this will be null.stream_url string— HLS stream URL for the video recording.mp4_url string— Direct MP4 download URL for the video recording.
question_uuid string deprecated— Deprecated. Usediscussion_guide_question_idinstead.
Example Request
Example Response — Audio and Text
Example Response — Video and Text
Example Response — Text Only
Get Study Questions
This endpoint retrieves all questions for a specific study.GET https://listenlabs.ai/api/public/studies/{study_id}/questions
Path Parameters
study_id string
The link ID of the study you want to retrieve questions for. You can find this in the study URL or via the List Studies endpoint.
Response
Returns an object containing a list of questions from the study’s latest revision. Each question includes its type and relevant metadata.questions array
An array of question objects. Each question has a type field that determines its shape. All question types share these base fields:
id string— Unique identifier for the question. Matches thediscussion_guide_question_idfield in the response endpoints, enabling you to join questions with their corresponding transcript rows and answers.text string— The question text shown to participants.is_screener boolean— Whether this question is part of the screening section.type string— The question type. One of:open_ended,multiple_choice,ranking,statement.question_number number— The human-readable question number for display purposes.concepts array— An array of concept objects attached to this question (empty if the question is not part of a concept test block). Each concept contains:id string— Unique identifier for the concept.title string— The concept title.description string— The concept description.media array— An array of media attachments, each with atype(imageorvideo), aname, and aurl.embed_url string | null— An optional embed URL for the concept (e.g. a Figma or prototype link).
is_multi_select boolean— Whether the participant can select multiple options.options string[]— The list of answer options.
options string[]— The list of items to rank.
Example Request
Example Response
List Studies
This endpoint lists all studies.GET https://listenlabs.ai/api/public/list_surveys
Response
Returns a list of studies. Each study is an object with the following fields:id uuid
Permanent unique identifier for the study.
link_id string
The link ID of the study. This is editable in the study settings so it might change.
title string
The title of the study.
created_at string
UTC timestamp of when the study was created.
desc string
A description of the study. E.g. “My study (10 Responses)”.