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

# Changelog

> What changed in the API, by contract version, newest first.

The API's version is the version of its OpenAPI document, which the
API Reference is generated from. Each entry below is the customer-visible
part of one version; the document itself carries the full reasoning.

## 0.11.0

* **Removed** three operations that were declared but never served:
  `GET /v1/jobs` (job groups are the unit of work; list and read them
  through `/v1/groups`), `GET /v1/shows/{show_id}` (search and charts carry
  the metadata, the episodes listing carries the catalogue), and
  `/v1/preferences`.
* **Added** `GET /v1/resolve`, a pointer to canonical ids and cache and price
  hints without a job, and `GET /v1/languages`, the supported-language table.
* `POST /v1/billing/refund` stays declared and says on its own operation
  that it is not yet routed.
* `request_id` may contain hyphens: a refusal generated at the edge carries
  the gateway's own id.
* Search results are ordered by title match, then catalogue size; an exact
  title search and a fuzzy search are merged so the show a name means is
  always a candidate.
* The quote ceiling is the estimate plus 25%, up from 10%, because feeds
  routinely under-state their length.

## 0.10.0

* Checkout, the Customer Portal and the invoice list are served from the
  dashboard, and the billing address gets `GET` and `PUT /v1/billing/address`.
* Checkout takes a plan `tier`, never a Stripe price identifier.
* New error code `tier_unchanged` for a checkout against the plan already
  held.
* Quote responses carry `balance_credits` and `reserved_credits`, so an
  API-key caller sees what it holds before it confirms.

## 0.9.0

* The API key operations are served: create, list, revoke. A create shows
  the plaintext key exactly once.
* New error code `api_key_limit_reached`; the limit travels in the message.
* Test-mode keys (`hk_test_`) remain declared and refused: the fixture
  corpus that makes them useful does not exist yet.

## 0.8.0 and 0.8.1

* `GET /v1/usage` and `GET /v1/limits` are served, for the dashboard's
  session only. 0.8.1 withdrew the declaration that an API key could call
  them; an API-key caller reads its balance from any quote response instead.
* Usage gains a daily series for the current period, the plan's included
  credits, the credits held beyond them, and when the allowance resets.

## 0.7.0

* `POST /v1/session` establishes the dashboard's session and repairs an
  account whose sign-up trigger was cut short, so a confirmed sign-in always
  has an account behind it.

## 0.6.0

* Account state is a typed refusal: `account_suspended`, `account_closed`
  and `account_not_found`, on writes only. Reads keep working until the
  account's keys are revoked.
* `GET /v1/reads/{read_id}` is new: the transcript behind a cached read a
  confirm already paid for, in every format, charging nothing.

## 0.5.0

* New error codes `request_in_progress` (retry with the same idempotency
  key), `quote_unverified` and `expected_total_mismatch`.
* A confirm may restate the quote's total as `expected_total_credits`; the
  API refuses to spend past it.
* Cache hits at submit time carry the `X-Transcript-*` and
  `X-Credits-Charged` headers.

## 0.4.0

* Transcript delivery is served: `GET /v1/transcripts/{job_id}` and
  `GET /v1/episodes/{episode_id}/transcript`, in `json`, `text`, `srt`,
  `vtt` and `md`.

## 0.3.0

* The write surface: confirm a quote into a job group, list groups, read a
  group, cancel a group. Every job belongs to a group; a single submit is a
  group of one.

## 0.2.0

* The credential travels only as `Authorization: Bearer hk_live_...`; the
  `x-api-key` alias is gone.
* Show search marks music-led shows instead of dropping them. Category
  charts and quotes are new.
