Video Batch
Submit many text-to-video and image-to-video requests under one model in a single call. Every request in a batch is charged at 50% of its single-request price.
Video Batch
Generate several videos with one request. A batch takes 3 to 20 requests that all run on the samemodel_id, queues each one as its own video, and returns one batch_id you can poll for all of them together.
Each request in a batch is billed at half the price the matching single endpoint (Text to Video Ultra or Image to Video Ultra) would charge. In exchange, a request that has not finished 8 minutes after submission is failed and refunded automatically.
model_id values are wan2.2, ltx-2.3, h3-minimax-t2v, h3-minimax-r2v and h3-minimax-start-end-frame. Requests with an init_image take the image-to-video path; the rest take text-to-video. Both kinds can be mixed in one batch.Request
Make aPOST request to below endpoint and pass the required parameters in the request body.
Body
requests— 3 to 20 entries. Each entry accepts the same parameters as the single text-to-video / image-to-video endpoint for the chosen model.defaults— optional. Merged under every entry; a value set on an entry wins over the same key indefaults.track_id— an entry’s owntrack_idis used for its webhook and result; entries without one inherit the top-level value.webhook— called once per request as it finishes, exactly as the single endpoints do, with that request’sidandtrack_id.
Validation
The batch is validated as a whole before anything is queued. If any entry is invalid, the entire batch is refused, nothing is queued and nothing is charged. The error names the first failing entry anderrors lists every one:
Billing
Every request in a batch is charged at 50% of its single-request price, at submission. The estimate is computed per entry — so a 10-second request costs twice a 5-second one, then both are halved — and the batch is only accepted if your plan allowance or wallet covers the discounted total:refunded: true. A request that finishes later than that is not delivered.
Concurrency
A batch of N counts as N queued requests against your plan’s request queue limit. The whole batch must fit in the slots you have free at submission — a plan with 10 slots and 4 videos already processing can submit a batch of at most 6:RateLimit-* response headers reflect the full weight.
Response
The response is keyed like a single video response —status, id, output, message, tip — with the batch fields on top. id and batch_id are the same integer, drawn from the same counter as video ids, so a batch id never collides with a video id. Each entry in results is the same body the matching single endpoint would have returned for that request, plus its index and track_id.
batch_id, or any single request on Fetch Video with its own id.Body
Your API Key used for request authorization
The video model every request in the batch runs on
wan2.2, ltx-2.3, h3-minimax-t2v, h3-minimax-r2v, h3-minimax-start-end-frame 3 to 20 requests. Each takes the same parameters as the single text-to-video / image-to-video endpoint for the chosen model; an entry with init_image takes the image-to-video path
3 - 20 elementsParameters merged under every entry. A value set on an entry wins over the same key here
Called once per request as it finishes, with that request's id and track_id
Inherited by every entry that does not set its own
Response
Batch accepted, or refused whole (validation_error, insufficient_balance, rate_limited). Always HTTP 200.
- Option 1
- Option 2
Keyed like a single video response (status, id, output, message, tip) with the batch fields on top
processing on submit and while any request is still running; success once all succeeded; failed once all failed
processing, success, failed The batch id. Same value as batch_id; drawn from the same counter as video ids so the two never collide
Every finished video across the batch in request order; empty on submit
On submit: the URL every request will publish to, in request order
On submit: URL to poll the whole batch
On submit: the largest per-request estimate, in seconds
On submit: the envelope inputs (model_id, track_id, webhook)
On submit: requests not finished by then are failed and refunded
On submit: fraction taken off every request's single-request price

