> ## Documentation Index
> Fetch the complete documentation index at: https://docs.userintuition.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# API Changelog

> Changes to the public integration API and its OpenAPI contract

## 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](/api-reference/versioning-and-deprecation) for how to handle future changes.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.