Skip to main content

2026-10-01

  • Webhooks can now subscribe to study.paused, study.resumed, and study.stopped for successful public API lifecycle transitions. Each event carries a new ID and minimal study_id/fielding_status data.
  • Added private, asynchronous CSV and JSONL interview exports. Each job covers up to 100 interviews and returns next_page when more remain. Downloads use 15-minute signed URLs and expire after seven days.
  • Added POST /api/public/v1/studies/{study_id}/customize-plan/jobs and GET /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} accepts redact_pii=true to 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. The pii_redacted field 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_id and bounded scalar metadata on creation. Participant reads return both fields, lists can filter by exact external_id with study_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_size explicitly to retain a different page size.
  • PATCH /api/public/v1/participants/{participant_id} updates the participant email. The older PUT operation remains available but is deprecated; the MCP update tool now uses PATCH.
  • The API host serves the curated public specification at /.well-known/openapi.json as well as /openapi.json in production.
  • Interview summaries include ended_at, interview_format, and language. language is the study’s current configured language, not a detected transcript language; older interviews may have used a previous setting. Unknown historical modes remain null.
  • Transcript messages now have a typed public segment schema: id, role, message, and optional text_offset, start_s, and end_s. The response remains paged and bounded.
  • DELETE /api/public/v1/webhooks/ is deprecated. Use DELETE /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.
See versioning and deprecation for how to handle future changes.