Lost the bulk-run queue id? There is no list endpoint; replay the key

Sume has no list-queues or cancel-queue endpoint. If you lost the frq_ id, replay the create with the same key and body to get the queue back.

5 min readSume
All posts

If your process crashed after POST .../bulk-runs returned but before you stored the frq_... queue id, you can still get it back: repeat the same create with the same Idempotency-Key and the identical { concurrency, items } body. Sume answers 202 with the queue that already exists. There is no list-queues endpoint and no cancel-queue endpoint in the public API, so the key is your only handle on a queue you did not write down.

What the API gives you and what it does not

The bulk-run surface is deliberately small: POST /v1/formats/{format_id}/bulk-runs, the vanity twin POST /v1/formats/{handle}/{slug}/bulk-runs, and GET /v1/format-run-queues/{queue_id}. Each child is an ordinary Format run, so you can cancel one with POST /v1/format-runs/{run_id}/cancel, but nothing cancels the whole queue in one call.

Bulk-run endpoints and limits (read 2026-10-05)
NeedAvailable?How
Create a queueYesPOST /v1/formats/{handle}/{slug}/bulk-runs, 1-100 items, concurrency 1-16
Read a queueYes, with the idGET /v1/format-run-queues/{queue_id}
List queuesNoReplay the key, or store ids yourself
Cancel a queueNoCancel each child run
Queue-level webhookNoPer-item communication.webhook_url, plus polling

Write the id down in the right order

The safe sequence has three steps. First, generate the batch key and write it to your database as pending before the network call. Second, call create and write the data.id next to the key. Third, poll the queue and update status. If the process dies between the first and second steps, a restart finds a pending key with no queue id and replays the create with the identical body. That is why you must store the body (or a way to rebuild it exactly) alongside the key: a different payload under the same key is a 409, not a recovery.

  • Persist the key and the exact item list before the call.
  • On restart, replay only batches that have a key but no queue id.
  • Compare the returned data.id with any id you already hold.
  • Never mint a new key for a batch that might already exist: that submits the work a second time.

Why this matters more with cheaper clips

As per-second prices fall, batch sizes grow, and a lost 100-item queue is exactly the failure that burns money while you cannot see it. The children still run and bill, and each child is still readable at GET /v1/format-runs/{run_id} once you know its id. Stripe's idempotency guidance is built for this scenario, a connection error where you cannot tell whether the first request landed. Sume's bulk create follows the same contract, and the status-code quirk is covered in a separate post.

Sources

Related posts

More in Formats

All Formats posts

Written by Sume