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

# API Overview

> sync. labs API reference overview. REST API for AI lip sync, video dubbing, and talking head generation. Base URL, authentication, SDKs, and endpoint reference.

The Sync Labs API is a RESTful API at `https://api.sync.so/v2` for generating lip-synced media from video, image, audio, and text inputs. It exposes generation, asset, model, estimate, batch, and healthcheck endpoints, and currently documents five public generation model IDs. Send video or image input plus audio or text input, and the API returns media with lip movements matching the audio.

### API quick reference

|                      |                                                                                                                                                                                                                                                       |
| :------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Endpoint groups**  | Generations, assets, models, estimate cost, batch, and healthcheck                                                                                                                                                                                    |
| **Models**           | 5 — sync-3, lipsync-2, lipsync-2-pro, lipsync-1.9.0-beta, react-1                                                                                                                                                                                     |
| **Rate limits**      | Endpoint-specific request limits and plan concurrency — see [Rate Limits](/api-reference/guides/rate-limits)                                                                                                                                          |
| **Concurrency**      | 1 (Free/Hobbyist) to 15 (Scale), custom for Enterprise                                                                                                                                                                                                |
| **Supported inputs** | Video or image input plus audio or text input via URL or asset ID. Direct uploads have a 5 GiB per-file application parser limit, subject to plan and proxy limits; [asset uploads](/developer-guides/asset-uploads) are recommended for large files. |
| **Batch processing** | Up to 500 generations per batch, min 20, 5 MB max input file, 24-hr turnaround (Scale+ only)                                                                                                                                                          |
| **Authentication**   | API key via `x-api-key` header                                                                                                                                                                                                                        |

## What is the Sync Labs API base URL?

```
https://api.sync.so
```

All API requests require authentication via the `x-api-key` header. See the [Authentication](/api-reference/guides/authentication) guide for setup.

## Core Endpoints

| Endpoint                                                                                      | Method | Description                             |
| :-------------------------------------------------------------------------------------------- | :----: | :-------------------------------------- |
| [`/v2/generate`](/api-reference/api/generate-api/create)                                      |  POST  | Create a lip sync generation            |
| [`/v2/generate/{id}`](/api-reference/api/generate-api/get)                                    |   GET  | Get generation status and output        |
| [`/v2/generations`](/api-reference/api/generate-api/list)                                     |   GET  | List your generations                   |
| [`/v2/generations/estimate`](/api-reference/api/generate-api/estimate-cost)                   |  POST  | Estimate generation cost                |
| [`/v2/assets`](/api-reference/api/assets-api/list)                                            |   GET  | List uploaded assets                    |
| [`/v2/assets/{id}`](/api-reference/api/assets-api/get)                                        |   GET  | Get an uploaded asset                   |
| [`/v2/models`](/api-reference/api/models-api/list)                                            |   GET  | List available models                   |
| [`/v2/batch`](/api-reference/api/batch-api/create)                                            |  POST  | Create a batch of up to 500 generations |
| [`/v2/batch`](/api-reference/api/batch-api/list)                                              |   GET  | List batches                            |
| [`/v2/batch/{id}`](/api-reference/api/batch-api/get)                                          |   GET  | Get batch status                        |
| [`/v2/organizations/webhook/secret`](/api-reference/api/organizations-api/get-webhook-secret) |   GET  | Get your webhook signing secret         |

## Quick Example

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

const sync = new SyncClient();

const response = await sync.generations.create({
    input: [
        { type: "video", url: "https://your-cdn.com/video.mp4" },
        { type: "audio", url: "https://your-cdn.com/audio.wav" },
    ],
    model: "lipsync-2",
});

console.log(`Job ID: ${response.id}`);
```

## SDKs

Official client libraries wrap the REST API with typed methods:

* **TypeScript/JavaScript** -- `npm i @sync.so/sdk` ([GitHub](https://github.com/synchronicity-labs/sync-typescript-sdk)) | [Guide](/developer-guides/sdk-typescript)
* **Python** -- `pip install syncsdk` ([GitHub](https://github.com/synchronicity-labs/sync-python-sdk)) | [Guide](/developer-guides/sdk-python)

## OpenAPI Specification

The full OpenAPI 3.1 specification is available at:

```
https://sync.so/openapi.json
```

Use this spec to generate client libraries, import into Postman or Insomnia, or integrate with API development tools.

## What models are available?

| Model                                 | Best For                                                                                                 |
| :------------------------------------ | :------------------------------------------------------------------------------------------------------- |
| [sync-3](/models/sync-3)              | Most advanced production-quality lipsync for complex scenes, 4K output, obstructions, and extreme angles |
| [lipsync-2](/models/lipsync)          | Fast, cost-efficient lip sync with solid quality                                                         |
| [lipsync-2-pro](/models/lipsync)      | High-quality lip sync with enhanced detail and fidelity                                                  |
| [lipsync-1.9.0-beta](/models/lipsync) | Legacy model optimized for maximum speed                                                                 |
| [react-1](/models/react)              | Expressive lip sync with facial expressions and head movements (up to 15s)                               |

## Guides

* [Authentication](/api-reference/guides/authentication) -- API key setup and security best practices
* [Idempotent Requests](/api-reference/guides/idempotency) -- Retry one action with the same key without creating duplicate generations
* [Concurrency & Rate Limits](/api-reference/guides/rate-limits) -- Rate limits, concurrency limits, and retry strategies
* [Batch Processing](/api-reference/guides/batch-processing) -- Process up to 500 generations in a single operation
* [Webhooks](/api-reference/guides/webhooks) -- Real-time status notifications for async workflows

## Frequently Asked Questions

#### What is the Sync Labs API base URL?

The base URL for all Sync Labs API requests is `https://api.sync.so`. All endpoints are served over HTTPS. Append the endpoint path to this base URL when making requests, for example `https://api.sync.so/v2/generate` for creating a lip sync generation.

#### How do I authenticate?

Include your API key in the x-api-key header with every request. The SDK handles this automatically when you set the SYNC\_API\_KEY environment variable. Create an API key from the API Keys page in your dashboard. See the Authentication guide for security best practices.

#### What SDKs are available?

Sync Labs offers official SDKs for Python and TypeScript. Install the Python SDK with pip install syncsdk and the TypeScript SDK with npm i @sync.so/sdk. Both SDKs provide typed methods for creating generations, polling status, estimating costs, and managing assets.

#### Is there an OpenAPI specification?

Yes. The full OpenAPI 3.1 specification is available at [https://sync.so/openapi.json](https://sync.so/openapi.json). You can use this spec to generate client libraries, import endpoints into Postman or Insomnia, or integrate with any OpenAPI-compatible tool.

## API Quick Reference

### Base URL

`https://api.sync.so`

### Authentication

Header: `x-api-key: YOUR_API_KEY`

### OpenAPI Specification

`https://sync.so/openapi.json`

### Endpoints

| Method | Path                       | Description                             |
| ------ | -------------------------- | --------------------------------------- |
| POST   | `/v2/generate`             | Create a lip sync generation            |
| GET    | `/v2/generate/{id}`        | Get generation status and output        |
| GET    | `/v2/generations`          | List your generations                   |
| POST   | `/v2/generations/estimate` | Estimate generation cost                |
| GET    | `/v2/assets`               | List uploaded assets                    |
| GET    | `/v2/assets/{id}`          | Get an uploaded asset                   |
| GET    | `/v2/models`               | List available models                   |
| POST   | `/v2/batch`                | Create a batch of up to 500 generations |
| GET    | `/v2/batch`                | List batches                            |
| GET    | `/v2/batch/{id}`           | Get batch status                        |

### Available Model IDs

| Model ID             | Type                                                                                                     |
| -------------------- | -------------------------------------------------------------------------------------------------------- |
| `sync-3`             | Most advanced production-quality lipsync for complex scenes, 4K output, obstructions, and extreme angles |
| `lipsync-2`          | Fast, cost-efficient lipsync with solid quality                                                          |
| `lipsync-2-pro`      | High-quality lipsync with enhanced detail and fidelity                                                   |
| `lipsync-1.9.0-beta` | Legacy model optimized for maximum speed                                                                 |
| `react-1`            | Expressive lip sync with facial expressions and head movements (max 15s)                                 |

### SDK Install Commands

* Python: `pip install syncsdk`
* TypeScript: `npm i @sync.so/sdk`