40 Omni clips, 3 fail, 2 canceled while queued: where the wallet ends
Forty 8-second Omni clips at 720p reserve $40.00. With 3 failures and 2 cancels before start, the wallet captures $35.00.

If you submit 40 Omni Flash 1.1 clips of 8 seconds at 720p, Sume reserves $1.00 for each, or $40.00 in total. When 3 jobs fail and 2 queued jobs are canceled before they start, those 5 holds are refunded, and the wallet ends $35.00 lower than it started, which is the 35 clips that completed.
fal lists Omni at $0.10 per second at 720p (read 2026-10-07), so 8 seconds is $0.80 at list and $1.00 on Sume after the 1.25 margin.
The ledger in three states
The usage ledger records each job as reserved, captured or refunded. Reserved is the hold at submit. Captured is the charge after success. Refunded is a hold released after a failure or a cancellation before work starts.
| Outcome | Jobs | Reserved | Captured | Refunded |
|---|---|---|---|---|
| Completed | 35 | $35.00 | $35.00 | $0.00 |
| Failed | 3 | $3.00 | $0.00 | $3.00 |
| Canceled before start | 2 | $2.00 | $0.00 | $2.00 |
| Total | 40 | $40.00 | $35.00 | $5.00 |
What to quote
The usage dashboard docs give one rule for reporting spend: quote debited_usd_micros, the amount the wallet deducted, not the held amount. Holds that are still open are not spend yet, and refunded holds are not spend at all.
While the batch runs, the wallet balance can look $40.00 lower than it ends. Do not read that as the cost. On a Free plan only 6 jobs are accepted at once and on Pro 24, so a 40-job batch is submitted in waves, and the hold at any moment is at most the accepted capacity times $1.00: $6.00 on Free and $24.00 on Pro.
- Cancel works only before generation starts; after that cancel returns 409 and the job runs on.
- A failed job is refunded; a completed clip you dislike is not.
- GET /v1/usage lists the ledger entries, including reservations, captures and refunds.
What to check in the ledger
After the run, list the entries with GET /v1/usage and group them by job. Each completed job should show a reservation and a capture of the same amount; each failed or canceled job should show a reservation and a refund. A job with a reservation and neither is still open.
If the totals do not match the table above, look first for jobs that were still queued or running when you read the ledger. Wait until every job has reached a final state before you reconcile.
Sizing the wallet for the next batch
The next batch of 40 needs the same $40.00 only if all 40 are accepted at once. With a capacity of 24 on Pro, at most $24.00 is held at one time, and each completed job releases its slot. Keep a balance above the held peak, plus the amount you expect to spend for jobs not yet submitted, or later submits will return 402 insufficient_credits.
Reconcile before you rerun
Rerun only the 3 failures, not the batch. Three more clips cost $3.00. See do failed jobs cost money for the refund path, and preview the queue and balance for a pre-submit check.
Sources
Related posts
More in Developers
- generation_spend_cap_usd on a Format run: null is $500, 0 is a 400
On a Format run request, omit generation_spend_cap_usd for the Format cap, send a number up to 500, null for the $500 maximum. 0 or above 500 returns 400.
- Get transcript text from a captioned video: caption jobs return none
A Sume caption job returns the burned video, not the transcript. For text and word times run STT or video inspect with transcribe. Prices and a recipe.
- Go client for a Sume bulk queue: transient polls and exit status
Create a Sume bulk queue from Go, poll the status_url with a doubling gap, treat 429 and 503 as transient, and exit 1 on failed items. Standard library only.
- Handle every Sume API error with one switch on next_action
Sume errors share one envelope. Branch on next_action, retryable and retry_after_seconds, and your client handles new codes without a code change. JS sample.
Written by Sume