Heygen Video Translate
Playground
Try it on WavespeedAI!HeyGen Video Translate: AI video translation into 70+ languages and 175+ dialects with no voice actors or dubbing. Fast, accurate, easy to use at $0.0375/sec. Ready-to-use REST API, no coldstarts, affordable pricing.
Features
HeyGen Video Translate
HeyGen Video Translate is a powerful AI-powered video translation and dubbing model that automatically translates spoken content in videos into different languages — complete with lip-sync and natural voice cloning. Transform your videos for global audiences without reshooting.
Why It Stands Out
- Full video translation: Automatically translates speech and generates new audio in the target language.
- Lip-sync technology: AI adjusts lip movements to match the translated audio for natural-looking results.
- Voice cloning: Preserves the original speaker’s voice characteristics in the new language.
- Multi-language support: Translate into English, Spanish, French, Hindi, Italian, German, Polish, Portuguese, Chinese, Japanese, Dutch, and more.
- Simple workflow: Just upload a video and select your target language — no manual dubbing required.
Parameters
| Parameter | Required | Description |
|---|---|---|
| video | Yes | Upload or link to the source video file. |
| output_language | Yes | Target language for translation (English, Spanish, French, etc.). |
Supported Languages
- English
- Spanish
- French
- Hindi
- Italian
- German
- Polish
- Portuguese
- Chinese
- Japanese
- Dutch
- And more…
How to Use
- Upload your video — drag and drop a file or paste a public URL.
- Select output language — choose the target language for translation.
- Click Run and wait for processing to complete.
- Preview and download the translated video.
Best Use Cases
- Global Content Distribution — Localize marketing videos, ads, and promotional content for international markets.
- E-learning & Training — Translate educational videos and courses for multilingual audiences.
- Social Media Expansion — Reach new audiences by translating viral content into multiple languages.
- Corporate Communications — Distribute internal videos and announcements across global teams.
- Entertainment & Media — Dub interviews, documentaries, and video content for foreign markets.
Pricing
| Metric | Price |
|---|---|
| Per second of video | $0.0375 / s |
Total cost = duration of video (in seconds) × $0.0375
Examples
- 30s video → 30 × $0.0375 = $1.125
- 60s video → 60 × $0.0375 = $2.25
- 5 min (300s) video → 300 × $0.0375 = $11.25
- 10 min (600s) video → 600 × $0.0375 = $22.50
Pro Tips for Best Quality
- Use videos with clear speech and minimal background noise for optimal translation accuracy.
- Single-speaker videos typically produce better lip-sync results than multi-speaker content.
- Ensure the original audio is high quality — translation quality depends on accurate speech recognition.
- For best lip-sync, use videos where the speaker’s face is clearly visible and well-lit.
Notes
- Ensure uploaded video URLs are publicly accessible.
- Processing time varies based on video duration and current queue load.
- Please ensure your content complies with usage guidelines.
Authentication
For authentication details, please refer to the Authentication Guide.
API Endpoints
Submit Task & Query Result
# Submit the task
curl --location --request POST "https://api.wavespeed.ai/api/v3/heygen/video-translate" \
--header "Content-Type: application/json" \
--header "Authorization: Bearer ${WAVESPEED_API_KEY}" \
--data-raw '{
"output_language": "English"
}'
# Get the result
curl --location --request GET "https://api.wavespeed.ai/api/v3/predictions/${requestId}/result" \
--header "Authorization: Bearer ${WAVESPEED_API_KEY}"
Parameters
Task Submission Parameters
Request Parameters
| Parameter | Type | Required | Default | Range | Description |
|---|---|---|---|---|---|
| video | string | Yes | - | The video to translate. | |
| output_language | string | No | English | 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 | The target language in which the video will be translated |
Response Parameters
| Parameter | Type | Description |
|---|---|---|
| code | integer | HTTP status code (e.g., 200 for success) |
| message | string | Status message (e.g., “success”) |
| data.id | string | Unique identifier for the prediction, Task Id |
| data.model | string | Model ID used for the prediction |
| data.outputs | array | Array of URLs to the generated content (empty when status is not completed) |
| data.urls | object | Object containing related API endpoints |
| data.urls.get | string | URL to retrieve the prediction result |
| data.has_nsfw_contents | array | Array of boolean values indicating NSFW detection for each output |
| data.status | string | Status of the task: created, processing, completed, or failed |
| data.created_at | string | ISO timestamp of when the request was created (e.g., “2023-04-01T12:34:56.789Z”) |
| data.error | string | Error message (empty if no error occurred) |
| data.timings | object | Object containing timing details |
| data.timings.inference | integer | Inference time in milliseconds |
Result Request Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| id | string | Yes | - | Task ID |
Result Response Parameters
| Parameter | Type | Description |
|---|---|---|
| code | integer | HTTP status code (e.g., 200 for success) |
| message | string | Status message (e.g., “success”) |
| data | object | The prediction data object containing all details |
| data.id | string | Unique identifier for the prediction, the ID of the prediction to get |
| data.model | string | Model ID used for the prediction |
| data.outputs | string | Array of URLs to the generated content (empty when status is not completed). |
| data.urls | object | Object containing related API endpoints |
| data.urls.get | string | URL to retrieve the prediction result |
| data.status | string | Status of the task: created, processing, completed, or failed |
| data.created_at | string | ISO timestamp of when the request was created (e.g., “2023-04-01T12:34:56.789Z”) |
| data.error | string | Error message (empty if no error occurred) |
| data.timings | object | Object containing timing details |
| data.timings.inference | integer | Inference time in milliseconds |