Create or Retrain an Audio Voice
Creates a model-backed audio voice from one or more recordings, or retrains an existing professional voice when voice_id is supplied. Retraining requires only voice_id and source audio and retains the existing voice’s ID, name, language, and mode. The voice is PENDING and unavailable for inference while either operation runs. Poll GET /v3/models/audio/voices/{voice_id} until its status becomes ACTIVE or FAILED. Idempotency-Key is optional; omitting it means repeated creation requests create separate voices. New voices require an unoccupied professional-voice slot. Each purchased slot provides five pooled trainings per monthly billing period, including initial training; failed trainings do not consume the allowance.
Authorizations
HeyGen API key. Obtain from your HeyGen dashboard.
Headers
Optional client-supplied key for safely retrying mutations. Subsequent calls within 24 hours that share this key replay the original response — even if the request body differs slightly (a warning is logged). A retry that arrives while the original is still in flight gets a 409 request_in_progress. Keys must be 1–255 characters from [A-Za-z0-9_:.-]; a UUID is a safe default. Scope is per-endpoint and per-resource: the same key on a different route or path parameter is independent.
1 - 255^[A-Za-z0-9_\-:.]{1,255}$Body
Create or retrain one model-backed audio voice.
Source recordings of the same speaker. Each item may be a public HTTPS URL, a HeyGen asset ID, or base64-encoded audio. The recordings must contain at least 20 minutes of audio and no more than 1.5 GB (1,500,000,000 bytes) in total.
1 - 10 elementsAsset input via publicly accessible HTTPS URL.
- AssetUrl
- AssetId
- AssetBase64
Voice operation mode for a new voice. Ignored when voice_id is supplied; the existing mode is retained. Currently only professional is supported.
professional Existing professional voice to retrain. Omit to create a new voice.
1 - 64^\S+$Display name for a new voice. Ignored when voice_id is supplied; the existing name is retained.
1 - 256Primary language code, such as en, for a new voice. Ignored when voice_id is supplied; the existing language is retained.
1 - 32Response
Accepted — submission acknowledged; poll for completion.
Identifier returned after voice creation or retraining is accepted.

