Base URL
Authentication
All endpoints authenticate with an API key passed in thex-api-key header. The key is scoped to a single organization — studies are created in, and wallets are listed for, that organization.
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
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 on400schema failures (code: invalid_request_body): an array of per-field violations, each with apathandmessage.
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.