Skip to main content

Overview

Lipsync batches let you submit many lipsync jobs in one request instead of calling POST /v3/lipsyncs once per job. You send an array of lipsync payloads, get back a single batch_id right away, and poll that one id for the status and id of every item. Each item in a batch is a standard lipsync payload — the exact shape POST /v3/lipsyncs accepts — so anything you can lipsync on its own can be batched, in either Speed or Precision mode.
A batch holds up to 100 items. Each payload becomes exactly one batch item, and each item is created and processed independently — one bad source does not fail the rest.

Create a Batch

  • Endpoint: POST /v3/lipsyncs/batches
  • Purpose: Queue up to 100 lipsync payloads and return a batch_id immediately.

Quick Example

Response
The call returns 202 Accepted — the batch is queued, not finished. Use the returned batch_id to poll for progress.

Request Body

Each entry in lipsyncs takes the full set of lipsync options — video and audio (each as a url or asset_id), mode (speed or precision), plus captions, partial-range, and format controls. See POST /v3/lipsyncs for every field.

Idempotency

Pass an Idempotency-Key header to make retries safe — replaying the same key returns the original batch instead of creating a duplicate.

Get a Batch

  • Endpoint: GET /v3/lipsyncs/batches/{batch_id}
  • Purpose: Return the batch’s aggregate status plus one page of items with their id and per-item status.

Quick Example

Response
The batch read model is shared across the batch APIs, so the per-item id field is named video_id — for lipsync batches it holds the lipsync id. Use it with GET /v3/lipsyncs/{lipsync_id} for the full record and download URL.

Query Parameters

The response shape matches the video batch: aggregate status (processing, completed, or failed), total_items, counts_by_status, and a paged items array where each item carries item_index, status (queued, processing, completed, or failed), its id, and error details when failed.

Bulk Statuses

  • Endpoint: GET /v3/lipsyncs/statuses
  • Purpose: Check up to 100 lipsyncs in one request — across batches, or for jobs created individually.
Statuses are queued, processing, completed, or failed, plus not_found for unknown or unowned ids.

Tracking completion

  • Webhook (push). Set callback_url on the batch to be notified once, when the last item reaches a terminal state. See Webhooks to register an endpoint and verify signatures.
  • Polling (pull). Call GET /v3/lipsyncs/batches/{batch_id} and read counts_by_status. Items surface their lipsync id as soon as the job is created, so you can start fetching finished renders with GET /v3/lipsyncs/{lipsync_id} while the rest of the batch is still processing.