Skip to main content

Overview

Video batches let you submit many videos in one request instead of calling POST /v3/videos once per video. You send an array of video payloads, get back a single batch_id right away, and poll that one id for the status and video_id of every item. Each item in a batch is a standard video creation payload — the exact shape POST /v3/videos accepts — so any Digital Twin, image, or Cinematic Avatar video you can create on its own can be batched.
A batch holds up to 100 items. Submission is asynchronous: the response acknowledges the batch, and each video renders on its own. Poll the batch to collect video ids as they become available.

Create a Batch

  • Endpoint: POST /v3/videos/batches
  • Purpose: Queue up to 100 video creation 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 videos is discriminated by type:

Idempotency

Pass an Idempotency-Key header to make retries safe — replaying the same key returns the original batch instead of creating a duplicate. If a request with that key is still being processed, the API responds with 409.

Get a Batch

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

Quick Example

Response

Query Parameters

Response Fields

Each entry in items:

Tracking completion

You have two ways to know when work finishes, and they pair well:
  • 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/videos/batches/{batch_id} and read counts_by_status. Individual items surface a video_id the moment their video is created, so you can start downloading finished videos while the rest of the batch is still rendering.
For large batches, page through items with limit and next_token until has_more is false, then fetch each finished video with GET /v3/videos/{video_id}.