A professional clone trains a dedicated HeyGen Voice adapter from one or more recordings of the same speaker. It is the highest-fidelity clone HeyGen offers. To clone from a single short recording in minutes, use HeyGen Instant Clone.
- Create a voice, or retrain an existing one with new recordings.
- Poll until the voice is
ACTIVE. - Generate speech, completed or streamed.
Before you start
Get private-preview access
Preview access is enabled per HeyGen username. Create an API key in the workspace that should own the voice, look up its username, and send that username to the Professional Voice Cloning preview team:/v3/models/audio endpoints return 403 forbidden. Voices belong to the workspace of the API key that created them.
Slots and training allowance
- One purchased slot per voice. Retraining reuses the voice’s slot.
- Each slot provides five pooled trainings per monthly billing period, initial training included. Failed trainings are free.
- If the workspace later exceeds its slot limit, for example when a slot add-on lapses, the surplus voices return
voice_expiredon synthesis until you add a slot or delete another professional voice. The voice and its data stay intact.
Prepare the recordings
Provide 1–10 recordings of the same speaker totaling at least 20 minutes. Duration is measured including silence, so trim dead air, background noise, and overlapping speech. Upload local files with the Assets API and pass the returnedasset_id values:
asset_id. For larger files use the direct upload flow.
1. Create a voice
POST /v3/models/audio/voices returns 202 Accepted while training runs.
Response
Every recording is validated and staged before the voice is created, so undecodable audio, an unreachable URL, or fewer than 20 minutes in total returns
400 invalid_parameter with no voice_id.
Idempotency-Key is optional. Reusing a key within 24 hours returns the original response; a duplicate that arrives while the original is still being accepted returns 409 request_in_progress. Without the header, repeated requests create separate voices.
Retrain a voice
Send the existingvoice_id with replacement audio. The ID, name, language, and mode are kept. The voice becomes PENDING until training completes, and a failed retraining restores the previously active voice.
2. Poll training status
PollGET /v3/models/audio/voices/{voice_id} with backoff until the status is terminal.
Response
created_at is a Unix timestamp in seconds.
3. Generate speech
Pass theACTIVE voice to HeyGen Voice Speech: POST /v3/models/audio/tts for one completed WAV, or POST /v3/models/audio/tts/stream for audio parts as they are generated.
Manage voices
GET /v3/models/audio/voices lists the workspace’s professional voices, newest first, with limit (1–100, default 10) and cursor token. Pass the returned next_token while has_more is true.
DELETE /v3/models/audio/voices/{voice_id} removes an ACTIVE or FAILED voice and frees its slot. Wait for a PENDING voice to finish training first.
Errors
Synthesis errors, including
voice_expired, are listed on HeyGen Voice Speech. The full catalog is in Error Codes.
