Skip to main content
Create a voice your organization owns in three ways: instant clone from a single clip, pro clone from a multi-file dataset, or localization of an existing voice into another language. A cloned voice is used in TTS requests like any other voice. Asynchronous operations return a job_id; poll GET /jobs/:id until the job settles.

Instant clone

POST /voices/clone accepts the audio in one of three forms:
  • multipart/form-data — one file field plus the text fields below.
  • Raw bodyContent-Type: audio/* or application/octet-stream; text fields go in query params.
  • JSON{"blob_id": "..."} referencing audio already stored with your organization.
Send exactly one clip per request; zero or several return 400 missing_clip. Use 10–30 seconds of clean speech — 10 seconds is the working minimum. Caps: 25 MB per clip (413) and 250 MB of stored audio per organization (413 blob_quota_exceeded).
Two success shapes:
  • 201 — the clone ran synchronously; the body is the finished Voice, usable in TTS immediately.
  • 202{"job_id": "...", "voice_id": "...", "status": "queued"}. The voice row exists now under the returned voice_id; its profile attaches when the job succeeds.

Pro clone

POST /voices/clone/pro builds a higher-fidelity voice from a dataset. Provide 10+ minutes of audio across files, 25 MB per file. Input forms: multipart with multiple file fields, a raw audio body, or JSON {"blob_ids": ["..."]}. name is required. There is no mode field. Pro clones never complete synchronously. The endpoint always returns 202 {"job_id": "...", "status": "..."}.

Localize

POST /voices/:id/localize derives a new voice in another language. Body: {"target_language": "..."} (required — 400 without it) plus optional model_id. Returns 202 {"job_id": "...", "status": "..."}. The result is a new voice your organization owns, with source: "localized" and parent_voice_id pointing at the original. Featured platform voices can be localized; the original is untouched.

Polling jobs

GET /jobs/:id returns the state of any clone or localize job in your organization; unknown ids return 404. Poll until the status leaves queued/running: