# Changelog

Every API change is listed here: new routes, fields, values and fixes.

## 410 error on lists

The `detail` text of the `cursor_expired` error now covers both lists and the event feed: for a list, start again without `cursor`; for the feed, run recovery. The new text reads: "The cursor expired. Restart a list without cursor. For the event feed, record the gap, request start=now, reconcile campaigns and leads, then resume the feed". The code and status are unchanged.

## v1, early access

The first version of the public API. Read-only access with an organization API key.

- Routes: `GET /v1/me`, `GET /v1/workspaces`, `GET /v1/campaigns`, `GET /v1/campaigns/{id}`, `GET /v1/leads`, `GET /v1/leads/{id}`, `GET /v1/leads/{id}/messages`, `GET /v1/events`.
- Key permissions: `campaigns:read`, `leads:read`, `messages:read`, `events:read`, plus a separate "Message text" checkbox.
- Key scope by workspace and campaign, expiration date, IP allowlist, rotation with an overlap period, revocation and a request log.
- An event feed with `lead.first_message_sent` and `lead.replied`, a 30-day cursor, and the `start=now` and `include_text` parameters.
- Errors in RFC 9457 format with a `Request-Id` header, and rate limits in weight units with `RateLimit` headers.
- An OpenAPI 3.1 specification.
- Materials for AI agents: `llms.txt`, `llms-full.txt`, Markdown for every page, an agent prompt and a "Copy page" menu.

Known early access limitations:

- `delivery_state` with the values `waiting_queue` and `failed`, and `automation_state` with the value `completed`, are not returned yet.
- Completeness of the conversation archive and the event feed is not guaranteed: check `meta.completeness` and `meta.coverage`.
- The API can't write data yet. Plans are described in [What's next](https://docs.melioralab.io/en/roadmap/).
