Create Voice
Create a cloned voice for the workspace from a 10-30 second audio sample, with verified consent from the speaker.
Cloning requires proof that the speaker agreed to it. Create a consent challenge with POST /v1/voices/consent-challenges, show the returned phrase to the speaker, record them reading it aloud, and send that recording here as consent_recording together with the challenge's consent_challenge_id. Speechify transcribes the recording, checks it against the phrase it issued, checks that its speaker is the speaker in your sample, and keeps it as the consent record for the voice. The person consenting therefore has to be the person being cloned. A challenge is single use and short-lived, so record and submit in one sitting.
The clone belongs to the workspace rather than the member who created it, and access follows the caller's workspace role and API-key scopes exactly as for any other voice: voices scopes to list it, audio scopes to synthesize with it, and the content-management permission plus a write scope on the key to delete it. Cloned voices are usable self-serve on simba-3.0 (and, on a workspace pinned before API version 2026-09-21, on the retired simba-english and simba-multilingual, which from 2026-11-21 are served by our current models and still take cloned voices). simba-3.2 also serves cloned voices.
The previous flow, a consent form field carrying the speaker's name and email as a JSON string, was switched off on 2026-09-23 for every API version: a create that sends consent and no consent_challenge_id returns 400 consent_verification_required.
Voice cloning is not available in some jurisdictions. A request from one returns 403 voice_cloning_unavailable_in_region before consent verification runs, so it does not spend the challenge. The location is read from the IP address that sends the request, which is your server's when your backend calls the API; a location header in the request is ignored.
Request
- Base URL: https://api.speechify.ai
- URL: https://api.speechify.ai/v1/voices
- Auth: HTTP bearer
Headers
A client-generated key (an opaque string, max 255 chars) that makes a side-effect POST safe to retry: the server runs the operation exactly once and replays the first response (its status and body) for 24 hours. Reusing a key with a different request body, or while the first request is still in flight, returns 409 idempotency_conflict. A replayed response carries the Idempotent-Replayed: true header.
Response
A created voice
Changes
No recorded changes to this operation across all 1 revision of this API.