Skip to content

Sync React-1

Integrate

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

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

Files like the example: $1.667 1,667 API credits your files are measured before the run Run it on this page

Get API key
Sync Labs Lipsync & Avatars Lipsync #video-to-video

Lip-sync video-to-video that also applies a chosen emotion, for clips up to 15 seconds

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

Input video URL; the clip must not exceed 15 seconds.

•required audio_url
Drop a file, or

Input audio URL; the recording must not exceed 15 seconds.

emotion •required

Emotion prompt used during generation; only single-word emotions are currently supported.

lipsync_mode default bounce

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

Advanced model_mode · temperature
model_mode default face

Editing area and extent of movement: `lips` uses react-1 for lip synchronization alone, with minimal facial changes; `face` adds facial expressions but no head movement; `head` includes lip synchronization, facial expressions, and natural head motion while talking.

default 0.5

Expressiveness level of the lip synchronization.

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

# Still "queued" or "running"? Poll with the id from the response:
curl "https://api.doitong.com/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 React-1

Needs `video_url` and `audio_url`, each 15 seconds or shorter, plus a required `emotion` (happy, sad, angry, disgusted, surprised or neutral). `model_mode` sets the edit area: lips, face or head. `lipsync_mode` handles length mismatch (cut_off, loop, bounce, silence, remap), and `temperature` (0 to 1) tunes expressiveness.

Parameters

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

NameType DefaultAllowed Description
video_urlrequired video
Typeurl · video
Input video URL; the clip must not exceed 15 seconds.
audio_urlrequired audio
Typeurl · audio
Input audio URL; the recording must not exceed 15 seconds.
emotionrequired
Typeenum
happysadangrydisgustedsurprisedneutral
Emotion prompt used during generation; only single-word emotions are currently supported.
model_modeoptional
Typeenum
Defaultface
lipsfacehead
Editing area and extent of movement: `lips` uses react-1 for lip synchronization alone, with minimal facial changes; `face` adds facial expressions but no head movement; `head` includes lip synchronization, facial expressions, and natural head motion while talking.
lipsync_modeoptional
Typeenum
Defaultbounce
cut_offloopbouncesilenceremap
Lip synchronization mode for handling differences in audio and video duration.
temperatureoptional
Typenumber
Default0.5
0 – 1
Expressiveness level of the lip synchronization.
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/react-1",
  "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": 1667,
    "usd": "1.667",
    "charged": 1667,
    "refunded": 0
  },
  "input": {
    "video_url": "https://content.doitong.com/video/showcase/v3/gen_fox_cartoon.mp4",
    "audio_url": "https://content.doitong.com/audio/showcase/v3/tools/dub_es.mp3",
    "emotion": "happy"
  },
  "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,
      "width": 1024,
      "height": 768,
      "fps": 1.0,
      "duration": 5,
      "num_frames": 1
    }
  },
  "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.com/v1/requests/req_8k2m4q7x1z9c3v5b6n0p2r4t",
    "cancel": "https://api.doitong.com/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, width, height, fps, duration, num_frames}Output video featuring synchronized facial and lip movements.

More models: Lipsync & Avatars

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