Docs · Changelog

API Changelog

Every customer-visible change to the SonicVox API, dated. Deprecations are announced here first — see the versioning & deprecation policy for what a deprecation means for your integration.

August 30, 2026

2026-08-30
addedVoices

POST /v1/voices (instant clone) now mints a reusable voice: the 201 response includes a voice_id you can pass straight to POST /v1/text-to-speech, alongside the rendered audio. Previously only the review-hold path returned an id, so the clone → synthesize loop could not be completed programmatically. Idempotent replays of a clone request are now marked with an Idempotent-Replay: true header.

changedVoices

A voice's stored default_settings (set via PATCH /v1/voices/{id}) are now applied at synthesis: any of model, language, emotion, emotion_intensity, speed, pitch, volume and the stability/similarity/style sampling controls that a request leaves unset fall back to the voice's defaults. Values sent on the request always win. The voice payload's default_settings_applied_at_synthesis flag now reads true.

addedAgents

Batch calling campaigns: POST /v1/agents/{id}/calls/batch (scope calls:initiate) launches an outbound campaign to up to 1,000 E.164 phone numbers, with optional concurrency (1–50), per-campaign system_prompt, greeting, voice_id, dynamic_variables and schedule_at. The route was previously documented but unreachable — every call 404'd.

addedAgents

Conversation recordings: GET /v1/agents/{id}/conversations/{conversationId}/recording (scope conversations:read) now serves the recording the conversation payload's recording.url has always pointed at, as a 302 to a presigned download valid for one hour. Previously the URL the API handed out returned 404.

August 29, 2026

2026-08-29
addedVoice Design

Voice Design is on the public API: POST /v1/voice-design generates voice candidates from a text description, and POST /v1/voice-design/save turns a candidate into a saved voice whose voice_id is immediately accepted by POST /v1/text-to-speech — the full design-to-speech loop over the API.

addedPronunciation Dictionaries

Pronunciation dictionaries can now be managed over the API: GET/POST /v1/pronunciation-dictionaries and GET/PATCH/DELETE /v1/pronunciation-dictionaries/{id}. PATCH takes metadata, add_entries and remove_entry_ids in one round trip and upserts on grapheme, so a term-list sync is a single call. Uses the existing voices:read/voices:write scopes; all five operations are free of credit charges. Each entry reports applied_at_synthesis, since only alias entries are consumed by the deployed engines.

addedAPI Keys

Free-tier sandbox keys: any plan — including Free — can mint one sandbox API key (Settings → API Keys → Sandbox). Generation endpoints return canned, zero-cost responses tagged X-SonicVox-Sandbox: true (text-to-speech returns real playable audio); read-only endpoints return your actual data; nothing is ever charged. The quickstart no longer ends at a paywall.

changedErrors

The catch-all rate_limit error code split into three codes whose recoveries differ: concurrency_limit_exceeded (a slot frees when one of your own jobs finishes), account_limited (a policy state — retrying extends it) and daily_limit_exceeded (resets at midnight UTC). rate_limit stays documented as a tombstone for old clients. forbidden, text_too_long and upstream_error — previously emitted but undocumented — joined the error catalog.

addedRate Limits

The per-plan rate-limit ladder is published: /docs/rate-limits now carries the effective per-minute and per-day request limits and API-key counts for every plan, resolved the same way enforcement resolves them.