> For the complete documentation index, see [llms.txt](https://boundaryai.gitbook.io/boundaryai-docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://boundaryai.gitbook.io/boundaryai-docs/api-and-webhooks/changelog.md).

# API changelog

The API surface is versioned (the current version is in the spec's `info.version` and served at `/api/v1/openapi.json`). This page tracks wire-contract changes and states the compatibility rules your integration can rely on.

***

### Compatibility promise

We follow semantic versioning on the API surface:

* **Major** (breaking) changes move the URL prefix (`/api/v1/` to `/api/v2/`) and are preceded by `Deprecation: true` + `Sunset: <date>` headers on the old endpoints for at least a full release cycle. None have happened.
* **Minor** changes are backward-compatible additions: new endpoints, new optional request fields, new response fields, new webhook events.
* **Patch** changes are clarifications only.

What we will never do without a major version: remove or rename a field or operation, tighten a field's type, change a success status code, or narrow an enum.

**What your client should do:** ignore unknown response fields, tolerate new webhook event types, and treat error `code` values (not messages) as the machine-readable contract.

***

### 1.2.0: Survey invite distribution (July 2026)

Trigger personalized survey-invite emails from the API, using the template designed in the platform.

* `GET /sources/{id}/invite-template`: template presence, variables, sender-domain status, quota usage.
* `POST /sources/{id}/invites`: transactional send, 1 to 1,000 recipients per call, with per-recipient `variables`, `dry_run` previews, and a `resend` override of the never-double-invite default.
* `GET /invites/{id}` and `/invites/{id}/recipients`: distribution status and per-recipient outcomes, including ESP delivery status.
* New **`send` key permission**; API sends require your organisation's own verified sending domain.
* New webhook events: `invites.completed`, `invite.bounced`.

### 1.1.0: Input API improvement pass (July 2026)

* **Recommended vocabulary**: the API now speaks `feedback_group` / `source` / `field` alongside the original `survey_series` / `survey` / `question`. Same handlers, both key sets accepted; the classic routes are unchanged and not deprecated. See [Concepts & naming](/boundaryai-docs/api-and-webhooks/concepts-and-naming.md).
* **Structured content items** on push: `{text, external_id, customer_id, channel, language, rating, occurred_at}`. `external_id` deduplicates retried pushes; `occurred_at` back-dates items into the right tracking period.
* **Analysis read-back** via `GET /sources/{id}/analysis`: sentiment distribution, themes, monitor matches.
* **New webhook events**: `analysis.completed`, `flag.raised`, `report.ready`.
* **Data controls**: `POST /feedback/erase` (bulk erasure by `external_id` or `customer_id`), `GET /feedback` (cursor listing of API-pushed items), `POST /feedback/upload` (CSV/XLSX async ingest), `GET /me` (key introspection).
* `feedback_type` on source creation (`survey`, `call_transcript`, `app_review`, `support_ticket`, `chat`, `email`, `social_media`, `review`, `other`).
* Listings became paginated (`limit` default 50, max 200, with a `pagination` echo).

### 1.0.0: Initial public spec (May 2026)

First published OpenAPI 3.1 description of the integration surface: content push (single + bulk), group/source/field creation and publishing, API-key auth with scoped permissions, idempotency keys, cursor pagination, rate-limit headers, and the first four webhook events (`content.pushed`, `series.created`, `survey.created`, `survey.published`) with signed deliveries.
