Skip to content

Sync Lipsync 3

Integrate

Model id sync-lipsync/v3
# Run the model; wait up to 20 s for the finished result in the same call
curl -X POST "https://api.doitong.ru/v1/run/sync-lipsync/v3?wait=20" \
  -H "Authorization: Bearer $DOITONG_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "video": "https://content.doitong.com/video/showcase/v3/avatar/talking_avatar_loop.mp4",
    "audio": "https://content.doitong.com/audio/showcase/v3/tools/dub_es.mp3"
  }'

# Still "queued" or "running"? Poll with the id from the response:
curl "https://api.doitong.ru/v1/requests/REQUEST_ID?wait=20" \
  -H "Authorization: Bearer $DOITONG_API_KEY"

Files like the example: $1.334 1,334 API credits · ≈ ₽140.69 your files are measured before the run Run it on this page

Get API key
Sync Labs Lipsync & Avatars Lipsync #dubbing#localization

Re-times the lips of any talking video to a new audio track.

Sync Labs · Video

Your first result goes here

Build a request below and run it with your API key. Outputs are copied to our storage, kept forever or 7 days for free.

Build a request

Controls are generated from the model schema. The code and the price update as you change them.

•required video_url
Drop a file, or

URL pointing to the input video.

•required audio_url
Drop a file, or

Input audio location as a URL.

sync_mode default cut_off

Lip synchronization mode for handling differences in audio and video duration.

Advanced options

Configure additional Sync.so generation behavior here, with any supplied options.sync_mode taking precedence over the top-level sync_mode value.

POST /run/sync-lipsync/v3?wait=20 quote → $1.334
# Run the model; wait up to 20 s for the finished result in the same call
curl -X POST "https://api.doitong.ru/v1/run/sync-lipsync/v3?wait=20" \
  -H "Authorization: Bearer $DOITONG_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "video": "https://content.doitong.com/video/showcase/v3/avatar/talking_avatar_loop.mp4",
    "audio": "https://content.doitong.com/audio/showcase/v3/tools/dub_es.mp3"
  }'

# Still "queued" or "running"? Poll with the id from the response:
curl "https://api.doitong.ru/v1/requests/REQUEST_ID?wait=20" \
  -H "Authorization: Bearer $DOITONG_API_KEY"

Run this request

Your key stays in this browser: it is sent only to the Doitong API and saved (localStorage) only if you tick Remember. Get an API key

About Sync Lipsync 3

Sync Labs' lipsync-3 replaces the mouth movement of a person in a video so it matches a new voice track, for dubbing, ad localization and fixing lines in post. When the audio and video lengths differ, choose to cut, loop, bounce, pad with silence or remap.

Parameters

Send either the canonical name or the native name, not both. Canonical names

NameType DefaultAllowed Description
video_urlrequired video
Typeurl · video
URL pointing to the input video.
audio_urlrequired audio
Typeurl · audio
Input audio location as a URL.
sync_modeoptional
Typeenum
Defaultcut_off
cut_offloopbouncesilenceremap
Lip synchronization mode for handling differences in audio and video duration.
optionsoptional
Typeobject
Configure additional Sync.so generation behavior here, with any supplied options.sync_mode taking precedence over the top-level sync_mode value.
options.sync_modeoptional
Typeenum
cut_offloopbouncesilenceremap
Override for the top-level sync_mode, specifying what happens when the input audio and video have different durations.
options.model_modeoptional
Typeenum
lipsfaceheadlipsyncemotiontalking_head
Editing-area selection, mainly for react-1, specifying which region the model modifies.
options.promptoptional
Typeenum
happysadangrydisgustedsurprisedneutral
Emotion guidance used mainly by react-1 to steer generation.
options.temperatureoptional
Typenumber | null
0 – 1
Expressiveness setting with no effect on sync-3, which manages this natively. For models that use this setting, 0 gives the least expressive lipsync and 1 gives the most.
options.active_speaker_detectionoptional
Typeobject
Settings for identifying the active speaker in videos containing multiple people.
options.active_speaker_detection.auto_detectoptional
Typeboolean | null
Automatic identification of the active speaker and application of generation to that person.
options.active_speaker_detection.v3optional
Typeboolean | null
Use of v3 active-speaker detection.
options.active_speaker_detection.use_v2optional
Typeboolean | null
Deprecated setting for v2 active-speaker detection.
options.active_speaker_detection.frame_numberoptional
Typeinteger | null
≥ 0
Index of the frame used for coordinates that manually select the speaker.
options.active_speaker_detection.coordinatesoptional
Typeinteger[]
2 – 2 items
Facial reference point given as [x, y] for the speaker in frame_number.
options.active_speaker_detection.bounding_boxesoptional
Typearray[]
Detected face bounding boxes for each frame, expressed as [x1, y1, x2, y2].
options.active_speaker_detection.bounding_boxes_urloptional
Typestring | null
JSON file URL providing bounding boxes for each frame.
options.active_speaker_detection.face_imageoptional
Typestring | null
Face image encoded in Base64, used to select the speaker manually.
options.occlusion_detection_enabledoptional
Typeboolean | null
Occlusion-detection toggle with no effect on sync-3 because detection is automatic there; otherwise, it controls whether generation includes occlusion detection.
required Canonical name, also accepted

File parameters take a public https:// URL, a data: URI up to 10 MB, or the file_url of an upload. Files

Output

GET /requests/req_8k2m4q7x1z9c3v5b6n0p2r4t
{
  "id": "req_8k2m4q7x1z9c3v5b6n0p2r4t",
  "object": "request",
  "model": "sync-lipsync/v3",
  "status": "succeeded",
  "created_at": "2026-10-20T12:00:00Z",
  "started_at": "2026-10-20T12:00:02Z",
  "completed_at": "2026-10-20T12:00:09Z",
  "queue_position": null,
  "cost": {
    "credits": 1334,
    "usd": "1.334",
    "charged": 1334,
    "refunded": 0
  },
  "input": {
    "video": "https://content.doitong.com/video/showcase/v3/avatar/talking_avatar_loop.mp4",
    "audio": "https://content.doitong.com/audio/showcase/v3/tools/dub_es.mp3"
  },
  "output": {
    "video": {
      "url": "https://content.doitong.com/dev-api/2026/10/20/req_8k2m4q7x1z9c3v5b6n0p2r4t/0-output.mp4",
      "content_type": "video/mp4",
      "file_name": "0-output.mp4",
      "file_size": 1843200
    }
  },
  "outputs": [
    {
      "type": "video",
      "url": "https://content.doitong.com/dev-api/2026/10/20/req_8k2m4q7x1z9c3v5b6n0p2r4t/0-output.mp4",
      "content_type": "video/mp4",
      "file_size": 1843200,
      "width": 1280,
      "height": 720,
      "duration": 5,
      "stored": true
    }
  ],
  "error": null,
  "metrics": {
    "inference_seconds": 6.8
  },
  "urls": {
    "self": "https://api.doitong.ru/v1/requests/req_8k2m4q7x1z9c3v5b6n0p2r4t",
    "cancel": "https://api.doitong.ru/v1/requests/req_8k2m4q7x1z9c3v5b6n0p2r4t/cancel"
  }
}
Your files, your choiceEvery outputs[].url is a copy on our storage: kept forever (paid per GB-month) or 7 days for free, by your account setting or ?storage=.
Same shape on every modeltype, url, content_type, width, height and duration, for images, video and audio alike. output is the model’s own result object.
Fields of output
video
object {url, content_type, file_name, file_size}Video produced by the model.

More models: Lipsync & Avatars

For AI agents: this page as Markdown is at https://doitong.com/en-US/developers/models/sync-lipsync/v3.md. All models and guides: https://doitong.com/developers/llms.txt