Batch-process up to 200 videos
Batch-process up to 200 videos in one POST against one schema, track progress with a single job id, and collect every result together.
Why batches
There is no separate batch endpoint. videos is a list on every submission, so batching means passing a longer one — nothing about the call changes between one video and two hundred.
What a batch buys you is one id and one call. Each video is still fetched and extracted as its own job, so one video without captions cannot fail the other ninety-nine, and one slow video does not hold the rest back. Several run at once, so a long list finishes well before the sum of its videos, and the price is the same per video however you group them.
Submitting
Reading progress
One id means one call to poll, not one per video. counts shows where the job has got to; when queued and processing reach zero the job has settled and each video’s rows arrives with it.
The 200 limit
A single call carries at most 200 videos. Over that it is refused outright with batch_too_large and the message 200 video limit per batch exceeded — nothing is queued and nothing is charged, so splitting the list and resubmitting is safe. Split on your side into calls of 200 and run them alongside each other.
Results arrive together
A job hands over its rows once every video in it has settled, not one at a time. That is why polling costs nothing: while anything is still running, every video’s rows is null and there is nothing to consume by accident.
The consequence for a long run is that the whole list is handed over in one response, when its last video finishes. If you want rows sooner than that, send smaller calls: each one settles as soon as its own videos are done, at the same price per video.