GET /voices
Returns the voices available to your organization (the shared library plus any you’ve cloned). The list is paginated.Query Parameters
Response
Every library voice has a full dialect tag. The library has 34 voices across
en-US, en-GB, es-MX, pt-BR, and nl-NL. The language filter is an exact match, so filter with the full tag (?language=en-GB); ?language=en won’t match en-GB voices.
Example
GET /voices/{id}
Fetch metadata for a single voice.
DELETE /voices/{id}
Remove a cloned voice you own.
POST /voices/clone
Clone a voice from a reference audio clip (multipart upload). Use the returned voiceid in your /tts/bytes, /tts/sse, and /tts/websocket requests.
Form Fields
Audio Requirements
- Format: WAV is recommended. FLAC, OGG, MP3, and M4A also work.
- Length: 1–300 seconds.
- Size: under 20 MB.
Recording Tips
- 10–20 seconds of clean speech works best. Shorter clips sound noticeably less like the speaker.
- Record at the pace you want. The voice takes on the clip’s pace and pauses.
Using a Transcript
If you sendtranscript, the clone follows the speaker more closely, including their pace. Two conditions:
- The transcript must match the audio exactly.
- It’s ignored if the clip still has 20 seconds or more of speech after silence is trimmed. Send a clip under 20 seconds when you use a transcript.
transcript isn’t one of the Cartesia SDK’s clone parameters, so pass it as an extra field: extra_body in Python, or an extra key with a type cast in TypeScript. Don’t put the transcript in Cartesia’s tagline field.
Language
language must be a well-formed BCP-47 tag, such as en-US, en-GB, es-MX, pt-BR, or nl-NL. It’s stored as metadata, used for listing and filtering voices, and doesn’t change how the voice sounds. The value is canonicalized on save (en-us → en-US). A malformed tag (en_US, en-USA, english_, 123) is rejected with invalid_language (400):
Preview
After a clone, a 48 kHz preview of the voice is rendered automatically. To get it, list voices withexpand[]=preview_file_url; each voice then includes preview_file_url, a signed URL you can play directly in a browser.
Errors
Clone errors come in two shapes. Audio problems return{ "detail": "..." }: 400 for a clip that can’t be decoded or is under 1 second, 413 for an upload over 20 MB or a clip over 300 seconds, and 503 while the service is starting. Other errors (invalid_language, clone_failed, db_unavailable) use { "error": "...", "message": "..." }. See Voice cloning errors.
Choosing a Voice
Browse and preview voices in the Playground before integrating them. Pass the voiceid in the voice field: