Selling on many channels: queue 100 product videos overnight

Amazon says over 95% of independent sellers sell on several channels. Queue up to 100 Sume Format runs with a concurrency window and wake up to a media set.

5 min readSume
All posts

To make a product video for every SKU without babysitting each one, create a bulk queue on a Sume Format: one POST with up to 100 items and a concurrency number, then poll the queue. Sume runs the items as ordinary Format runs on its side, so your laptop does not need to stay open.

The reason this matters now: Amazon's multichannel announcement says over 95% of independent sellers sell across multiple channels, and independent sellers created 12 million or more AI-generated listings in 2025 (read 2026-10-04). More listings, more channels, more media to produce.

What is a bulk queue?

Per the docs, a bulk request is a server-side queue of ordinary Format runs, not a different engine. Each item is one sandbox, one agent turn and one run receipt. There is no public list-queues or cancel-queue endpoint; you cancel a child run instead.

Bulk runs endpoints, from Sume docs, read 2026-10-04
Method and pathScopePurpose
POST /v1/formats/{handle}/{slug}/bulk-runsformats:writeCreate a queue of up to 100 runs
GET /v1/format-run-queues/{queue_id}formats:readPoll the queue
GET /v1/format-runs/{run_id}formats:readRead one child run
POST /v1/format-runs/{run_id}/cancelformats:writeCancel one child

How do you create the queue?

Send one item per SKU, each with an instruction and an input. A valid create returns 202. Use a key derived from the batch name for the Idempotency-Key, so repeating the call returns the original instead of making a second queue. Service-account keys cannot create Format runs or bulk queues, so use a normal API key that carries formats:write.

import os, requests

items = [
    {"instruction": "9:16 clip for " + s, "input": {"url": u}}
    for s, u in [("SKU-1", "https://example.com/1.jpg"),
                 ("SKU-2", "https://example.com/2.jpg")]
]
r = requests.post(
    "https://api.sume.com/v1/formats/" + os.environ["SUME_FORMAT"] + "/bulk-runs",
    headers={
        "Authorization": "Bearer " + os.environ["SUME_API_KEY"],
        "Idempotency-Key": "holiday-batch-1",
    },
    json={"concurrency": 3, "items": items},
    timeout=60,
)
print(r.status_code, r.text[:500])

What should you set for concurrency?

The concurrency window is how many items are in flight at once; the first window of items is already running on the 202 receipt when the list is longer. Start small, such as 3 as in the docs example, and watch the queue. A higher number finishes sooner but spends sooner.

How do you know what the batch cost?

Each child run receipt carries a usage object with the generation spend and its cap. The docs call GET /v1/usage the authoritative billing record, so read the batch cost there by run_id. See our note on adding AI media cost per SKU.

Sources

Related posts

More in Formats

All Formats posts

Written by Sume