Replace your Sora spend view: log usage.cost per video job
If your Sora spend view is gone, record Sume's usage.cost on every completed video job and total it by feature, account and model in your own table.

After Sora, the cheapest way to keep a spend view is to write it yourself. Sume's poll response for a completed video job includes usage.cost, which the video generation docs describe as the Sume billable amount, and Sume reserves list price times 1.25 on submit. Log the job id, model, duration, resolution and usage.cost for every job into one table, then group by feature and customer. Reconcile monthly against GET /v1/usage.
What to record per job
The poll response carries the job id, model and usage. Your own request carries the feature and customer. Together they answer the questions a Sora dashboard used to.
| Column | Where it comes from |
|---|---|
| job_id | Submit response id |
| model | Request, echoed in poll response |
| duration, resolution, aspect_ratio | Your request |
| usage.cost | Poll response when completed |
| feature, customer_id | Your application |
| status | Terminal status from the job |
Estimate before you spend, record after
Two numbers matter. The reservation happens at submit: the docs say the workspace USD balance is reserved at provider list times 1.25 for every model. The captured amount is what usage.cost shows on completion. A failed job releases the reservation where applicable, per the errors guide, so log failures with zero cost rather than dropping the row; failure rate per model is a useful column.
Reconcile with the ledger
GET /v1/usage returns ledger entries such as reservations, captures and refunds, and GET /v1/balance returns the USD balance. A nightly job that sums your usage.cost column per day and compares it with captures in the ledger will catch missed callbacks, jobs you never polled, and retries that created a second job because the idempotency key changed.
Limits of this approach
Your table only sees jobs your code submitted. Jobs created from the dashboard or by an agent are in the ledger but not in your table. Treat the ledger as the total and your table as the explanation for the part you control. Unknown remains unknown: if the totals differ, report the gap rather than allocating it.
For pricing inputs, read pricing_skus from the model list, per the API reference catalog routes, and avoid copying numbers into code.
Sources
Related posts
More in Pricing
- Runway Aleph 2.0 at 140 credits per 5 seconds vs Gen-4.5 at 60
Runway lists Aleph 2.0 at 140 credits per 5 seconds and Gen-4.5 at 60: $1.40 to $3.36 against $0.60 to $1.44 a clip by plan. Aleph costs 2.3 times more.
- Runway Gen-4.5 and Gen-4 Turbo list one rate: drafting on Sume at 480p
Runway's pricing page gives Gen-4.5 12 credits and Gen-4 Turbo 5 credits per second in a single 1080p column. Where a cheaper 480p draft tier exists on Sume.
- Runway Lyria 3 Pro: 8 credits a song, in dollars, vs Sume's $0.125
Runway lists Lyria 3 Pro at 8 credits a song, which is $0.08 to $0.19 depending on plan. Sume's Music Router charges $0.125 per generation for every model.
- Runway 5 vs 15 parallel generations vs Sume queueing
Runway plans cap parallel generations at 5, 15 and up. Sume accepts extra jobs as queued behind a per-plan processing limit and reports USD cost per job.
Written by Sume