Skip to main content
The Listen Labs API lets you run studies entirely from code: define a study guide as JSON, create a draft, launch it to get a self-recruit link you can distribute to participants, and pull responses back out once interviews come in.

Base URL

Authentication

All endpoints authenticate with an API key passed in the x-api-key header. The key is scoped to a single organization — studies are created in, and wallets are listed for, that organization.
Admins and Supervisors can create API keys from the Developer section of their account page on Listen. See Get API Access for details.

Workflow

1

Create a draft study

POST /api/public/v1/studies/create with a title and a study guide. The guide is validated up front; if it passes, you get back a draft study’s id and linkId. Nothing is visible to participants yet — you can still review or edit the draft in the dashboard.
2

Pick a wallet (optional)

GET /api/public/v1/wallets lists the wallets granted to your organization with their recruitment and project credit balances. walletId can only be omitted at launch when your organization has exactly one wallet (it’s auto-selected). If you have access to more than one, omitting it returns a 400 (wallet_required) — you must pass one from this list.
3

Launch

POST /api/public/v1/studies/{studyId}/launch publishes the draft and opens its self-recruit link. The response includes selfRecruitLink — share it with participants (or plug it into your own recruitment flow). Project responses bill to the launch wallet.
4

Retrieve responses

Once interviews come in, pull them with Get Responses (GET /api/public/v1/responses/{linkId}) and drill into a single transcript with Get Single Response. The linkId comes back from create/launch, or from List Studies. The Data Map shows how these entities join together.

Quickstart

A complete create → launch example you can copy and run.

Endpoints

The unversioned response endpoints — GET /api/public/responses/{link_id} and GET /api/public/responses/{link_id}/{response_id} — are deprecated starting August 1, 2026. Migrate to the versioned /api/public/v1/responses/... endpoints above before then.

Errors

Every error response from the /api/public/v1/* endpoints shares one JSON envelope:
  • error — a human-readable message. Useful for logs, but it may change; don’t branch on it.
  • code — a stable, machine-readable identifier. Branch on this.
  • issues — present only on 400 schema failures (code: invalid_request_body): an array of per-field violations, each with a path and message.
400 Schema violation
400 Invalid study guide

Error codes

Beyond field-level validation, the server enforces cross-field rules on the study guide (screening block placement, minSelect/maxSelect coupling, unique externalIds, reference resolution, exclusiveOption placement) and returns violations as 400 responses (code: invalid_study_guide). The full list is in the Study Guide Reference.