Professional Voice Cloning trains a dedicated HeyGen Voice adapter from one or more recordings of the same speaker, producing the highest-fidelity clone HeyGen offers. To clone a speaker from a single short recording in minutes instead, see HeyGen Instant Clone.
The workflow has three steps:
- Create a voice or retrain an existing voice with new recordings.
- Poll the voice until its status is
ACTIVEorFAILED. - Generate completed or streaming speech from an
ACTIVEvoice.
Authentication
Use your HeyGen API key in theX-Api-Key header for every request:
Get private-preview access
- Create an API key in the workspace that should own the voice.
- Store the key locally, then retrieve its associated HeyGen username:
- Send that username to the Professional Voice Cloning preview team. Preview access is enabled for the username, not for an API key or workspace ID alone.
403 forbidden.
Prepare the recordings
Provide between 1 and 10 recordings of the same speaker. The combined duration must be at least 20 minutes. The admission check measures media duration, including silence, so use clean recordings with as little silence, background noise, and overlapping speech as possible. For local files, upload each recording with the Assets API, then pass the returnedasset_id values to the training endpoint. This keeps the training request small and allows multiple recordings to be submitted together.
1. Create an audio voice
POST /v3/models/audio/voices creates or retrains a model-backed audio voice and returns 202 Accepted while training runs. Currently, professional is the only supported creation mode. The instant mode is reserved for future support and is rejected today.
Response
voice_id. Use the status endpoint to read the voice resource and follow training.
Request fields
Each
audio item supports one of these forms:
Idempotency-Key is optional. Reusing a key within 24 hours returns the original response; only reuse a key for the same logical request. If a duplicate arrives while the original request is still being accepted, the API returns 409 request_in_progress. Without the header, repeated requests create separate voices.
The API validates and stages every recording before creating the voice. Invalid or undecodable audio, a non-audio input, an inaccessible source, or less than 20 minutes in total returns 400 invalid_parameter without creating a voice_id.
Retrain an existing voice
Retraining requires only the existingvoice_id and replacement audio. The API retains the voice’s ID, name, language, and mode.
ACTIVE when retraining begins. It becomes PENDING and cannot generate speech until training completes. A failed retraining restores the previously active voice and artifacts. Retraining does not require an additional voice slot.
Each purchased professional-voice slot provides five pooled training attempts per monthly billing period, including initial training. Failed attempts do not consume the allowance.
2. Poll training status
Use the returnedvoice_id with GET /v3/models/audio/voices/{voice_id}. Poll with backoff until the status becomes terminal.
Active response
created_at is a Unix timestamp in seconds. When training fails, failure_reason is included:
Failed response
Possible
failure_reason values are INVALID_AUDIO, INSUFFICIENT_AUDIO, PREPROCESSING_FAILED, TRAINING_FAILED, ARTIFACT_VALIDATION_FAILED, and INTERNAL_ERROR.
List audio voices
GET /v3/models/audio/voices returns the caller’s model-backed audio voices, newest first.
Response
next_token as the next request’s token when has_more is true. limit defaults to 10 and accepts values from 1 through 100.
3. Generate speech
Use anACTIVE professional voice with HeyGen Voice Speech. Choose the completed endpoint when you want one audio URL, or the streaming endpoint when you want audio parts as they are generated.
Response
Delete a professional voice
DELETE /v3/models/audio/voices/{voice_id} deletes an ACTIVE or FAILED voice owned by the caller’s workspace. A PENDING voice cannot be deleted while training is running.
Response

