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

# Changelog

> Recent changes and updates to the Nineninesix API.

## v0.3.0 — Strict output formats, telephony & clearer limits

* **`output_format` is now strictly validated** — unsupported values return `400` instead of silently falling back. Supported: `container` `raw`/`wav`, `encoding` `pcm_s16le`/`pcm_mulaw`/`pcm_alaw`, `sample_rate` `8000`/`16000`/`22050`.
* **Telephony encodings added** — 8 kHz μ-law (`pcm_mulaw`) and A-law (`pcm_alaw`) for Twilio/SIP media streams.
* **Removed formats** — `mp3`, `pcm_f32le`, and sample rates `24000`/`44100`/`48000` are no longer accepted.
* **Streaming is `raw`-only** — `wav` is available on `/tts/bytes` only; `/tts/sse` and `/tts/websocket` require `raw`.
* **Limits clarified as per-org** — rate and concurrency limits are shared across all of an org's API keys; extra keys don't add capacity. Concurrency is measured per active-speech turn, not per call.
* **Dutch voices are now tagged `nl-NL`** (BCP-47 dialect) instead of bare `nl`.

## v0.2.0 — Cartesia-compatible API

* Cartesia-compatible surface: `POST /tts/bytes`, `POST /tts/sse`, `GET /tts/websocket`, `/voices` CRUD, `POST /voices/clone`
* Model: `gepard-1.0`
* Real-time WebSocket streaming with per-transcript billing
* Voice cloning and the full Cartesia voice library
* API keys now use the `sk_996_<prefix>_<secret>` format, scoped to a project
* Prepaid credits: 1 credit per character, \$5 per 1M characters, credits never expire
* Per-project tiers (rate + concurrency): tier1 / tier2 / tier3, with auto-upgrade to tier2 at \$50 lifetime spend

## v0.1.0 — Initial Release

* OpenAI-compatible TTS API (deprecated; replaced by the Cartesia-compatible surface above)
