OpenAI Batch has no video endpoint listed: where a video batch goes

The OpenAI Batch guide lists text, embeddings, moderation and image endpoints but no video endpoint. Here is what that leaves for a 100-video holiday job.

5 min readSume
All posts

Can you render a holiday video catalog through OpenAI's Batch API? The OpenAI Batch guide (read 2026-10-04) lists /v1/responses, /v1/chat/completions, /v1/embeddings, /v1/completions, /v1/moderations, /v1/images/generations and /v1/images/edits. It does not list a video endpoint. The same page says GPT Image 2.5 supports batch image generation and editing. So on that page, batch covers stills and text, and a video batch needs another route.

One route is a Sume bulk queue: up to 100 Format runs per queue, each producing a video and a typed receipt. Both services can sit in one pipeline, with each doing the part it is documented to do.

A split pipeline

Use the batch API for what it lists: write copy with chat completions or responses, and make stills with the image endpoints. Then pass the finished text and image URLs to a Sume bulk create. Put the copy in each item's instruction and the image links in attachments as image_url entries, a maximum of 30 per run. Sume fetches each image when the run is created.

The page states the discount, 50%, and the 24-hour completion window for the batch stage. It makes no statement about video, so this post makes none either.

What to verify yourself

Vendor endpoint lists change. The guide I read on 2026-10-04 is the source for this post, and a video endpoint could appear on it later. Before you design around the absence, read the current page, and check the batch input format for any new endpoint.

On the Sume side, check the Format you plan to use: read its description with GET /v1/formats/{handle}/{slug}, confirm its API call trigger is on, and run one item before queueing a hundred. A Format whose trigger is off returns 409 format_api_trigger_disabled on the create call.

Stage by stage

Which stage lives where, OpenAI Batch guide and Sume docs read 2026-10-04
StageWhere it runsLimit from the docs
CopyOpenAI Batch, /v1/responsesUp to 50,000 requests, 200 MB input file
StillsOpenAI Batch, /v1/images/generations or editsSame batch limits
VideoSume bulk run1 to 100 items, concurrency 1 to 16
DeliveryRun webhook or queue pollPer-item webhook; no queue webhook

Join the stages

The function below turns two finished lists, copy by SKU and image URLs by SKU, into queue items, and skips any SKU missing either one. It prints the skipped SKUs so you can resubmit them to the batch stage.

copy = {"mug-01": "Warm and bright.", "mug-02": "Gift-ready."}
images = {"mug-01": "https://cdn.example.com/mug-01.png"}
items, skipped = [], []
for sku, text in copy.items():
    url = images.get(sku)
    if not url:
        skipped.append(sku)
        continue
    items.append({
        "instruction": text,
        "input": {"sku": sku},
        "attachments": [{"type": "input_image", "image_url": url}],
    })
print(len(items), "items; resubmit:", skipped)
assert items and skipped == ["mug-02"]

Sources

Related posts

More in Comparisons

All Comparisons posts

Written by Sume