About HeyGen Video Translate
HeyGen Video Translate dubs a spoken video into another language and redraws the lips to match. It covers 178 languages and dialects, takes clips up to 120 seconds, and keeps a voice close to the original speaker.
Call it with the model name heygen/video-translate/video-translate on POST /jobs/createTask, from $0.048.
Introduction
HeyGen Video Translate changes the language of speech in a short video and syncs the lips to the translation. HeyGen says it supports 175+ languages and dialects with realistic AI voices, and that voice cloning carries the speaker’s tone across languages.
Get consent before sending footage: use a recording of yourself or people who agreed to this use. Translation makes them appear to say words in another language in a voice like their own. The first run on the model page requires acceptance of a consent notice.
Provide a spoken MP4 or WebM no longer than 120 seconds. Set target_language and, if needed, generation_mode; there is no prompt to write. English and Precision are the defaults.
Key features
- Lip movement changes with the speech. In our tests, source and translated frames at matching moments had different mouth shapes, while faces, clothing and the scene stayed the same.
- Choose a regional target. The 178 options include Spanish (Mexico), French (Canada) and Chinese (Cantonese, Traditional), alongside base languages.
- Two modes set the tradeoff. Precision aims for higher-quality lip sync, while Speed aims for a faster result and uses half the per-second rate.
- English accent choices are available. Targets include “English - Your Accent” and “English - American Accent.”
- Frame size is retained in our tests. We received MP4 with AAC audio; a 1280x720 input returned at the same size.
Request parameters
| Parameter | Required | Description |
|---|---|---|
generation_mode | No | Choose a mode from the available options. It may affect cost, speed and quality. precision · speed · Default: precision |
target_language | No | The language to dub into. It must differ from the language in the clip. English · Spanish · French · Hindi · Italian · German · Polish · Portuguese · Chinese · Japanese · Dutch · Turkish · Korean · Danish · Arabic · Romanian · Mandarin · Filipino · Swedish · Indonesian · Ukrainian · Greek · Czech · Bulgarian · Malay · Slovak · Croatian · Tamil · Finnish · Russian · Afrikaans (South Africa) · Albanian (Albania) · Amharic (Ethiopia) · Arabic (Algeria) · Arabic (Bahrain) · Arabic (Egypt) · Arabic (Iraq) · Arabic (Jordan) · Arabic (Kuwait) · Arabic (Lebanon) · Arabic (Libya) · Arabic (Morocco) · Arabic (Oman) · Arabic (Qatar) · Arabic (Saudi Arabia) · Arabic (Syria) · Arabic (Tunisia) · Arabic (United Arab Emirates) · Arabic (Yemen) · Armenian (Armenia) · Azerbaijani (Latin, Azerbaijan) · Bangla (Bangladesh) · Basque · Bengali (India) · Bosnian (Bosnia and Herzegovina) · Bulgarian (Bulgaria) · Burmese (Myanmar) · Catalan · Chinese (Cantonese, Traditional) · Chinese (Jilu Mandarin, Simplified) · Chinese (Mandarin, Simplified) · Chinese (Northeastern Mandarin, Simplified) · Chinese (Southwestern Mandarin, Simplified) · Chinese (Taiwanese Mandarin, Traditional) · Chinese (Wu, Simplified) · Chinese (Zhongyuan Mandarin Henan, Simplified) · Chinese (Zhongyuan Mandarin Shaanxi, Simplified) · Croatian (Croatia) · Czech (Czechia) · Danish (Denmark) · Dutch (Belgium) · Dutch (Netherlands) · English (Australia) · English (Canada) · English (Hong Kong SAR) · English (India) · English (Ireland) · English (Kenya) · English (New Zealand) · English (Nigeria) · English (Philippines) · English (Singapore) · English (South Africa) · English (Tanzania) · English (UK) · English (United States) · Estonian (Estonia) · Filipino (Philippines) · Finnish (Finland) · French (Belgium) · French (Canada) · French (France) · French (Switzerland) · Galician · Georgian (Georgia) · German (Austria) · German (Germany) · German (Switzerland) · Greek (Greece) · Gujarati (India) · Hebrew (Israel) · Hindi (India) · Hungarian (Hungary) · Icelandic (Iceland) · Indonesian (Indonesia) · Irish (Ireland) · Italian (Italy) · Japanese (Japan) · Javanese (Latin, Indonesia) · Kannada (India) · Kazakh (Kazakhstan) · Khmer (Cambodia) · Korean (Korea) · Lao (Laos) · Latvian (Latvia) · Lithuanian (Lithuania) · Macedonian (North Macedonia) · Malay (Malaysia) · Malayalam (India) · Maltese (Malta) · Marathi (India) · Mongolian (Mongolia) · Nepali (Nepal) · Norwegian Bokmål (Norway) · Pashto (Afghanistan) · Persian (Iran) · Polish (Poland) · Portuguese (Brazil) · Portuguese (Portugal) · Romanian (Romania) · Russian (Russia) · Serbian (Latin, Serbia) · Sinhala (Sri Lanka) · Slovak (Slovakia) · Slovenian (Slovenia) · Somali (Somalia) · Spanish (Argentina) · Spanish (Bolivia) · Spanish (Chile) · Spanish (Colombia) · Spanish (Costa Rica) · Spanish (Cuba) · Spanish (Dominican Republic) · Spanish (Ecuador) · Spanish (El Salvador) · Spanish (Equatorial Guinea) · Spanish (Guatemala) · Spanish (Honduras) · Spanish (Mexico) · Spanish (Nicaragua) · Spanish (Panama) · Spanish (Paraguay) · Spanish (Peru) · Spanish (Puerto Rico) · Spanish (Spain) · Spanish (United States) · Spanish (Uruguay) · Spanish (Venezuela) · Sundanese (Indonesia) · Swahili (Kenya) · Swahili (Tanzania) · Swedish (Sweden) · Tamil (India) · Tamil (Malaysia) · Tamil (Singapore) · Tamil (Sri Lanka) · Telugu (India) · Thai (Thailand) · Turkish (Türkiye) · Ukrainian (Ukraine) · Urdu (India) · Urdu (Pakistan) · Uzbek (Latin, Uzbekistan) · Vietnamese (Vietnam) · Welsh (United Kingdom) · Zulu (South Africa) · English - Your Accent · English - American Accent · Default: English |
video_url | Yes | The clip to work on. |
Pricing
Prices are in USD. The API uses a separate USD balance. Website credits cannot be used or transferred to it, and API funds cannot be transferred to website credits. When a task is accepted, we reserve the maximum quoted amount from your API balance. On completion, we charge for actual usage, never more than the hold, and release the remainder. If the task fails, the hold is released.
| Option | USD per second |
|---|---|
| generation_mode speed | $0.048 |
| generation_mode precision | $0.096 |
Send the same request body to POST /jobs/quote to see the estimated and maximum USD charge before running. A quote does not run the task or charge your balance.
Use cases
- Course welcome in Spanish: translate your own recorded introduction so Spanish-speaking students can hear the welcome with matching lip movement.
- French product demonstration: get your presenter’s consent, then translate a short walkthrough for French-speaking customers.
- Japanese creator announcement: adapt your spoken update for Japanese-speaking viewers using the same source recording.
Prompt guide & pro tips
- Check permission first. Obtain agreement from everyone who will appear to speak translated lines; do not use a celebrity, public figure or acquaintance without permission.
- Select the target deliberately. Check whether a base language or regional dialect suits your viewers, rather than leaving the English default by accident.
- Choose Precision for its lip-sync quality aim. It is the default and carries twice the Speed rate, so include that difference in your decision.
- Choose Speed when its rate and timing aim suit the task. It aims to finish sooner at half the per-second rate; actual completion time can vary.
- Allow space for longer translated speech. In our tests, an 8.00-second recording returned as 8.68 seconds in Spanish; check the finished duration before editing it into a sequence.
API quick start
Call the HeyGen Video Translate API in three steps
- Create an API key. Sign in to PopNow and create a key in the API console. Keys start with sk-popnow-. API calls use your separate USD balance.
- Send the request. POST /jobs/createTask with model heygen/video-translate/video-translate and an input object that follows the parameter table. The response returns a task ID straight away.
- Get the result. Poll GET /jobs/recordInfo with the task ID, or pass a callBackUrl and we post the result to it. Download the output links when the task succeeds.
# 1. Create the task. Keep the Idempotency-Key if you retry after a network error.
export IDEMPOTENCY_KEY="$(uuidgen)"
curl -X POST https://api.popnow.ai/api/v1/jobs/createTask \
-H "Authorization: Bearer $POPNOW_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $IDEMPOTENCY_KEY" \
-d '{
"model": "heygen/video-translate/video-translate",
"input": {
"video_url": "https://media.popnow.ai/effects/flower-bloom-1abd6efb.mp4",
"target_language": "English",
"generation_mode": "precision"
}
}'
# 2. Copy data.taskId from the response, then poll until state is succeeded, failed, canceled or expired.
TASK_ID="TASK_ID_FROM_RESPONSE"
curl "https://api.popnow.ai/api/v1/jobs/recordInfo?taskId=$TASK_ID" \
-H "Authorization: Bearer $POPNOW_API_KEY"Replace the prompt and any links with your own. The API tab has the response, polling and callback reference.
HeyGen Video Translate API questions
How much does the HeyGen Video Translate API cost?
HeyGen Video Translate costs $0.048 per second. Prices by option: speed $0.048 per second, precision $0.096 per second. The API uses a separate USD balance. When a task is accepted, we reserve the maximum quoted amount from your API balance. On completion, we charge for actual usage, never more than the hold, and release the remainder. If the task fails, the hold is released.
What is the model name for HeyGen Video Translate in the API?
Put heygen/video-translate/video-translate for Video Translator in the model field of POST /jobs/createTask.
What are the limits of the HeyGen Video Translate API?
Largest upload: 90 MB; Longest input clip: 120 s. Requests outside these limits are rejected before anything is charged.
Can I try HeyGen Video Translate without writing code?
Run HeyGen Video Translate in the Playground with your API USD balance, without an API key. Each run appears in your developer history with its matching code.