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 "Authorization": "Bearer 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 Authorization: 'Bearer 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 'Authorization: Bearer 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 video plan from $21/month, add wallet balance for the lipsync-2 model, and copy your key.

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 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 video plan — from $21/month for 3,250 API calls — is required to call the endpoint. The speech generated for it draws on an audio plan from $12/month.

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

Coming Soon

We are making some changes to our pricing, please check back later.

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