Heygen Video Translate

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 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

ParameterRequiredDescription
videoYesUpload or link to the source video file.
output_languageYesTarget 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

  1. Upload your video — drag and drop a file or paste a public URL.
  2. Select output language — choose the target language for translation.
  3. Click Run and wait for processing to complete.
  4. 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

MetricPrice
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

set -euo pipefail

export WAVESPEED_API_KEY="your-api-key"

REQUEST_BODY=$(cat <<'JSON'
{
  "video": "https://interactive-examples.mdn.mozilla.net/media/cc0-videos/flower.mp4",
  "output_language": "English"
}
JSON
)

# 1. Submit the prediction.
SUBMIT_RESPONSE=$(curl --silent --show-error --fail-with-body \
  -X POST "https://api.wavespeed.ai/api/v3/heygen/video-translate" \
  -H "Authorization: Bearer ${WAVESPEED_API_KEY}" \
  -H "Content-Type: application/json" \
  -d "${REQUEST_BODY}")

TASK=$(printf '%s' "${SUBMIT_RESPONSE}" | jq 'if type == "object" and has("data") then .data else . end')
PREDICTION_ID=$(printf '%s' "${TASK}" | jq -r '.id // empty')
if [ -z "${PREDICTION_ID}" ]; then
  printf 'Submission response did not contain a prediction id
' >&2
  exit 1
fi
RESULT_URL=$(printf '%s' "${TASK}" | jq -r '.urls.get // empty')
if [ -z "${RESULT_URL}" ]; then RESULT_URL="https://api.wavespeed.ai/api/v3/predictions/${PREDICTION_ID}/result"; fi

# 2. Poll until the prediction finishes.
while true; do
  RESPONSE=$(curl --silent --show-error --fail-with-body \
    "${RESULT_URL}" \
    -H "Authorization: Bearer ${WAVESPEED_API_KEY}")
  RESULT=$(printf '%s' "${RESPONSE}" | jq 'if type == "object" and has("data") then .data else . end')
  STATUS=$(printf '%s' "${RESULT}" | jq -r '.status // empty')

  case "${STATUS}" in
    completed) printf '%s\n' "${RESULT}" | jq '.outputs'; break ;;
    failed|cancelled|timeout) printf '%s\n' "${RESULT}" | jq . >&2; exit 1 ;;
    created|processing) sleep 2 ;;
    *) printf 'Unexpected status: %s
' "${STATUS}" >&2; exit 1 ;;
  esac
done

Parameters

Task Submission Parameters

Request Parameters

ParameterTypeRequiredDefaultRangeDescription
videostringYes-The video to translate.
output_languagestringNoEnglishEnglish, 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 AccentThe target language in which the video will be translated

Response Parameters

ParameterTypeDescription
codeintegerHTTP status code (e.g., 200 for success)
messagestringStatus message (e.g., “success”)
data.idstringUnique identifier for the prediction, Task Id
data.modelstringModel ID used for the prediction
data.outputsarrayOutput values, usually URL strings; some models return text strings or structured result objects (empty when status is not completed)
data.urlsobjectObject containing related API endpoints
data.urls.getstringURL to retrieve the prediction result
data.statusstringStatus of the task: created, processing, completed, or failed
data.created_atstringISO timestamp of when the request was created (e.g., “2023-04-01T12:34:56.789Z”)
data.errorstringError message (empty if no error occurred)
data.timingsobjectObject containing timing details
data.timings.inferenceintegerInference time in milliseconds

Result Request Parameters

ParameterTypeRequiredDefaultDescription
idstringYes-Task ID

Result Response Parameters

ParameterTypeDescription
codeintegerHTTP status code (e.g., 200 for success)
messagestringStatus message (e.g., “success”)
dataobjectThe prediction data object containing all details
data.idstringUnique identifier for the prediction
data.modelstringModel ID used for the prediction
data.outputsarray<string | object>Array of generated outputs (empty when status is not completed). Items are usually URL strings, but may be text strings or structured result objects, depending on the model.
data.urlsobjectObject containing related API endpoints
data.urls.getstringURL to poll for the prediction result
data.statusstringStatus: created, processing, completed, or failed
data.created_atstringISO timestamp of when the request was created
data.errorstringError message (empty if no error occurred)
data.timingsobjectObject containing timing details
data.timings.inferenceintegerInference time in milliseconds
© 2026 WaveSpeedAI. All rights reserved.