API referenceVoices

Clone a voice from a recording

Start cloning a voice from a library asset (media_id) or a url (upload_url).

The recording is checked (at least 10s of speech, at least 40% of it speech, not too noisy or clipped); the best 10–30s stretch becomes the reference clip and is transcribed. On success a voice (tts_presets row) is created for the account. Asynchronous — 202 with an id; poll GET /voices/clones/{cloneId}. Requires consent.attested = true. Disabled unless the deployment enables voice cloning (403 feature_disabled).

POST
/voices/clones

Authorization

bearerAuth
AuthorizationBearer <token>

Typecut API key. Generate one in app.typecut.ai → Settings → API keys. Send as Authorization: Bearer tc_live_….

In: header

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

application/json

application/json

application/json

application/json

application/json

curl -X POST "https://example.com/voices/clones" \  -H "Content-Type: application/json" \  -d '{    "name": "string",    "consent": {      "attested": true    }  }'
{
  "data": {
    "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
    "status": "processing",
    "note": "string"
  }
}
{
  "error": {
    "type": "string",
    "code": "string",
    "message": "string"
  }
}
{
  "error": {
    "type": "string",
    "code": "string",
    "message": "string"
  }
}
{
  "error": {
    "type": "string",
    "code": "string",
    "message": "string"
  }
}
{
  "error": {
    "type": "string",
    "code": "string",
    "message": "string"
  }
}
{
  "error": {
    "type": "string",
    "code": "string",
    "message": "string"
  }
}