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

# Changelog

> A record of API changes, new features, and deprecations

Entries are dated when a change becomes available, newest first.

Subscribe to changelog updates via the [status page](https://status.soundpiece.co.uk) or by emailing [developers@soundpiece.co.uk](mailto:developers@soundpiece.co.uk) to be added to the developer mailing list.

***

## 2026-10-10 — Loudness presets, a reference client and per-endpoint guides

**New fields**

* `loudness.preset` — on every endpoint that takes a `loudness` block, name a destination instead of a number: `streaming` (-14 LUFS), `podcast` (-16 LUFS) or `broadcast` (-23 LUFS). A preset's value is fixed and never changes. Send `preset` or `target_lufs`, not both; `allow_compression` works with either. The operation's `loudness` echo carries `preset` when you named one (and still carries `target_lufs`, the preset's value). See [loudness](/loudness#presets).

**Documentation**

* [The reference client](/client): one small file for Python or JavaScript that submits, waits, retries and downloads, with the details that are easy to get wrong already handled.
* [Production checklist](/best-practices): what every integration should do before it goes live, and why.
* A guide for every endpoint, under **Capabilities**: what it does, a complete example in Python, JavaScript and cURL, the result, its errors and limits, how to choose parameters, and its cost. Start with [Normalise loudness](/guides/adapt/normalise_loudness), which walks through each possible outcome.
* API Reference examples: every endpoint's reference page shows example requests and responses, and its code samples include the `Authorization` header.
* New API Reference page addresses: `/api-reference/<group>/<name>/submit` for the `PUT` and `/api-reference/<group>/<name>/poll` for the `GET`, e.g. `/api-reference/adapt/normalise_loudness/submit`. Old API Reference links redirect to the new pages.

***

## 2026-10-09 — Auto-duck

**New endpoints**

| Endpoint | Description |
| - | - |
| `PUT /adapt.auto_duck` | Mix a voice over music, turning the music down while the voice speaks; the mix is delivered normalised, at -14 LUFS by default |

**New webhook types**

* `adapt.auto_duck.ready` and `adapt.auto_duck.failed`, with the result under `ducked_audio`.

**Webhooks**

* New `webhook-type` header on every delivery, carrying the kind of event (`<route>.ready` or `<route>.failed`, e.g. `adapt.auto_duck.ready`). The body is the same object the matching `GET` returns, under the same key. See [webhooks](/webhooks#payload-shape).

**Errors**

* `same_source` — a `422` when `music` and `voice` resolve to the same audio. See [errors](/errors).
* `error.source` — on a failed `adapt.auto_duck` operation, names the input (`music` or `voice`) a `source_*` error concerns, when it is known.

See [Auto-duck](/guides/adapt/auto_duck) for how the mix is levelled and delivered.

***

## 2026-10-07 — Loudness normalisation

**New endpoints**

| Endpoint | Description |
| - | - |
| `PUT /adapt.normalise_loudness` | Normalise a track to a target integrated loudness (-14 LUFS by default), with peaks kept at or below -1 dBTP true peak |

**New fields**

* `loudness` — an optional block on `create.new_song`, `create.new_instrumental`, `create.remix_song`, `create.remix_instrumental` and `adapt.auto_cut_down` that normalises every output to a target loudness, at no extra cost. Each `ready` output then reports the loudness measured on it (`lufs`, `true_peak_dbtp`, `compressed`).

See [loudness](/loudness).

***

## 2026-06-10 — Initial release

**New endpoints**

| Endpoint | Description |
| - | - |
| `PUT /create.new_song` | Generate a song with vocals from lyrics plus a prompt or a reference track |
| `PUT /create.new_instrumental` | Generate an instrumental from a prompt or a reference track |
| `PUT /create.new_sample` | Generate a short sample at a target duration, optionally loopable |
| `PUT /create.new_fx` | Generate a one-shot sound effect |
| `PUT /create.remix_song` | Remix a song with vocals into new variations, guided by new lyrics and a prompt |
| `PUT /create.remix_instrumental` | Remix an instrumental into new variations |
| `PUT /adapt.separate_stems` | Separate a track into vocals, drums, bass, other and instrumental stems |
| `PUT /adapt.auto_cut_down` | Trim a track to a target duration at musically natural cut points |

**Core features**

* Bearer API key authentication
* An `idempotency_key` on every submit, so retries never create work twice
* Asynchronous operations: submit with `PUT`, poll the same endpoint with `GET` (long-polling with `wait=true`)
* Webhook callbacks via `callback_url`, signed per the Standard Webhooks spec (`webhook-id`, `webhook-timestamp` and `webhook-signature` headers, HMAC-SHA256)
* Results delivered as signed, time-limited FLAC download URLs

***

## Format reference

Each entry uses the following change types:

| Tag | Meaning |
| - | - |
| `New` | New endpoint, field, or feature |
| `Changed` | Behaviour change to an existing feature (non-breaking) |
| `Deprecated` | Feature marked for removal; sunset date given |
| `Removed` | Previously deprecated feature has been removed |
| `Fixed` | Bug fix |
| `Security` | Security-related change |


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.