Skip to main content

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 voice id 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.
The server trims leading and trailing silence, uses the first 20 seconds of speech, and normalizes loudness.

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 send transcript, 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 with expand[]=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 voice id in the voice field: