Unlimited Open Source Models

Get Plan
Skip to main content
Imagen

Lip Sync API — Sync Any Audio to Video

Send a video URL and an audio URL, get back a clip whose mouth movement matches the new speech. Any language, any voice — including one you cloned on the same key. Video plans from $21/month.

What the Lip Sync API Does

New Audio, Matching Mouth

The lip sync API takes a video of a speaker and a separate audio track and returns the video with the speaker’s mouth movement regenerated to match the audio. The rest of the frame is untouched. It is the endpoint behind dubbing into another language, replacing a line without a reshoot, and turning a generated avatar into a talking head.

It does not care where the audio came from. Record it, generate it with the text-to-speech endpoint, or generate it in a voice you cloned from a 4-second sample — all three run on the same ModelsLab key, so a full dubbing pipeline is two requests.

Speech to Video

Teams searching for a “speech to video API” usually want exactly this pairing: text in, speech generated, speech synced onto a presenter. Generate the speech with POST /api/v6/voice/text_to_audio, pass the returned audio URL as `init_audio` to the lip sync endpoint together with the presenter clip, and the result is a video of the presenter delivering the new script.

  • Works in any language — the model follows the audio, not a phoneme list
  • Keeps the original footage; only the mouth region is regenerated
  • Accepts generated or cloned speech from the voice API
  • Async id with fetch endpoint and webhook delivery
  • Billed per call; a video plan from $21/month unlocks the endpoint

Lip Sync API quick start

One POST to /api/v7/video-fusion/lip-sync with init_video, init_audio and model_id.

Python — sync a new audio track onto a clip

Python
1import requests
2
3response = requests.post(
4 "https://modelslab.com/api/v7/video-fusion/lip-sync",
5 headers={
6 "key": "YOUR_MODELSLAB_API_KEY",
7 "Content-Type": "application/json",
8 },
9 json={
10 "model_id": "lipsync-2",
11 "init_video": "https://example.com/presenter.mp4",
12 "init_audio": "https://example.com/spanish-voiceover.mp3",
13 },
14)
15
16# Returns an id for the render — poll fetch/{id} or use a webhook
17print(response.json())

JavaScript — text to speech, then lip sync

JavaScript
1const headers = {
2 'Content-Type': 'application/json',
3 key: 'YOUR_MODELSLAB_API_KEY',
4};
5
6// 1. Generate the speech (v6 voice endpoint takes the key in the body)
7const tts = await fetch('https://modelslab.com/api/v6/voice/text_to_audio', {
8 method: 'POST',
9 headers: { 'Content-Type': 'application/json' },
10 body: JSON.stringify({
11 key: 'YOUR_MODELSLAB_API_KEY',
12 prompt: 'Bienvenidos a la demostración de hoy.',
13 voice_id: 'your-voice-id',
14 language: 'spanish',
15 }),
16});
17const audioUrl = (await tts.json()).output[0];
18
19// 2. Sync it onto the presenter clip
20const sync = await fetch(
21 'https://modelslab.com/api/v7/video-fusion/lip-sync',
22 {
23 method: 'POST',
24 headers,
25 body: JSON.stringify({
26 model_id: 'lipsync-2',
27 init_video: 'https://example.com/presenter.mp4',
28 init_audio: audioUrl,
29 }),
30 },
31);
32
33console.log(await sync.json());

cURL — poll for the finished video

bash
1curl -X POST 'https://modelslab.com/api/v7/video-fusion/fetch/REQUEST_ID' \
2 -H 'key: YOUR_MODELSLAB_API_KEY' \
3 -H 'Content-Type: application/json'
4
5# {"status":"success","output":["https://cdn.modelslab.com/.../synced.mp4"]}

Request and Response

The full contract of the lip sync endpoint.

FieldTypeMeaning
init_videoURL (required)Source clip of the speaker
init_audioURL (required)Speech track to sync to
model_idstring (required)lipsync-2
webhookURL (optional)Where to POST the finished video
track_idstring (optional)Your own reference id, echoed back
outputarray (response)Hosted MP4 URL when complete

Long renders return an id; POST /api/v7/video-fusion/fetch/{id} until output is populated, or supply a webhook.

Dub a Clip in 3 Steps

Speech first, then sync.

STEP 01
STEP 01

Step 1: Get Your API Key

Create a ModelsLab account, subscribe to a plan from $21/month, and copy your key. lipsync-2 is paid from the usage included in your plan first, then from wallet balance.

STEP 02
STEP 02

Step 2: Prepare the Audio

Use a recording, or generate the speech with /api/v6/voice/text_to_audio — optionally in a cloned voice — and keep the returned URL.

STEP 03
STEP 03

Step 3: Sync and Fetch

POST init_video, init_audio and model_id lipsync-2 to /api/v7/video-fusion/lip-sync. Poll fetch/{id} or receive the finished MP4 on your webhook.

Pricing

lipsync-2 is a third-party model billed per call, first from the usage included in your plan and then from wallet balance, listed at $0.07 on its model page in September 2026 and scaled by the length of the clip, so a longer video costs a multiple of that. A plan from $21/month is required to call the endpoint, and the same plan covers the speech you generate for it.

Input Tips

A front-facing speaker with the mouth clearly visible syncs best. Keep the audio clean — the model follows what it hears, so background music in the track shows up as noise in the mouth movement. Match the audio length to the clip; the video is not extended to fit longer audio.

Why Developers Use the ModelsLab Lip Sync API

Key advantages that set us apart

Video URL + audio URL in, synced MP4 out
Any language — the model follows the audio
Pairs with text to speech and voice cloning on one key
Async id, fetch endpoint and webhook delivery
lipsync-2 from $0.07, scaled by clip length
Video plans from $21/month
No separate dubbing product to integrate

Our Popular Use Cases

What teams build with the lip sync API:

Generate the script in each language with text to speech, sync it onto the original presenter, ship one video per market.

Video Localisation

Lip Sync API FAQ

POST https://modelslab.com/api/v7/video-fusion/lip-sync with init_video set to the URL of the source clip, init_audio set to the URL of the speech track and model_id set to lipsync-2. The API returns a video whose mouth movement matches the new audio.

Yes. The model matches mouth shapes to the audio you send, so it works for dubbing into another language as well as for replacing a line in the original one.

lipsync-2 is a third-party model billed per call, first from the usage included in your plan and then from wallet balance, listed at $0.07 on its model page in September 2026 and scaled by the length of the clip. A video plan from $21/month is required to call the endpoint.

Yes. Generate the audio with /api/v6/voice/text_to_audio (including a cloned voice), then pass the returned URL as init_audio to the lip sync endpoint. Both run on the same API key.

ModelsLab is a paid service. Video plans start at $21/month, and lipsync-2 is billed per call on top. Creating an account is free, but generating video requires an active plan.

It depends on clip length. The request returns an id; POST /api/v7/video-fusion/fetch/{id} to poll, or supply a webhook URL to have the result delivered when it is ready.

Your Data is Secure: GDPR Compliant AI Services

ModelsLab GDPR Compliance Certification Badge

GDPR Compliant

Start Creating Amazing AI Videos in Minutes

Choose plan as per your needs, cancel anytime.

100% refund policy on monthly & yearly plans — cancel anytime

Contact Sales
Best Value

Open Source Unlimited

Mission-Critical

$149/month

100% refund policy · cancel anytime

Unlimited Open Source Models
100% refund policy
24x7 Support
15 parallel generations
Access to all APIs
Unlimited generations on all open-source models
For mission critical workloads
Add Team Members
Priority GPU Clusters
Most Popular

Standard

Production

$47/month

100% refund policy · cancel anytime

Moderate Traffic
100% refund policy
Priority Developer Support
10 concurrent API requests
For Production workloads
API access to all models
Prototype

Basic

Prototype

$21/month

100% refund policy · cancel anytime

Moderate Traffic
100% refund policy
Developer Support via Discord/Email
5 concurrent API requests
API access to all models
Shared GPU

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

POST https://modelslab.com/api/v7/video-fusion/lip-sync with `init_video` set to the URL of the source clip, `init_audio` set to the URL of the speech track and `model_id` set to `lipsync-2`. The API returns a video whose mouth movement matches the new audio.

Yes. The model matches mouth shapes to the audio you send, so it works for dubbing into another language as well as for replacing a line in the original one.

lipsync-2 is a third-party model billed per call from wallet balance, listed at $0.07 on its model page in September 2026 and scaled by the length of the clip. A video plan from $21/month is required to call the endpoint.

Yes. Generate the audio with /api/v6/voice/text_to_audio (including a cloned voice), then pass the returned URL as `init_audio` to the lip sync endpoint. Both run on the same API key.

ModelsLab is a paid service. Plans start at $21/month. lipsync-2 is a partner model billed per call, from the plan allowance first and then your wallet. Creating an account is free, but generating video requires an active plan.

It depends on clip length. The request returns an id; POST /api/v7/video-fusion/fetch/{id} to poll, or supply a `webhook` URL to have the result delivered when it is ready.
Plugins

Explore Plugins for Pro

Our plugins are designed to work with the most popular content creation software.

API

Build Apps with
ML
API

Use our API to build apps, generate AI art, create videos, and produce audio with ease.