Docs · API Policy
Versioning & Deprecation
What you can build on without watching us: how the API is versioned, how you find out about changes before they affect you, and how long a deprecated operation keeps working.
Versioning
The API is versioned in the URL path. Every endpoint lives under the /v1 segment:
https://sonicvox.ai/api/v1/text-to-speech https://sonicvox.ai/api/v1/voices https://sonicvox.ai/api/v1/account/webhooks
Breaking changes ship only in a new version path. Within /v1, a response field never changes meaning or disappears, a required parameter is never added, and an error's type/code contract stays as the error catalog documents it. Additive changes — new endpoints, new optional parameters, new response fields, new error codes, new webhook event types — arrive inside /v1 and are announced in the changelog. Write clients that ignore fields they don't recognize.
Deprecation
When an operation is deprecated, it is announced in the changelog and — from the moment it is marked — announces itself in-band on every response, per RFC 8594:
Deprecation: true Sunset: Sat, 28 Nov 2026 00:00:00 GMT (example — an HTTP-date 90 days out)
- •
Deprecation: trueis set on the operation's responses, alongside the rate-limit headers — check for it on your successful calls. - •
Sunsetcarries the earliest date the operation may be removed, as an HTTP-date, set 90 days from the moment the operation was marked deprecated. Until that date the operation keeps working unchanged — deprecation adds headers, it does not degrade behaviour. - •After removal, calls to the retired path return
unknown_endpoint(404).
The practical move: log a warning whenever a response you receive carries Deprecation: true, and alert on the Sunset date. That single check means you hear about every deprecation that touches your integration without reading a word of ours.
Not the same thing: disabled endpoints
An operationally disabled endpoint (maintenance, incident response) returns endpoint_disabled (503) and comes back when the condition clears. It carries no Sunset and implies nothing about the operation's future — do not treat a 503 as a deprecation, or a deprecation as an outage.
Webhook payload versioning
Webhook deliveries carry their own schema version in the envelope's version field (currently 2026-07-11). It is bumped only when a payload field changes meaning; receivers can branch on it to handle old and new shapes side by side.