Skip to main content
One API, every provider

Lip Sync API

Match the mouth to the words: give these models a talking-head video and a new audio track, and the lip movement is regenerated to fit the speech — for dubbing, translation and re-voicing footage you already have — or start from a single portrait and have it deliver the track as a talking-head video. Priced per second of output video, with the same authentication and request lifecycle across every model here; only the input fields differ, and each model page documents its own.

5 lip sync models available right now — every one runnable in a free playground, through the REST API and JavaScript SDK, or from an AI assistant via MCP.

Lip Sync models & pricing

ModelEndpointPrice
Sync Lipsync 2sync/lipsync/v2$0.05 per second of video
LatentSync 1.0bytedance/latentsync$0.014 per second of video
PixVerse Lip Syncpixverse/lipsync$0.04 per second of video
OmniHuman 1.5bytedance/omnihuman/v1.5$0.16 per second of video
Wan 2.7 Image to Video (Audio Driven)wan-video/wan/v2.7/image-to-video/audio-drivenfrom $0.1 per second of video

Full catalog on the models page; live per-configuration costs on the pricing page.

Call a lip sync model in one request

Every model shares the same request lifecycle: submit to the queue, poll the status URL, fetch the result. Swap the endpoint to switch models — nothing else changes.

cURL

curl -X POST https://queue.modelrunner.run/sync/lipsync/v2 \
  -H "Authorization: Key $MRUN_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "video_url": "https://.../talking-head.mp4", "audio_url": "https://.../new-audio.wav" }'
# → { "request_id": "...", "status_url": "...", "response_url": "..." }

Use lip sync models from Claude & Cursor

Connect the ModelRunner MCP server once and your AI assistant can run every lip sync model in this table as a tool — authorized via OAuth, results returned as hosted URLs in the conversation.

Claude Code

claude mcp add --transport http modelrunner https://mcp.modelrunner.run/mcp

Frequently asked questions

How much does a lip sync API cost?

Lip sync models are priced per second of generated video, with the exact per-model rate shown in the table above — the open-source option costs a fraction of the premium tiers. You pay for the delivered output duration, so a 10-second output costs ten times the listed per-second rate; how input length maps to output length varies by model and setting (a re-sync tool may trim, loop or time-stretch to reconcile video and audio), and each model page documents its own rule. There is no subscription and no minimum fee: you pay per generation from prepaid credits.

What do I need to supply for lip sync?

Two inputs: the talking-head video to re-sync and the audio track it should match — or, for the talking-photo models, a single portrait image plus the audio. Both are passed as URLs: upload local files through the Storage API, or the JavaScript SDK’s storage.upload() helper, and pass the returned media URL. Re-syncing needs no text prompt; some talking-photo models accept an optional prompt to steer the performance.

What is the difference between lip sync and a talking-head model?

A lip sync model edits footage that already exists: it keeps your video and regenerates the lip motion so the speech matches a new audio track, aiming to preserve the speaker’s identity, framing and background — timing and other properties of the clip can change by model and setting. A talking-head (audio-driven) model starts from a still image and generates the whole performance — head movement, expression and lip motion — from the audio alone. Both kinds are listed above, because the same dubbing or re-voicing job can start from either a clip or a photo.

Can I dub a video into another language?

Yes — that is the main use of the re-sync models. Generate the translated voiceover with a text-to-speech model from the public catalog (or record it), then pass the original video and the new track to a lip sync model: the lip motion is regenerated to match the new language while the speaker, framing and background come from your original footage. The result comes back as a hosted video URL.

How do I call a lip sync model via the API?

Every model shares the same request shape: POST https://queue.modelrunner.run/<owner>/<alias> with an Authorization: Key header and the input fields as the top-level JSON body (no wrapper object), then poll the returned status_url and fetch the result from response_url. The JavaScript SDK (@modelrunner/client) wraps this in a single subscribe() call, which is the one place an { input } object is used. Each model page shows copy-paste cURL, JavaScript, and Python examples with that model's real inputs.

Can I run lip sync models from Claude or Cursor?

Yes. Connect the ModelRunner MCP server (https://mcp.modelrunner.run/mcp) once and every lip sync model in the catalog becomes a tool your AI assistant can call with the run_model tool — authorized via OAuth, no API key pasted into config.