Unlimited Open Source Models

Get Plan
Skip to main content
Video Fusion

HeyGen API Alternative: Talking Video From One Photo

Last updated · By ModelsLab Engineering

HeyGen's API is pay-as-you-go from $5 and prices a photo avatar at $0.05 a second. ModelsLab is not cheaper per second: OmniHuman 1.5 turns one photo and an audio track into a talking video for $0.14 a second of audio. It fits when you want the photo, the voice and the video from one API key, a text prompt that directs the performance, or lip sync on footage you already have at $0.07 a second.

  • OmniHuman 1.5: $0.14 per second
  • lipsync-2: $0.07 per second
  • Voice, image and video on one key

HeyGen vs ModelsLab for Talking Video

A photo avatar on HeyGen's API against OmniHuman 1.5 on ModelsLab, from each provider's own pages.

HeyGen API (Photo Avatar)ModelsLab OmniHuman 1.5
Price$0.05 per second ($3.00 a minute)$0.14 per second of audio ($8.40 a minute)
To startPay as you go from $5Plan from $21/month
InputA HeyGen avatar (photo or digital twin), plus a script or audioAny photo URL, an audio URL and a text prompt in one request
Length per requestNot compared hereUp to 35 seconds of audio (30 s on OmniHuman 1.0)
VoiceBuilt-in voices; video translation billed separatelyText to speech and voice cloning on the same key, $0.001 per second of audio
Existing footageLip sync billed per second of source videolipsync-2 at $0.07 per second, up to 60 seconds of audio
OutputMP4MP4 URL, fetch by id, or webhook

Read on October 15, 2026. HeyGen's figure is its Avatar IV photo avatar rate; its Digital Twin and Avatar III rates differ.

When Each One Is the Better Choice

Choose HeyGen for long presenter videos

At $0.05 a second, a 10-minute training video costs about $30 on HeyGen against $84 on OmniHuman 1.5, rendered in 35-second pieces. D-ID’s monthly plans work out near $1 a minute. If your product is long-form talking-head video, those are the cheaper APIs.

Choose ModelsLab for short clips inside a larger pipeline

OmniHuman 1.5 takes any photo you pass by URL — no avatar to create first — and a prompt that directs gestures, expression and camera, and it renders up to 35 seconds of audio per call. The rest of the pipeline is on the same key: generate the character with an image model, write the line with an LLM, voice it with text to speech, then animate it. For ads, social clips and in-app characters, that is one bill instead of four.

For a selfie-to-avatar image instead of a video, see the AI avatar API; to sync new audio onto video you already have, see the lip sync API.

Make a photo talk with one request

Send one image URL, one audio URL and a prompt. Renders are queued: read the MP4 URL from the fetch reply.

cURL — OmniHuman 1.5

bash
1curl -X POST 'https://modelslab.com/api/v7/video-fusion/image-to-video' \
2 -H 'Content-Type: application/json' \
3 -d '{
4 "key": "YOUR_MODELSLAB_API_KEY",
5 "model_id": "omni-human-1.5",
6 "init_image": ["https://example.com/presenter.png"],
7 "init_audio": "https://example.com/line.mp3",
8 "prompt": "She speaks warmly to the camera, small nods, hands still, fixed framing"
9 }'
10# The reply carries "fetch_result". POST it with your key until "status"
11# is "success"; the MP4 URL is in "output".

Python — wait for the video

python
1import time
2
3import requests
4
5KEY = "YOUR_MODELSLAB_API_KEY"
6
7result = requests.post(
8 "https://modelslab.com/api/v7/video-fusion/image-to-video",
9 json={
10 "key": KEY,
11 "model_id": "omni-human-1.5",
12 "init_image": ["https://example.com/presenter.png"],
13 "init_audio": "https://example.com/line.mp3",
14 "prompt": "She speaks warmly to the camera, small nods, fixed framing",
15 },
16 timeout=60,
17).json()
18fetch_url = result.get("fetch_result")
19
20while result.get("status") == "processing":
21 time.sleep(20)
22 result = requests.post(fetch_url, json={"key": KEY}, timeout=60).json()
23
24print(result["output"][0] if result.get("status") == "success" else result)

Talking Avatar API Prices Compared

HeyGen alternatives with a public price, per minute of finished video.

ProviderAPI accessPublished pricePer minute of video
HeyGen (Photo Avatar, Avatar IV)Pay as you go from $5$0.05 per second$3.00
D-IDMonthly API plansBuild $18 for 16 min, Launch $50 for 45 min, Scale $198 for 200 min$0.99 to $1.13
SynthesiaAPI on Pro ($89/month) and Enterprise onlyMinutes come out of the planNot published per minute
TavusMonthly plansBuilder $59 for 15 min, then $1 a minute$1.00 overage
ModelsLab OmniHuman 1.5Public REST API, plans from $21/month$0.14 per second of audio$8.40
ModelsLab lipsync-2 (existing video)Same key$0.07 per second of audio$4.20

Read on each provider's own page on October 15, 2026, in the unit the provider publishes. HeyGen's developer docs price a Photo Avatar at 0.1 credits a second on Enterprise and state that this equals $0.05 a second on pay-as-you-go. D-ID's per-minute figures divide each plan's price by its included minutes.

Sources

Every competitor price on this page, with the page we read it on.

Get Expert Support in Seconds

We're Here to Help.

Want to know more? You can email us anytime at support@modelslab.com

View Docs

Per second, HeyGen's photo avatar at $0.05 is cheaper than ModelsLab's OmniHuman 1.5 at $0.14, and D-ID's API plans work out at $0.99 to $1.13 a minute (prices read October 15, 2026). ModelsLab fits short clips where you also need the image, the voice and lip sync on one API key.

POST https://modelslab.com/api/v7/video-fusion/image-to-video with model_id omni-human-1.5, init_image (a list with one image URL), init_audio (an audio URL) and a prompt describing the performance. It is billed per second of audio, and the MP4 URL comes back in output after you POST the fetch_result URL.

OmniHuman 1.5 takes up to 35 seconds of audio per request and OmniHuman 1.0 up to 30 seconds. For a longer video, split the script and join the clips.

Yes. POST https://modelslab.com/api/v7/video-fusion/lip-sync with model_id lipsync-2, init_video and init_audio. It costs $0.07 per second of audio and takes up to 60 seconds.

Yes. Text to speech and voice cloning run on the same key at $0.001 per second of audio through POST /api/v6/voice/text_to_audio; pass the returned audio URL as init_audio.