Bulk product videos for Prime Big Deal Days: 100 Format runs

Queue up to 100 Format runs in one bulk request with a concurrency window of 1 to 16, then poll one queue id. Setup, limits and the traps to avoid.

4 min readSume
All posts

To bulk-generate product videos for a sale, send one POST /v1/formats/{handle}/{slug}/bulk-runs request with up to 100 items and a concurrency of 1 to 16. Each item is an ordinary Format run, and you poll one queue id instead of 100 runs.

Amazon's announcement says Prime Big Deal Days runs October 6-7, 2026, with 48 hours of deals across more than 35 categories, including beauty and fashion. That is a short window, so the product clips need to be queued before it starts. Queue behavior below is from Sume's Bulk runs page, read 2026-10-01.

What does one bulk request look like?

The body has two keys: concurrency and items. Each entry in items takes the same body as a single Format run, so a product row can carry its own instruction and input. An accepted create returns 202, and the first concurrency items are already in flight.

curl -sS -X POST "https://api.sume.com/v1/formats/YOUR_HANDLE/product-promo/bulk-runs" \
  -H "Authorization: Bearer $SUME_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{
    "concurrency": 3,
    "items": [
      { "instruction": "clip 1", "input": { "url": "https://example.com/1.jpg" } },
      { "instruction": "clip 2", "input": { "url": "https://example.com/2.jpg" } }
    ]
  }'

What are the limits?

Bulk queue limits from the Sume docs, read 2026-10-01.
FieldRule
items1 to 100 entries, in order
concurrencyRequired integer, 1 to 16
Scopeformats:write to create, formats:read to poll
Queue webhookNone; communication.webhook_url is per item
CancelNo queue cancel; cancel a child run instead

How do I know the batch finished?

Poll GET /v1/format-run-queues/{queue_id}. A completed queue means every item is terminal, not that every item succeeded, so branch on counts.failed. Read each finished child at GET /v1/format-runs/{run_id}. A 429 or 503 during polling is transient; back off, because the queue keeps working.

What about format and retries?

Mint a fresh Idempotency-Key per batch: replaying a spent key returns 202 with the old queue, and the same key with a different payload is 409 idempotency_conflict. If you assemble the finished clips afterwards, Timeline 1.0 renders 1080x1920 MP4 by default and accepts 1 to 200 video slots; see assemble long-form video. For the shorter overview, read Format bulk runs.

Sources

Related posts

More in Use cases

All Use cases posts

Written by Sume