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).
Authorization
bearerAuth 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"
}
}Get the upload URL for one part GET
For a multipart image/video upload: the presigned storage URL for part n (1..part_count), as plain text (JSON with Accept: application/json).
Get a voice clone GET
The state of a voice clone: processing, ready (with tts_preset_id to narrate with) or rejected (with reject_reason), and the intake measures.