> For the documentation index, fetch https://sync.so/docs/llms.txt. Append .md to a page URL for Markdown. Documentation-search MCP: https://sync.so/docs/_mcp/server. # React models > react-1: AI model for expressive lip sync with facial expressions and head movements. Control emotions and talking head movements via API. react-1 introduces the first performance control primitive for video editing. As an expressive AI talking head model, react-1 can synchronize the lip movements, facial expressions, and head movements to match a target audio, while following an emotional prompt. We describe a couple of workflows below that are only possible using react-1. ## Key Features * **Model Modes**: You can choose which facial region to edit: just the mouth, or the facial expressions, or even the head movements * **Expressive lipsync**: react-1 operates on a much larger facial region, giving you the the most expressive mouth movements that match the speech * **Facial Expressions**: facial expressions rewritten using an emotion prompt. and every tiny micro-expressions are perfectly in sync with the speech. * **Head Movements**: react-1 can also synchronize your head movements to match the pacing, prosody, and intonation of the new dialogue. ## Model modes The model can be controlled with three modes of operation: **lips**, **face**, and **head**. This allows you to specify the spatial region you want to edit. You can only opt for lipsync, or additionally choose for facial expressions or head movements as well. The default is `face`. | Mode | Lipsync | Facial Expressions | Head Movements | | :------- | :-----: | :----------------: | :------------: | | **lips** | ✅ | ❌ | ❌ | | **face** | ✅ | ✅ | ❌ | | **head** | ✅ | ✅ | ✅ | ## Emotion prompts You can guide the facial expressions by specifying the emotion prompts. You can also choose not to specify one, in which case, the model will follow the emotional context of the input video. Please see usage below for more details. ## Usage *react-1* is available through the same [`/v2/generate`](/api-reference/api/generate-api/create) API endpoint used for standard lipsync, with additional parameters to control the emotional and movement effects. #### Using react-1 over API To use react-1 with the API, set the `model` parameter to `react-1` and configure the additional options: ```python from sync import Sync from sync.common import Audio, Video, GenerationOptions sync = Sync() response = sync.generations.create( input=[ Video(url="https://assets.sync.so/docs/example-video.mp4"), Audio(url="https://assets.sync.so/docs/example-audio.wav") ], model="react-1", options=GenerationOptions( prompt="happy", model_mode="face" ) ) ``` ```typescript import { SyncClient } from "@sync.so/sdk"; const sync = new SyncClient(); const response = await sync.generations.create({ input: [ { type: "video", url: "https://assets.sync.so/docs/example-video.mp4" }, { type: "audio", url: "https://assets.sync.so/docs/example-audio.wav" } ], model: "react-1", options: { prompt: "happy", modelMode: "face" } }); ``` ```bash curl -X POST https://api.sync.so/v2/generate \ -H "x-api-key: YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "model": "react-1", "input": [ { "type": "video", "url": "https://assets.sync.so/docs/example-video.mp4" }, { "type": "audio", "url": "https://assets.sync.so/docs/example-audio.wav" } ], "options": { "prompt": "happy", "model_mode": "face" } }' ``` ### API Parameters #### `model` Set to `react-1` to use the react-1 model. #### `options.model_mode` Controls the edit region and movement scope for the model. Available options: * **`lips`**: Only lipsync using react-1 (minimal facial changes) * **`face`** (default): Lipsync + facial expressions without head movements * **`head`**: Lipsync + facial expressions + natural talking head movements > **Note** > > The `model_mode` parameter only works with the `react-1` model. For other models, this parameter is ignored. #### `options.prompt` Emotion prompt for the generation. Currently supports single-word emotions only. **Available options:** * `happy` * `angry` * `sad` * `neutral` * `disgusted` * `surprised` > **Note** > > The `prompt` parameter only works with the `react-1` model. For other models, this parameter is ignored. #### Using react-1 from Studio react-1 is available in [Sync Labs Studio](https://sync.so/login) with an intuitive interface for controlling emotional expressions and head movements. #### Navigate to Studio Go to [Studio](https://sync.so/login) and create a new project or open an existing one. #### Select your assets Upload or select your video and audio inputs. Remember that react-1 supports inputs up to 15 seconds in duration. #### Choose react-1 model Select **react-1** from the model dropdown in the generation settings. #### Configure model mode Choose your desired model mode: * **Lips**: For lipsync only * **Face**: For lipsync with facial expressions (default) * **Head**: For lipsync with facial expressions and natural head movements #### Change expression Select an expression from the emotion wheel by clicking in the video player controls. #### Generate Click generate to create your lipsync with emotional expressions and optional head movements. ## Best Practices #### Choose the Right Mode * Use **lips** mode when you only need lipsync without emotional changes * Use **face** mode (default) for most use cases where you want natural expressions * Use **head** mode when you want the most dynamic and natural talking head movements #### Select Appropriate Emotions Choose emotion prompts that match the tone and context of your audio. The model will generate facial expressions that align with the selected emotion throughout the generation. #### Input Duration Keep your inputs under 15 seconds. For longer content, break your video into segments and process them separately, or use the standard lipsync models for longer durations. ## Current Limitations The following features are not yet supported for react-1: * **Input Duration**: react-1 supports inputs up to 15 seconds in duration. For longer content, consider breaking your video into segments. * **Segments**: Multi-segment generation with different audio inputs is not available. Process each segment separately if needed. * **Speaker Selection**: The `active_speaker_detection` option is not supported, including both automatic detection (`auto_detect`) and manual selection via bounding box or frame number. Ensure your input video contains a single, clearly visible speaker. * **Occlusion detection**: The `occlusion_detection_enabled` option for handling partially hidden faces is not available for react-1. ## When to use react-1 react-1 is ideal for: * Short-form content (≤ 15 seconds) requiring emotional expressions * Videos where natural head movements enhance the result * Content that benefits from emotion-aware facial expressions * Projects where you want more dynamic and expressive lipsync results For longer content (> 15 seconds) or when you only need standard lipsync, consider using [lipsync-2](/models/lipsync) or [lipsync-2-pro](/models/lipsync) instead. ## Pricing react-1 is available on paid subscription plans (Creator and above). Pricing is usage-based at 25 fps and differs from lipsync models — each Sync Labs model has its own per-second rate. | Plan | Per-second rate (at 25 fps) | | :------------------- | :-------------------------- | | Hobbyist / Creator | \$0.167/sec | | Growth (5% discount) | \$0.158/sec | | Scale (20% discount) | \$0.133/sec | react-1 is the most expressive model and is priced higher than lipsync models. See the [pricing page](https://sync.so/pricing) for a full comparison. > **Note** > > Sync Labs model pricing varies by model. react-1 (\$0.133–\$0.167/sec) costs significantly more than lipsync-2 (\$0.04–\$0.05/sec) or lipsync-2-pro (\$0.067–\$0.083/sec). Do not assume pricing is the same across models. ## FAQs #### How much does react-1 cost? react-1 costs \$0.133–\$0.167 per second of output video at 25 fps, depending on your subscription plan. Hobbyist and Creator plans pay \$0.167/sec, Growth pays \$0.158/sec (5% discount), and Scale pays \$0.133/sec (20% discount). It requires a paid subscription (Creator plan or higher). #### Is react-1 pricing the same as lipsync models? No. react-1 is priced significantly higher than lipsync models. At the base rate, react-1 (\$0.167/sec) costs over 3x more than lipsync-2 (\$0.05/sec) and about 2x more than lipsync-2-pro (\$0.083/sec). Each Sync Labs model has independent per-second pricing. #### Can I use react-1 on the free trial? No. react-1 requires a paid subscription (Creator plan or higher). The free trial only includes lipsync family models (lipsync-1.9.0-beta, lipsync-2, lipsync-2-pro). ## react-1 Model Reference ### Model ID `react-1` ### Input Requirements * Video and audio input required * Maximum input duration: **15 seconds** * Single, clearly visible speaker required * Uses the same `/v2/generate` endpoint as lipsync models ### Model Modes | Mode | Lipsync | Facial Expressions | Head Movements | | ---------------- | ------- | ------------------ | -------------- | | `lips` | Yes | No | No | | `face` (default) | Yes | Yes | No | | `head` | Yes | Yes | Yes | ### Supported Emotion Values * `happy` * `angry` * `sad` * `neutral` * `disgusted` * `surprised` If no emotion prompt is provided, the model preserves the emotional context of the input video. ### API Parameters * `model`: `"react-1"` * `options.model_mode`: `"lips"` | `"face"` | `"head"` (default: `"face"`) * `options.prompt`: One of the emotion values listed above (optional) ### Pricing * react-1: $0.133 -- $0.167/sec at 25 fps (varies by plan tier) * Hobbyist/Creator: $0.167/sec | Growth: $0.158/sec | Scale: \$0.133/sec * Requires paid subscription (Creator plan or higher) * NOT available on the free trial * react-1 is MORE EXPENSIVE than lipsync models: * react-1 ($0.167/sec) vs lipsync-2 ($0.05/sec) = 3.3x more expensive * react-1 ($0.167/sec) vs lipsync-2-pro ($0.083/sec) = 2x more expensive * Do NOT assume react-1 costs the same as lipsync-2 or any other model — each model is priced independently ### Current Limitations * Max 15 seconds input duration * No multi-segment generation * No `active_speaker_detection` (auto\_detect or manual bounding box) * No `occlusion_detection_enabled` > react-1: AI model for expressive lip sync with facial expressions and head movements. Control emotions and talking head movements via API.