Bulk run items ignore on_active_run skip and reject

A Format bulk queue runs every item with on_active_run allow, so skip or reject on an item will not serialize it. Set concurrency to control parallel runs.

5 min readSume
All posts

Inside a bulk queue, on_active_run does nothing you can rely on: the bulk controller executes every item with on_active_run: "allow", whatever the item says. If you want one child at a time, set the queue's concurrency to 1 instead of putting skip or reject on the items.

This trips people who copy a single-run body into a batch. On a single POST …/runs, skip records a skipped run when another run of that Format is in flight and reject answers 409 format_run_in_progress. Neither reaches the queue's children.

What each setting does on a single run versus a queue item

The default for a Format run is allow: runs go concurrently, and workspace generation concurrency still applies. Scheduled Actions default to skip, which is why the call docs warn not to copy an Action body into a Format call. The bulk docs add one more rule to that warning: the same field is overridden on every item.

on_active_run on a single run and on a bulk item (read 2026-10-03)
ValueOn POST …/runsOn a bulk item
allow (default)Runs concurrently with any run in flightUsed for every item
skipRecords a skipped run instead of startingIgnored, the item runs
reject409 format_run_in_progressIgnored, the item runs

Use the window to control parallelism

concurrency is a required integer from 1 to 16 and says how many child runs stay in flight at once. The server starts the next queued item as soon as a slot frees, so a window of 1 gives you serial execution without any per-item flag. With 8 items and a window of 3, the create response already shows three running and five queued.

A larger window does not bypass admission. Each child still goes through ordinary Format-run admission: wallet, workspace generation concurrency and spend caps. A child that cannot start becomes a failed item with run_id: null, the create has already returned 202, and the window refills from the remaining items.

curl -sS -X POST "https://api.sume.com/v1/formats/sume/sume-close-camera-ugc/bulk-runs" \
  -H "Authorization: Bearer $SUME_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{
    "concurrency": 1,
    "items": [
      { "instruction": "Hook variant A", "generation_spend_cap_usd": 5 },
      { "instruction": "Hook variant B", "generation_spend_cap_usd": 5 }
    ]
  }'

Why this suits creative tests

A creative test often wants the opposite of single-flight: many variants of one Format at once, which is what allow gives you. Format video runs call generation tools such as the Video Router catalog, which includes seedance-2.5, so the number of live clips is bounded by your window and your workspace's generation concurrency, not by a flag on the item.

Because the queue has no webhook and no queue-level cancel, pair a wide window with per-item caps. The worst-case spend is the item count times the per-item cap, and completed on the queue only means every item is terminal. Branch on counts.failed and counts.canceled, and read why a child failed on its own run receipt.

Sources

Related posts

More in Formats

All Formats posts

Written by Sume