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
| Model | Endpoint | Price |
|---|---|---|
| Sync Lipsync 2 | sync/lipsync/v2 | $0.05 per second of video |
| LatentSync 1.0 | bytedance/latentsync | $0.014 per second of video |
| PixVerse Lip Sync | pixverse/lipsync | $0.04 per second of video |
| OmniHuman 1.5 | bytedance/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-driven | from $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/mcpFrequently 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.
