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

# Changelog

> Every change to the public API, newest first.

Changes that affect integrators, newest first. See
[Versioning](/api-reference/versioning) for what counts as breaking and what
does not.

<Update label="2026-09-16" description="Post-call feedback">
  **Added — post-call feedback.** `POST /meetings/{id}/feedback` records the
  participant's own verdict on a call: a `good` / `had_issues` rating, plus two
  issue checklists split by who fixes the problem — `video_issues` for call
  quality (freezes, audio drop-outs, lip-sync) and `agent_issues` for the AI's
  behaviour (interrupting, slow replies, going off-script). `GET` on the same
  path reads it back, and `GET /meetings/feedback/catalog` returns the accepted
  keys with display labels. See [Meetings](/api-reference/meetings#post-call-feedback).

  One row per meeting — resubmitting replaces the previous answer and returns
  `200` instead of `201`. Free-text `comment` is encrypted at rest. *Additive.*
</Update>

<Update label="2026-09-06" description="Developer platform foundations">
  **Added — machine-readable errors.** Every response now carries an
  `X-Request-Id` header, and public-API errors carry a structured
  `error` object with a stable `type`, a specific `code`, the offending `param`
  where applicable, and a `doc_url`. See [Errors](/api-reference/errors).

  Existing top-level `status` and `message` fields are unchanged, so no
  integration needs to move. *Additive.*

  **Added — published rate limits.** 600 requests/minute globally and 120
  writes/minute, per API key. `RateLimit-Limit`, `RateLimit-Remaining` and
  `RateLimit-Reset` now appear on every response, with `Retry-After` on a 429.
  Previously the limits existed but were invisible. See
  [Rate limits](/api-reference/rate-limits). *Additive.*

  **Added — cursor pagination** on `GET /scenarios`, `GET /personas` and
  `GET /goals`. Opt in by sending `limit` or `cursor`; without either, these
  endpoints return exactly the body they always have. See
  [Pagination](/api-reference/pagination). *Additive.*

  **Added — idempotent writes.** All write endpoints accept an
  `Idempotency-Key` header. A retry with the same key and body replays the
  original response rather than repeating the operation, and the response
  carries `Idempotency-Replayed: true`. See
  [Idempotency](/api-reference/idempotency). *Additive.*

  **Added — official SDKs.**

  ```bash theme={null}
  npm install @waterr-ai/sdk     # Node 18+, no dependencies
  pip install waterr             # Python 3.10+, no dependencies
  ```

  Both handle retries with `Retry-After`-aware backoff, generate one
  idempotency key per operation and reuse it across attempts, expose typed
  errors, and walk cursors transparently.

  **Added — a published versioning policy** and this changelog. The `v1`
  contract is now fingerprinted and enforced in CI: a breaking change cannot
  ship by accident. See [Versioning](/api-reference/versioning).

  **Fixed — the OpenAPI specification.** It previously documented 29 of the
  API's paths with no `operationId`s, and referenced two schemas (`Recording`,
  `Transcript`) that were never defined — which made it invalid and unusable for
  code generation. It is now generated from the route definitions themselves and
  covers 75 public paths across 109 operations.
</Update>


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