> 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.

# sync-3

> sync-3 is sync. labs's most powerful lip sync model and the default for all users. A fundamentally new architecture that delivers unprecedented realism, handling close-ups, extreme angles, and obstructions out of the box.

### Quick reference

|                         |                                                                                                                                  |
| :---------------------- | :------------------------------------------------------------------------------------------------------------------------------- |
| **Model name**          | `sync-3`                                                                                                                         |
| **Status**              | Default model for all users                                                                                                      |
| **API endpoint**        | [`POST /v2/generate`](/api-reference/api/generate-api/create)                                                                    |
| **Visual input**        | Video or image                                                                                                                   |
| **Languages**           | 95+                                                                                                                              |
| **Face resolution**     | 4K native output                                                                                                                 |
| **Pricing (at 25 fps)** | \$0.107 – \$0.133/sec                                                                                                            |
| **Free account limit**  | 1 sync-3 generation per month, up to 15 seconds                                                                                  |
| **Available in**        | [API](/api-reference), [Studio](https://sync.so/login), [Adobe Premiere Plugin](/plugins-and-extensions/adobe-premiere/overview) |

Image input is supported in the API and Studio. See the [image Quickstart](/quickstart#generate-from-a-still-image) for a request example.

## What's new

Previous models processed video in small, independent snippets. sync-3 takes a fundamentally different approach — it builds a global understanding of a person across an entire shot, generating all frames at once rather than stitching together isolated segments.

The result is a generational shift in consistency and realism.

| Capability                       | What changed                                                                                                                                                                          |
| :------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| **Close-ups & partial faces**    | Tight close-ups, cropped frames, and partially obscured faces are handled natively — cinematic and editorial content that was previously off-limits.                                  |
| **Extreme angles**               | Profile shots, over-the-shoulder angles, and non-frontal lip positions that broke earlier models are now handled with confidence.                                                     |
| **Obstruction detection**        | Hands, microphones, scarves — sync-3 detects obstructions automatically and generates around them without manual intervention.                                                        |
| **Style & emotion preservation** | Preserves the original speaker's cadence and emotional expression. Silent lips can be opened naturally. The output isn't just accurate — it *feels* like the person actually said it. |

## How it works

sync-3 generates from a larger spatial window than any previous model, giving it a much wider field of view around the face. The model can reason about what to generate and what to preserve because it has enough context to understand the full scene.

This means fewer retakes, fewer manual fixes, and the best generation possible in any scenario.

## Image input support

sync-3 can generate from static images in addition to video — a capability exclusive to this model. Pass a single face image, and sync-3 produces natural-looking video with lip movements matched to your audio.

**Supported image formats:** JPEG, PNG, WebP

**Supported input combinations:**

* Video + audio
* Video + text (TTS)
* Image + audio
* Image + text (TTS)

**Multi-face images:** For images with multiple faces, use manual speaker selection — provide `coordinates` in the image's native pixel space with `frame_number: 0`. Auto-detect (`auto_detect: true`) is not supported for image inputs. See [Speaker Selection — API](/developer-guides/speaker-selection) for details.

**Options that don't apply:** The `sync_mode` option is ignored for image inputs. Sync mode controls how to handle duration mismatches between video and audio, which doesn't apply to still images.

## Options not available

The following generation options from previous models are not applicable to sync-3. Their capabilities are either built into the model or handled differently by the new architecture.

| Option                        | Why it's not needed                                                                                                |
| :---------------------------- | :----------------------------------------------------------------------------------------------------------------- |
| `temperature`                 | sync-3 manages expressiveness natively — no manual tuning required.                                                |
| `reasoning_enabled`           | Frame analysis and correction for artifacts, occlusions, and extreme poses is built into the model.                |
| `occlusion_detection_enabled` | Obstruction detection is automatic — sync-3 detects and generates around obstructions without manual intervention. |

## Integration

sync-3 is available through the standard [Sync Labs API](/api-reference). Pass `sync-3` as the `model` parameter in your [generation request](/api-reference/api/generate-api/create).

### Video input

**`Python`**

```python title="Python"
from sync import Sync
from sync.common import Audio, Video

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="sync-3"
)
```

**`TypeScript`**

```typescript title="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: "sync-3"
});
```

**`cURL`**

```bash title="cURL"
curl -X POST https://api.sync.so/v2/generate \
    -H "x-api-key: YOUR_API_KEY" \
    -H "Content-Type: application/json" \
    -d '{
    "model": "sync-3",
    "input": [
        {
            "type": "video",
            "url": "https://assets.sync.so/docs/example-video.mp4"
        },
        {
            "type": "audio",
            "url": "https://assets.sync.so/docs/example-audio.wav"
        }
    ]
}'
```

### Image input

Pass an image using either a public URL or an asset ID from your media library.

**`Python`**

```python title="Python"
from sync import Sync
from sync.common import Audio, Image

sync = Sync()

response = sync.generations.create(
    input=[
        Image(url="https://assets.sync.so/docs/example-image.jpg"),
        Audio(url="https://assets.sync.so/docs/example-audio.wav")
    ],
    model="sync-3"
)
```

**`TypeScript`**

```typescript title="TypeScript"
import { SyncClient } from "@sync.so/sdk";

const sync = new SyncClient();

const response = await sync.generations.create({
    input: [
        {
            type: "image",
            url: "https://assets.sync.so/docs/example-image.jpg"
        },
        {
            type: "audio",
            url: "https://assets.sync.so/docs/example-audio.wav"
        }
    ],
    model: "sync-3"
});
```

**`cURL`**

```bash title="cURL"
curl -X POST https://api.sync.so/v2/generate \
    -H "x-api-key: YOUR_API_KEY" \
    -H "Content-Type: application/json" \
    -d '{
    "model": "sync-3",
    "input": [
        {
            "type": "image",
            "url": "https://assets.sync.so/docs/example-image.jpg"
        },
        {
            "type": "audio",
            "url": "https://assets.sync.so/docs/example-audio.wav"
        }
    ]
}'
```

You can also reference a previously uploaded image by its asset ID:

```json
{
    "type": "image",
    "assetId": "123e4567-e89b-12d3-a456-426614174000"
}
```

Need to get set up first? See the [Quickstart](/quickstart) guide for API key creation and SDK installation.

## Works with

#### [Sync Labs Studio](https://sync.so/login)

Web app — try sync-3 interactively with no code.

#### [Adobe Premiere Plugin](/plugins-and-extensions/adobe-premiere/overview)

Lip sync directly inside your editing timeline.

#### [API & SDKs](/api-reference)

Build sync-3 into your product with Python, TypeScript, or REST.

Also available via [ComfyUI](/docs/plugins-and-extensions/comfy-ui) and [MCP Server](/docs/plugins-and-extensions/mcp-server) for AI-assisted workflows.

## How sync-3 compares

|                               |             sync-3             |        lipsync-2-pro        |          lipsync-2          |
| :---------------------------- | :----------------------------: | :-------------------------: | :-------------------------: |
| **Face resolution**           |            4K native           |  512×512 (enhanced detail)  |           512×512           |
| **Image input**               |               Yes              |              No             |              No             |
| **Close-ups & partial faces** |             Native             |           Limited           |           Limited           |
| **Extreme angles**            |             Native             |           Limited           |           Limited           |
| **Obstruction detection**     |            Automatic           |        Manual opt-in        |        Manual opt-in        |
| **Emotion preservation**      |    Full cadence & expression   |   Preserves speaking style  |   Preserves speaking style  |
| **Silent lip opening**        |               Yes              |              No             |              No             |
| **Processing**                | Full-shot (all frames at once) | 2-second independent chunks | 2-second independent chunks |
| **Pricing (at 25 fps)**       |      \$0.107 – \$0.133/sec     |    \$0.067 – \$0.083/sec    |     \$0.04 – \$0.05/sec     |

sync-3 is the best choice for production-grade video — especially content with close-ups, complex angles, or obstructions. For simpler videos where cost is a priority, [lipsync-2 or lipsync-2-pro](/models/lipsync) remain excellent options.

Free accounts can run one sync-3 generation per month with a 15-second maximum duration. Paid plan duration limits follow the plan tier listed in [Billing](/docs/product/billing#faq).

## FAQs

#### How do I switch an existing integration to sync-3?

Change the `model` parameter from your current model (e.g. `lipsync-2`) to `sync-3`. The rest of the request schema is unchanged — no other code changes required.

#### Does sync-3 still require obstruction detection to be enabled manually?

No. sync-3 detects obstructions automatically. You no longer need to set `occlusion_detection_enabled` in your request options.

#### What languages does sync-3 support?

sync-3 supports 95+ languages — the same broad language coverage as previous models. It's designed for global dubbing at native quality.

#### Can I use sync-3 with the Batch API?

Yes. sync-3 works with the [Batch API](/api-reference/guides/batch-processing) the same way as other models — just set `model` to `sync-3` in each job.

#### Can I use an image instead of a video with sync-3?

Yes. sync-3 is the only model that supports image input. Use `type: "image"` with either a `url` or an `assetId` from your media library, and sync-3 will generate a talking video from the static face.

## sync-3 Model Reference

### Key Facts

* Model ID: `sync-3`
* Status: Default model for all users
* API: `POST /v2/generate` with `"model": "sync-3"`
* Visual input: Video or image (image input is sync-3 exclusive)
* Languages: 95+
* Architecture: Global understanding across entire shot, generates all frames at once (not snippet-based)

### Input Combinations

* Video + audio
* Video + text (TTS)
* Image + audio (sync-3 only, formats: JPEG, PNG, WebP)
* Image + text (TTS) (sync-3 only, formats: JPEG, PNG, WebP)

Note: For image inputs, manual speaker selection via `coordinates` + `frame_number: 0` is supported. Auto-detect (`auto_detect: true`) is not supported for images. The `sync_mode` option is ignored for image inputs (images have no intrinsic duration).

### Capabilities vs Previous Models

| Capability                | Previous models                               | sync-3                                   |
| ------------------------- | --------------------------------------------- | ---------------------------------------- |
| Image input               | Not supported                                 | Supported                                |
| Close-ups / partial faces | Limited                                       | Native support                           |
| Profile / extreme angles  | Often failed                                  | Handled confidently                      |
| Obstruction detection     | Manual opt-in (`occlusion_detection_enabled`) | Automatic, built-in                      |
| Emotion preservation      | Basic                                         | Full cadence and expression preservation |
| Silent lip opening        | Not supported                                 | Natural generation                       |

### Integration

* Same API schema as other lipsync models — only change `model` to `sync-3`
* For image input: use `type: "image"` instead of `type: "video"` in the input array
* Image inputs accept `url` or `assetId` (same pattern as video/audio inputs)
* Available in: API, Studio (sync.so), Adobe Premiere Plugin, ComfyUI, MCP Server
* Works with Batch API and Webhooks