Format run spend caps: $400 default, $500 maximum, and what null does
How Sume Format run spend caps work: the $400 platform default, a per-run generation_spend_cap_usd up to $500, null for $500, and 0 or above 500 as a 400.

Every Sume Format has a generation spend cap, and a run can never spend more than its effective cap. A Format that never named one reports the platform default of $400. On a single run you can set generation_spend_cap_usd to any number up to $500. Send null and you get the platform maximum, $500. Send 0 or a number above 500 and you get a 400.
How the effective cap is chosen
| You send | The run's cap |
|---|---|
| Nothing | The Format's own cap ($400 if it never set one) |
| A number up to 500 | That number; not clamped to the Format's cap |
| null | $500, the platform maximum |
| 0, or above 500 | 400 invalid; a run that cannot spend cannot deliver |
Reading the cap on a receipt
Read the Format's default cap as generation_spend_cap_usd_micros from GET /v1/formats/...; $400 is 400,000,000 micros. Every receipt shows the effective cap as usage.generation_spend_cap_usd_micros and the spend so far as usage.billable_amount_usd_micros, so a monitor can compute the share used. In the docs example a $120 cap appears as 120000000, and a finished run shows 14959638 micros, about $14.96, or roughly 12.5% of it.
The docs say production live-commerce integrations run with caps of approximately $120, and that a single-scene retry on the same thread needs a fraction of that.
curl -sS -X POST "https://api.sume.com/v1/formats/acme/live-commerce/runs" \
-H "Authorization: Bearer $SUME_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: capped-001" \
-d '{
"instruction": "Use the script as written.",
"generation_spend_cap_usd": 25
}'Caps in bulk and retries
A cap is per run, not per batch. In a 20-item bulk queue each item can carry its own generation_spend_cap_usd, so the worst case for the batch is the sum of the item caps: 20 items at $120 is up to $2,400. A single-scene retry on the same thread needs a fraction of the original cap, so retries do not need the original number.
Keys also matter: a run is billed to the workspace of the key that made the call, and a team Format needs a key created in that team's workspace.
Cap or no cap
There is no way to run with no cap at all. null lifts the ceiling to $500 but does not remove it, and the docs describe it that way on purpose. If a Format regularly needs more than $500 per run, split the work into several runs on the same thread instead, for example one per scene, which also limits the cost of a failed run to the cap of one scene.
Choosing a number
Because Sume does not clamp a number above the Format's cap, a request can raise the ceiling. Treat the cap as a safety net, not a quote: set it to a comfortable multiple of what a typical run spends, and watch billable_amount_usd_micros on completed runs to tune it. In a bulk queue each item can carry its own cap.
A separate failure is 402 insufficient_credits, returned when the workspace cannot fund the run; its next_action is add_funds. Spend meters at the rates on the Sume API pricing page.
Sources
Related posts
More in Formats
- Format webhook: 10 s timeout, 10 attempts, about 3 h 5 min of retries
A slow Format webhook gets 10 tries. Without jitter, the last starts 11,010 s after the first; with 10 s timeouts the span is about 3 h 5 min. Code included.
- Format webhook outcome: ok, degraded or error, and what to do
The format.run.terminal webhook has three outcomes. Verify the sume-v1 signature, then branch: ok uses output, degraded uses artifacts, error is a failed run.
- Restyle last year's holiday clip with the Sume restyle Format
Reuse a holiday video you own with a new look. The Sume restyle Format keeps motion and cuts and changes the style; it does not swap a person or product.
- Same idempotency key, new body: Sume Format run 409 vs 200 replay
Same Idempotency-Key and body on a Sume Format run gives 200 with idempotency_hit true. A changed body or attachments gives 409. Bulk replays stay 202.
Written by Sume