# Changelog

> Every change to the API, newest first. The newest version here is the version of openapi.json.

Each entry is one API version. The newest one is also `info.version` in [openapi.json](/openapi.json): if the spec you cached has an older version, something below is new to you. New fields, endpoints and error codes bump the middle number, so write clients that ignore fields they don't know.

The [Node.js SDK](/sdks) has its own [changelog](https://github.com/justonair/justonair-node/blob/main/CHANGELOG.md).

## 1.6.0 (2026-10-08)

- Every response has an `X-Request-Id` header, and every error body has `error.request_id`. Quote it when you write to us.
- `Retry-After` header on errors that go away by waiting: `rate_limited`, `limit_creation_rate` (also `details.retry_after_seconds`), `chat_slow_mode`, `chat_rate_limited`, `chat_busy` and `no_capacity`.
- `GET https://api.justonair.com/` answers with links to the docs, `openapi.json` and `llms.txt`.
- `openapi.json` has an example for every request body and response, and `x-error-codes` on every error response.

## 1.5.0 (2026-10-08)

- Chat moderators: `active_days` (1–30, default 30) when you invite one, and `active_until` on the moderator.

## 1.4.0 (2026-10-08)

- `player.allowed_domains`: the sites allowed to embed the player and chat page, and to post to chat (`origin_not_allowed`).
- Moderator links: `POST /v1/streams/{id}/chat/moderators` and the moderator endpoints under `/v1/embed/{id}/mod`. Messages and bans say who acted (`deleted_by`, `created_by`).
- `reaction_sampling` in the public chat read.

## 1.3.0 (2026-10-08)

- Viewer chat and emoji reactions (beta): `chat` settings on streams, the public chat endpoints under `/v1/embed/{id}`, and the owner's feed and moderation under `/v1/streams/{id}/chat`.

## 1.2.0 (2026-10-05)

- Thumbnails: `thumbnail` on streams, `poster_url` in the embed read, and the public thumbnail URL.

## 1.1.0 (2026-09-30)

- `player.enabled`: switch the public hosted player off for streams you gate yourself.
- `player.watch_minutes_limit`, `player.closed_at` and the embed status `closed`.
- Postpaid accounts: `billing_mode` in usage, and the `balance.*` webhook events.
- Viewer beats take a viewer session token (`t`), so counts can't be forged.

## 1.0.0 (2026-09-29)

- Streams: create, get, list, update, end; replace a lost key; the reservation countdown; cost per stream.
- Playback tokens, recordings (download, delete), usage and balance.
- The hosted player and its public embed read.
- Viewer counts: `viewers`, `viewers_now`, and per minute and by country.
- Webhooks (Standard Webhooks) with a delivery log; credit warnings by email and webhook.
