2026-10-01
-
Webhooks can now subscribe to
study.paused,study.resumed, andstudy.stoppedfor successful public API lifecycle transitions. Each event carries a new ID and minimalstudy_id/fielding_statusdata. -
Added private, asynchronous CSV and JSONL interview exports. Each job covers up to 100 interviews and returns
next_pagewhen more remain. Downloads use 15-minute signed URLs and expire after seven days. -
Added
POST /api/public/v1/studies/{study_id}/customize-plan/jobsandGET /api/public/v1/studies/{study_id}/customize-plan/jobs/{job_id}for durable, pollable planning turns. Jobs return the existing structured planning response on success. Failed turns require inspection before an explicit retry; native concept images remain on the synchronous route. -
GET /api/public/v1/interviews/{interview_id}acceptsredact_pii=trueto mask email addresses, phone numbers, and US Social Security numbers in transcript and screener text. It omits participant email and recording URLs from that response. Thepii_redactedfield records whether masking was requested. Pattern masking cannot detect every identifier, including names and street addresses. -
Platform admins (
users.role = admin) can read public research across organizations, search app-scoped organizations by name or active owner name/email, and select an organization for writes and billing. Organization results include active owner names and email addresses. Admin API keys retain their own scopes and spend caps; MCP tools expose the same organization search and selection. - Added authenticated external-panel configuration routes for BYOP studies. Create or replace the provider entry mapping and outcome redirects, read the current entry URL, regenerate its token, or disable the integration. Matching MCP tools expose the same operations.
- Added public reference catalogs for languages, interview modes, voice choices, and study-type planning templates, plus a versioned interview usage read. MCP resources and the usage tool now use these public routes.
-
BYOP participant invitations accept a study-scoped
external_idand bounded scalarmetadataon creation. Participant reads return both fields, lists can filter by exactexternal_idwithstudy_id, and PATCH can update or clear the customer ID or replace metadata. -
Interview and participant lists now default to 20 results per page, matching studies and feasibility requests. Set
page_sizeexplicitly to retain a different page size. -
PATCH /api/public/v1/participants/{participant_id}updates the participant email. The olderPUToperation remains available but is deprecated; the MCP update tool now uses PATCH. -
The API host serves the curated public specification at
/.well-known/openapi.jsonas well as/openapi.jsonin production. -
Interview summaries include
ended_at,interview_format, andlanguage.languageis the study’s current configured language, not a detected transcript language; older interviews may have used a previous setting. Unknown historical modes remainnull. -
Transcript
messagesnow have a typed public segment schema:id,role,message, and optionaltext_offset,start_s, andend_s. The response remains paged and bounded. -
DELETE /api/public/v1/webhooks/is deprecated. UseDELETE /api/public/v1/webhooks/{webhook_id}; the body-based route continues to work during migration. - The OpenAPI Bearer security scheme no longer labels every credential as a JWT. It continues to accept both API keys and dashboard tokens.

