# Changelog

> Changes to komplai's API, newest first, by version of the OpenAPI document.

Changes to komplai's API, newest first. The version is `info.version` in the [OpenAPI document](https://developers.komplai.dk/openapi.json).

## 1.3.0

The version this documentation describes.

- Complete request and response schemas, with examples, for Chat (GET /v1/models, POST /v1/chat/completions), Decide (POST /v1/decide, POST /v1/decide/batch) and Coding (GET /v1/coding/account, GET /v1/coding/models, POST /v1/coding/chat/completions). Before this version, the document listed these operations and referred to the hub for their requests and responses.
- Every response to a call the API handles carries a `Request-Id` header. Send `X-Request-Id` with a UUID to have your own id used.
- Every JSON error body has `request_id` and `doc_url` besides `error`. The document describes the body as `components.schemas.Error` and lists every code with its statuses, meaning and what to do in `x-komplai-error-codes`. An error event in the Coding stream carries the same two fields.
- Every operation and tag has `x-komplai-stability`: `stable`, `beta` or `alpha`. Redact's `engine` and `sources` are marked `preview`.
- POST /v1/chat/completions documents [`eu_cloud_refused`](https://developers.komplai.dk/errors/eu_cloud_refused) (502): komplai's EU cloud refused the call, so the model did not answer it.
- The API accepts browser calls from developers.komplai.dk, so the consoles on this site can send calls, and lets the browser read `Request-Id`, `Retry-After`, `Location`, `Preference-Applied` and the `X-RateLimit-*` headers.
- The document links to this site and to the hub's API area, where a member creates a personal API key.

## 20 October 2026

Changes to Redact while the document was at version 1.2.0.

- `Prefer: respond-async` on POST /v1/redact and POST /v1/redact/file answers 202 with a text job instead of holding the connection. The text may then be as long as a text job allows.
- A synchronous run that komplai estimates cannot finish within 300 seconds is refused before anything runs, with 413 [`use_job`](https://developers.komplai.dk/errors/use_job), `estimatedSeconds` and `holdSeconds`.
- An interrupted text job resumes from its encrypted checkpoint. A job that makes no progress for 65 minutes ends with [`redact_job_stalled`](https://developers.komplai.dk/errors/redact_job_stalled).
- `engine` `review` is retired. A request that names it answers 400 [`engine_retired`](https://developers.komplai.dk/errors/engine_retired), with `hint` naming what to send instead.

## 1.2.0

Released on 19 October 2026.

- Redact calls can name the NER place (`nerDeployment`: `eu-de` or `local`), the NER model (`nerModel`) and the language model (`model`). A place or model that cannot be used is refused by name and never replaced by another.
- GET /v1/access lists the NER places and the models a call may name, with whether each can be used now.

## 1.1.0

Released on 19 October 2026.

- Organisation integration keys (`kp_org_`) for Redact and GET /v1/access.
- POST /v1/redact/restore puts the originals back into a text with labels such as `[PERSON-1]`.
- PDF and Word input (Beta): POST /v1/redact/file and POST /v1/redact/file/jobs.
- The per-IP limit answers 429 [`rate_limited`](https://developers.komplai.dk/errors/rate_limited) with `Retry-After` and `x-ratelimit-*` on every route.
- The OpenAPI document gained readable `operationId`s, a security scheme for each kind of key, the error codes for each status with an example, and examples for every Redact operation. GET /v1/openapi.json ignores the `Authorization` header, so import tools that always send a key still get it.

## 1.0.0

The version before 19 October 2026: personal API keys (`kp_live_`) for Redact (pseudonymisation, detection and text jobs), GET /v1/access, Chat, Decide and Coding.

---

https://developers.komplai.dk/changelog
