Skip to main content
ByteDanceSlowHigh

LatentSync

ByteDance's open-source lipsync โ€” re-syncs a video's mouth movements to any audio track using latent diffusion. State-of-the-art open lipsync quality for dubbing and localization.

220 credits
per run (runtime grows with video length)
Video + audio โ†’ lip-synced video
State-of-the-art open-source lipsync
Latent diffusion mouth re-generation
Guidance scale control

Run it right now

Test this model instantly in the Console Playground โ€” no code required

Sign in to try

Use with AI Assistant

Copy usage instructions for Claude, ChatGPT, or other AI

Quick Start

curl -X POST "https://api.core.today/v1/predictions" \
  -H "Content-Type: application/json" \
  -H "X-API-Key: cdt_your_api_key" \
  -d '{
  "model": "bytedance/latentsync",
  "input": {
    "video": "https://example.com/presenter.mp4",
    "audio": "https://example.com/korean-voiceover.mp3"
  }
}'

Parameters

ParameterTypeRequiredDefaultDescription
videostringNo-Input video with a visible face
audiostringNo-Audio track to sync the lips to
guidance_scalenumberNo1Guidance scale for generation
seedintegerNo0Random seed (0 for random)

How to Provide File Input

There are 3 ways to provide files for the videoaudio parameters:

Recommended

Direct Upload (Multipart)

Attach files directly to POST /v1/predictions/upload. No separate upload step needed.

curl -X POST "https://api.core.today/v1/predictions/upload" \
  -H "X-API-Key: cdt_your_api_key" \
  -F "model=bytedance/latentsync" \
  -F 'input={"prompt":"your prompt here"}' \
  -F "file:video=@your_file.png"

Image URL

Pass a publicly accessible URL directly. You can also use file_url from the Storage API.

{
  "model": "bytedance/latentsync",
  "input": {
    "prompt": "your prompt here",
    "video": "https://example.com/image.jpg"
  }
}
See the File Upload docs for more upload methods including Presigned URLs.

Common Parameters

Common parameters used when calling POST /v1/predictions.

ParameterTypeRequiredDefaultDescription
modelstringYes-Model identifier
inputobjectYes-Object containing the model-specific parameters from the table above
output_folderstringNo-Folder path for output files (max 256 chars, '..' not allowed)
webhook_urlstringNo-Webhook URL to call on completion
is_publicbooleanNofalseIf true, output files are also available via permanent public URLs

Examples

Dub a Presenter Video

Sync a presenter's lips to a new Korean voiceover

curl -X POST "https://api.core.today/v1/predictions" \
  -H "Content-Type: application/json" \
  -H "X-API-Key: cdt_your_api_key" \
  -d '{
  "model": "bytedance/latentsync",
  "input": {
    "video": "https://example.com/presenter.mp4",
    "audio": "https://example.com/korean-voiceover.mp3"
  }
}'

Tips & Best Practices

1Works best with front-facing, well-lit faces
2Pair with a TTS model (e.g. ElevenLabs) to build a full dubbing pipeline
3Longer videos take proportionally longer to process
4Only process videos of people who have consented

Use Cases

Video dubbing and localization
Fixing TTS-narrated presenter videos
Music video lip-sync
Marketing video language swaps