Create Video Translation
Translates a video into one or more target languages with voice cloning and lip-sync. Returns one video_translation_id per language. Use mode: ‘speed’ (default) for fast turnaround or ‘precision’ for higher lip-sync quality.
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
Request body for POST /v3/video-translations.
Asset input via publicly accessible HTTPS URL.
- AssetUrl
- AssetId
Target language names (e.g. 'Chinese (Cantonese, Traditional)', 'Spanish (Spain)', 'English'). Use GET /v3/video-translations/languages for valid values. Use one for single translation, multiple for batch.
1Title for the translation job
Asset input via publicly accessible HTTPS URL.
- AssetUrl
- AssetId
Source language code (auto-detected if omitted)
Only translate audio, keep original video
Number of speakers (improves speaker separation)
Translation quality mode: 'speed' (faster) or 'precision' (higher quality, uses avatar inference)
speed, precision Webhook URL for completion notifications
ID included in webhook payload
Deprecated and ignored: captions are always generated; whether to display them is a download-side choice.
Preserve the source video's encoding specs (resolution, bitrate).
Allow dynamic duration adjustment
Remove background music
Enhance speech quality
Add watermark to output
Start time in seconds for partial translation
End time in seconds for partial translation
Brand glossary ID for custom term translations. Legacy field name for brand_glossary_id — both are accepted and resolve to the same workspace record. Discover IDs via GET /v3/brand-glossaries.
Brand glossary ID for custom term translations (e.g. translate 'Reformer' as the Pilates equipment, not 'political activist'). Alias for the legacy brand_voice_id field. Discover IDs via GET /v3/brand-glossaries.
Use a preset stock voice for the translation instead of recreating the original speaker's voice. By default, Video Translation clones the original speaker so the result sounds like them; with this enabled, the translation is spoken by a natural preset voice optimized for clear pronunciation and accent in the target language (the result will not sound like the original speaker). Enterprise feature, available for selected accounts and languages by request — contact your HeyGen account team.
Asset input via publicly accessible HTTPS URL.
- AssetUrl
- AssetId
Which video the subtitle applies to: 'input' (source) or 'output' (translated).
input, output Frame rate mode for the output video. 'vfr' = variable frame rate, 'cfr' = constant frame rate, 'passthrough' = match the source. Only takes effect when a custom 'audio' track is provided.
vfr, cfr, passthrough Destination folder ID in the caller's workspace, for example one returned by POST /v3/folders. Omit, pass null, or pass an empty string to place the result at the workspace root. The id must name a folder that is not in the trash and that the caller can write to. Assets library folders are accepted, but the HeyGen app files only assets in them, so a result placed there may not appear in the Assets library view. An unknown id, a folder in another workspace, a project of another kind such as a brand kit, or a trashed folder is rejected with 404 before anything is created.
Response
Successful response
Response for POST /v3/video-translations.

