Skip to content
Voices

Clone a voice

POST/voices/clone

Clone a voice from an audio recording. Send audio as a base64-encoded string. The cloned voice will be available in GET /voices.

Request body

  • audiostringrequired

    Base64-encoded audio data (max ~7.5MB decoded)

    at most 10000000 characters

  • contentTypeenum (6 values)required

    MIME type of the audio

    Possible values"audio/webm""audio/wav""audio/mpeg""audio/ogg""audio/mp4""video/webm"

  • namestringrequired

    Name for the cloned voice

    at least 1 character

  • languageenum (8 values)required

    Language of the voice

    "en"

    English

    "fr"

    French

    "es"

    Spanish

    "de"

    German

    "it"

    Italian

    "pt"

    Portuguese

    "ru"

    Russian

    "zh"

    Mandarin Chinese

Response

201
  • idstring

    Revox's internal ID of the cloned voice record. The other endpoints use cartesiaVoiceId instead.

  • cartesiaVoiceIdstring

    ID of the voice at Cartesia, which hosts cloned voices: the voice's id in GET /voices and the {id} of DELETE /voices/{id}. Give the voice to an assistant with voice.provider 'cartesia' and this value as voice.id.

  • namestring

    Name of the cloned voice.

  • languagestring

    Language of the voice.

  • createdAtstring

    When the voice was cloned (ISO 8601).

Errors

  • 400Invalid request: a field or parameter failed validation{ "message"?: string, "error"?: string, "bodyErrors"?: {…} }
  • 401Missing or invalid API key{ "message"?: string, "error"?: string, "bodyErrors"?: {…} }
  • 502An upstream provider failed{ "message"?: string, "error"?: string, "bodyErrors"?: {…} }

Error bodies carry an error (or message) string; a 400 adds bodyErrors.issues. See Errors.