Format run spend cap: generation_spend_cap_usd max 500, zero rejected
How generation_spend_cap_usd works on a Sume Format run: the 500 ceiling, why 0 is rejected, null meaning 500, and what the receipt does and does not include.

generation_spend_cap_usd limits generation spend for one Format run. The maximum is 500. Sending null means 500, and 0 is rejected. If you send nothing, the Format default applies, which is a 400 dollar cap if the Format never set one. Set it every time you call from code; the default is a ceiling, not a budget.
The LLM turn that drives the run is not part of billable_amount_usd_micros in the receipt. The receipt shows debited, held, refunded and final amounts, but GET /v1/usage?run_id= is the authoritative record.
Values and outcomes
| Value sent | Result |
|---|---|
| omitted | Format default cap, 400 dollars if never set |
| null | 500 |
| 0 | Rejected |
| 1 to 500 | Used as the cap |
| above 500 | Over the maximum |
Reconcile with usage
After the run is terminal, read GET /v1/usage?run_id=<run id> and book that figure, not the receipt estimate.
Sources
Related posts
More in Formats
- Webhook or polling for Sume Format runs, and the 1 MiB payload rule
Pick between the signed terminal webhook and polling status_url for Sume Format runs: delivery limits, dedupe keys, and what a payload over 1 MiB looks like.
- Format structured output: anyOf passes, oneOf and allOf are rejected
Which JSON Schema keywords a Sume Format output_schema accepts, the 400 output_schema_invalid shape, and how it lines up with OpenAI strict structured outputs.
- Format output filled_by: agent versus projection, exact URLs
Sume Format runs fill structured output either through the agent or by projection. Learn which one ran, what projection can see, and the exact-URL gate.
- Sume webhook missed? POST /v1/format-runs/{run_id}/webhook/redeliver
Replay a Format run webhook without rerunning: the redeliver endpoint, the formats:write scope, and the two 409 errors for no webhook or a run still going.
Written by Sume