Voice cloning now verifies the speaker's consent

Creating a cloned voice now requires the speaker to read a Speechify-issued phrase aloud, checked and retained as the consent record. The old consent JSON flow is deprecated today and will be switched off after a short migration window.

Developer Relations · SpeechifyAI Labs
2 min read

Creating a cloned voice on the Build API now requires proof that the speaker agreed to it, in place of the consent JSON field you used to send.

The flow adds one call in front of your existing create. POST /v1/voices/consent-challenges takes the speaker’s full_name and returns a phrase and an id. Show the phrase to the speaker exactly as it comes back, record them reading it aloud, and send that recording as consent_recording with consent_challenge_id on POST /v1/voices. Speechify transcribes the recording, checks it against the phrase it issued, and keeps it as the consent record for that voice. A challenge is single use, bound to your workspace, and short-lived, so create it when your speaker is ready to record.

The new shape is Speechify-Version: 2026-09-13. It is callable now by pinning that version, and it becomes the default for new workspaces on that date.

The unverified flow is deprecated as of today and will be switched off after a short migration window; the date will be announced ahead of time. Workspaces pinned to earlier versions keep the old consent field until then, and a pinned default does not move on its own: migrating means re-pinning 2026-09-13. Existing cloned voices are unaffected and keep working, and synthesis endpoints are unchanged: if your application only calls TTS with an existing voice_id, this does not affect you.

The window will be deliberately shorter than our standard 12-month sunset. An endpoint that clones a voice without checking the speaker agreed is a safety liability, not just an old shape. The reasoning is in SpeechifyAI and our elections. If you cannot migrate in time, contact support and we will work out an extension for your workspace rather than let your integration break on the day.

Migrating: full_name moves from the consent object onto the challenge call, email is dropped and nothing replaces it, and consent_challenge_id plus consent_recording become required. Three of the new error codes share HTTP 422 and mean different things, so branch on the code rather than the status: consent_phrase_mismatch (the phrase was misread), consent_speaker_mismatch (the person in the recording is not the person in the sample), and consent_recording_unusable (silence, too little speech, or an unreadable file).

Full details and migration steps are in the Voice Cloning API guide and the Build changelog.

Privacy preferences

Choose what we may store on this device. You can change this at any time from the footer.

Strictly necessary

Sign-in, security, load balancing, and remembering your privacy choices. These cannot be switched off.

Always on

Analytics

How the site is used in aggregate - which pages get read, where people get stuck - so we can improve it.

Marketing

Measures which campaigns bring people here, and lets us show relevant ads on other platforms.