Overview
Translation batches let you submit many translations in one request instead of callingPOST /v3/video-translations once per job. You send an array of translation 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 translation payload — the exact shape POST /v3/video-translations accepts — so anything you can translate on its own can be batched, in either Speed or Precision mode.
A batch holds up to 100 items. A single payload targeting multiple
output_languages expands to one batch item per language, and the expanded count is what the 100-item cap applies to. Each item is created and processed independently, so one bad source does not fail the rest.Create a Batch
- Endpoint:
POST /v3/video-translations/batches - Purpose: Queue up to 100 translation payloads and return a
batch_idimmediately.
Quick Example
One source video fanned out to three languages — this creates three batch items:Response
202 Accepted — the batch is queued, not finished. Use the returned batch_id to poll for progress.
Request Body
Each entry in
video_translations takes the full set of translation options — video (as a url or asset_id), output_languages (use GET /v3/video-translations/languages for valid values), mode (speed or precision), plus captions, brand glossary, stock voice, partial-range, and format controls. See POST /v3/video-translations for every field.
Idempotency
Pass anIdempotency-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/video-translations/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 translation batches it holds the video translation id. Use it with GET /v3/video-translations/{video_translation_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/video-translations/statuses - Purpose: Check up to 100 translations 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_urlon the batch to be notified once, when the last item reaches a terminal state, or subscribe tovideo_translate.success/video_translate.failwebhook events for per-item notifications. - Polling (pull). Call
GET /v3/video-translations/batches/{batch_id}and readcounts_by_status. Items surface their translation id as soon as the job is created, so you can start fetching finished translations withGET /v3/video-translations/{video_translation_id}while the rest of the batch is still processing.

