HeyGen models API
Call 1 HeyGen model through one PopNow API key: HeyGen Video Translate. Prices start at $0.048 per second.
- models
- 1
- endpoints
- 1
- starting price, per second
- $0.048
HeyGen models
Choosing HeyGen for lip-synced video translation
One endpoint for dubbing with redrawn lips
HeyGen supplies one entry in the catalog, HeyGen Video Translate. It takes a spoken video of up to 120 seconds, translates the speech, speaks it in a voice close to the original speaker and redraws the mouth so the picture follows the new language. The request is small: a video_url, a target_language and a generation_mode. There is no prompt to write. target_language takes 178 values, written the way HeyGen spells them, which covers base languages such as Spanish and regional targets such as Spanish (Mexico), French (Canada) and Chinese (Cantonese, Traditional). Leaving it out translates into English.
Choose a mode and a route by what the viewer sees
Use precision, the default, for finished work where the face is on screen for most of the clip. Use speed for drafts and internal reviews, because it costs half as much per second. Both modes are billed on the length of the source, rounded up to whole seconds, so a result that runs a little longer than the source costs nothing extra. Compare this endpoint with the PopNow Video Translator when the speaker is not on camera or the clip is longer than two minutes. That route accepts up to ten minutes, keeps the picture as filmed and returns subtitles, so it suits screen recordings, lectures and voiceover-led videos where lip movement does not matter.
Build the job so a reviewer can check it
Call /api/v1/jobs/createTask from your backend with a sk-popnow- key and the full public call name from the task reference. Clips over 120 seconds are rejected before any charge, so measure the file first and split long recordings at natural pauses. Only send footage of yourself or of people who have agreed to appear speaking a translation in a voice like their own, and keep a record of that agreement with the job. Store the taskId with the source URL, the target language and the mode. Fetch /api/v1/jobs/recordInfo or verify a completion webhook, then have someone who speaks the target language watch the whole clip, checking names, numbers and the timing of sentence ends.
HeyGen API prices
See pricing| Model | Best for | List price | PopNow price | You save |
|---|---|---|---|---|
HeyGen Video Translateheygen/video-translate/video-translate | Video Translator | — | $0.048per second |
List prices are each maker's own published price for the same output, checked on Nov 3, 2026. Prices shown are starting prices; open a model for every tier.
Call a HeyGen model
The same request works for every model: change the model name and its input.
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: $(uuidgen)" \
-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"
}
}'import os, uuid, requests
res = requests.post(
"https://api.popnow.ai/api/v1/jobs/createTask",
headers={
"Authorization": f"Bearer {os.environ['POPNOW_API_KEY']}",
"Idempotency-Key": str(uuid.uuid4()),
},
json={
"model": "heygen/video-translate/video-translate",
"input": {
"video_url": "https://media.popnow.ai/effects/flower-bloom-1abd6efb.mp4",
"target_language": "English",
"generation_mode": "precision"
}
},
timeout=30,
)
body = res.json()
if body["code"] != 200:
raise RuntimeError(f'{body["code"]} {body["msg"]}')
print(body["data"]["taskId"]) # poll this id, or wait for your callBackUrlconst res = await fetch("https://api.popnow.ai/api/v1/jobs/createTask", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.POPNOW_API_KEY}`,
"Content-Type": "application/json",
"Idempotency-Key": crypto.randomUUID(),
},
body: JSON.stringify({
"model": "heygen/video-translate/video-translate",
"input": {
"video_url": "https://media.popnow.ai/effects/flower-bloom-1abd6efb.mp4",
"target_language": "English",
"generation_mode": "precision"
}
}),
});
const { code, msg, data } = await res.json();
if (code !== 200) throw new Error(`${code} ${msg}`);
console.log(data.taskId); // poll this id, or wait for your callBackUrlFrequently asked questions
How long can a source clip be?
Each request accepts a spoken MP4 or WebM of up to 120 seconds, and longer clips are rejected before any charge. Split longer recordings at natural pauses, submit them as separate jobs and join the results in your editor, so a problem in one section only requires that section to be redone.
What is the difference between precision and speed?
Precision is the default and aims for better lip sync, so it suits finished work with the face on screen. Speed aims for a faster result at half the per-second rate, which suits drafts and internal reviews. Finishing times are not guaranteed for either mode, so poll the task.
How do I write the target language?
Pass one of the 178 values exactly as HeyGen spells it, including regional forms such as Spanish (Mexico) or French (Canada). The list is in the input schema for the endpoint. A value that is not on the list is rejected when the request is validated, before any charge.
Why can the result be longer than the source?
Some languages need more syllables to say the same thing, so the translated clip can run a little longer than the original. Billing follows the source length rounded up to whole seconds, so a longer result does not cost more. Plan for this if the clip has to fit a fixed slot.
When should I use the PopNow Video Translator instead?
Use it when the speaker is off camera, when the clip runs longer than two minutes, or when you want subtitles and a glossary of fixed translations. It costs less per minute and accepts up to ten minutes, but it keeps the picture as filmed and does not redraw the lips.
Other model makers
All model makers- Alibaba44 models−33%Wan 3.0 · Qwen Image 2.1 Pro · Qwen Image 2.1 Turbo · Qwen-Audio 3.1 TTS PlusFrom $0.00285 per 1,000 characters
- PopNow26 modelsCelebrity Look-Alike · Background Remover · Image Upscaler · Object EraserFrom $0.0012 per second
- Black Forest Labs21 models−33%FLUX.2 Max · FLUX 3 Klein Base LoRA · FLUX 3 Klein Base · FLUX 3From $0.006 per image
- ByteDance20 models−30%Seedance 2.5 · Seedream 5.0 Pro · Seed Audio 1.0 · Seedream 5.5From $0.0195 per image
- MiniMax15 models−55%MiniMax H3 · MiniMax Speech 2.8 HD · MiniMax Music 3.0 · MiniMax H3 HighSpeedFrom $0.042 per image
- OpenAI15 models−80%GPT Image 2.5 Sunburst · GPT Image 2.6 Sunburst · GPT Image 2.6 Flare · GPT Image 2.5 FlareFrom $0.00002 per second
Start building in minutes
One key for every model, a USD balance you top up when you need to, and an exact price before every run.