Add to Claude
VoiceLabs
API ReferenceVoice cloning

Clone a voice

Create a cloned voice on this account from a recording: a name, the language, the exact text spoken, and the audio either inline as base64 (`audio`) or as an https:// URL (`audio_url`). The recording must be 2–30 seconds of clear speech. Returns the new profile's id, name, voice type and engine; use the id as `voice_id` on POST /v1/speech. A duplicate name is refused, so send an Idempotency-Key header to make a retry safe. On the free plan the account keeps one saved cloned voice; Pro is unlimited. Only clone a voice whose owner has agreed to it. Requires the `voice:clone` scope.

POST
/v1/voices/clone

Create a cloned voice on this account from a recording: a name, the language, the exact text spoken, and the audio either inline as base64 (audio) or as an https:// URL (audio_url). The recording must be 2–30 seconds of clear speech. Returns the new profile's id, name, voice type and engine; use the id as voice_id on POST /v1/speech. A duplicate name is refused, so send an Idempotency-Key header to make a retry safe. On the free plan the account keeps one saved cloned voice; Pro is unlimited. Only clone a voice whose owner has agreed to it.

Requires the voice:clone scope.

Authorization

x-api-key<token>

A VoiceLabs API key, sent in the x-api-key header. Keys begin with vl_sandbox_. This is the simplest way to authenticate and is what most callers should use.

Create one in the developer console at https://voicelabs.now/connections, on the API keys tab, choosing the scopes it carries. A key does exactly what its scopes allow: one without voice:generate is answered 403 insufficient_scope on the generation operations and cannot spend the account's allowance. The secret is shown once, at creation; revoking a key takes effect on its very next request.

In: header

Header Parameters

Idempotency-Key?string

An optional client-generated key that makes a retry safe. Replaying the same key with the same body returns the ORIGINAL response byte-for-byte instead of doing the work a second time; replaying it with a different body is refused with idempotency_key_reused.

Lengthlength <= 255

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

application/problem+json

application/problem+json

application/problem+json

application/problem+json

application/problem+json

application/problem+json

application/problem+json

application/problem+json

application/problem+json

application/problem+json

application/problem+json

curl -X POST "https://example.com/v1/voices/clone" \  -H "Content-Type: application/json" \  -d '{    "name": "string",    "reference_text": "string"  }'
{  "id": "string",  "name": "string",  "voice_type": "string",  "engine": "string",  "language": "string",  "sample_id": "string"}