A Sume bulk queue item failed: read the child receipt first
A Sume queue item only says format_run_failed. Open the child run by run_id, compare spend to the cap, read output_error, then retry with previous_run_id.

When a bulk queue item shows failed, the queue only tells you format_run_failed or, for an item that never started, a create-run code. The reason is on the child run: fetch GET /v1/format-runs/{run_id} and read its error, output_error and usage. Then decide whether to retry, raise the cap, or fix the input.
What the queue item can tell you
| Child outcome | Item `error` | `run_id` |
|---|---|---|
| Completed | null | Set |
| Failed | format_run_failed | Set |
| Canceled | format_run_canceled | Set |
| Could not start | The create-run code, for example format_run_failed_to_start | null |
Triage in this order
run_idisnull: the item never began. The error is an admission failure such as a wallet or concurrency problem. Fix that and resubmit that item.usage.billable_amount_usd_microsagainstusage.generation_spend_cap_usd_micros: a run that tried to spend more than its cap fails with the generic code, so a spend at the cap points to a cap that is too low.output_error: if you bound anoutput_schema, check why the projection failed before readingoutput.filled_by:projectionmeans the run did not submit the object itself.- Otherwise read the run events through
events_urlon the receipt.
Retry without paying twice for the same work
To retry a failed run with context, send its id as previous_run_id on a new run of the same Format. That continues the conversation as one more turn instead of starting over. For a batch, put the retry items in a new queue with a new Idempotency-Key. A replayed key returns the old queue, so reusing the key will not retry anything.
A narrow retry is cheaper than a full one. If the failure was a single scene, tell the new turn which scene to redo in the instruction and let previous_run_id carry the rest. Read the first run's output for the scenes that did finish so that the instruction can say what to keep.
Design for partial results
If one slot of a multi-scene video fails, a strict schema can turn a mostly good run into output: null. Make optional fields nullable and avoid minItems on arrays you want to receive partially. Pair that with a primary_output_key so a run without the deliverable still ends as failed with primary_output_missing, while the good scenes remain readable.
Do not cancel the queue
There is no cancel-queue endpoint. If a batch is going wrong, cancel the child runs with POST /v1/format-runs/{run_id}/cancel. The queue marks each as canceled and starts the next queued item, so cancel children from the back of the list first or the window will refill.
Sources
Related posts
More in Formats
- 100 Omni proofs, then 20 finals: two bulk queues cost $45, not $112.50
Run 100 weekly ad proofs at 360p in one Sume bulk queue, approve 20, then queue those at 1080p. Video cost: $22.50 plus $22.50 instead of $112.50.
- Cancel one episode in a running Sume bulk queue: what it frees
There is no cancel-queue endpoint on Sume. Cancel one item run and its slot frees for the next episode. A canceled run delivers no webhook; read cancel_effect.
- Cast pack for a series Format run: the 30-file attachment budget
One Format run carries 30 media files in total, at most 30 images, 10 videos and 10 audio, counting URLs in input. How to fit a cast and two locations in.
- Continue a scene in the next Shorts episode: last frame as first frame
Pull the last frame of episode 1 with Sume video frames and use it as the first frame of an Omni clip for episode 2. Sequence, API calls and an 8-second price.
Written by Sume