Why the Sume catalog shows $0.02 to $42.86 for one video route
GET /v1/catalog publishes an estimate plus a minimum and maximum for each route. Video spans $0.02 to $42.86, image $0.01 to $7.36, TTS $0.01 to $0.95.

The Sume catalog publishes three numbers for each route: an estimate, a minimum and a maximum. For the video router they are $0.50, $0.02 and $42.86 per clip, because one route covers every model, duration and resolution. Read the band to see the range, then narrow it by choosing a model, a length and a resolution before you budget.
The bands as published
The estimate is what the route shows when you give no parameters. The minimum and maximum are the cheapest and dearest request the route accepts. The figures below are the public catalog values, in cents rounded as published.
| Route | Unit | Estimate | Minimum | Maximum |
|---|---|---|---|---|
| Video router | per clip | $0.50 | $0.02 | $42.86 |
| Image router | per image | $0.23 | $0.01 | $7.36 |
| TTS router | per 1,000 characters | $0.05 | $0.01 | $0.95 |
| STT | per audio minute | $0.01 | $0.01 | $0.10 |
| Music router | per audio | $0.13 | $0.13 | $0.13 |
Why the bands are wide
A band is not a price. The video router spans the cheapest short clip up to the dearest long, high-resolution one, a ratio of more than 2,000 to 1. A budget built on the estimate would be wrong for almost every real job.
TTS shows its maximum because a single request is capped by length: $0.0475 per 1,000 characters at 20,000 characters is $0.95. STT tops out at $0.10, which matches 10 minutes at $0.01 per audio minute. Music is flat per audio, so its band has no spread.
- Use the estimate only as a rough first look.
- Compute the real figure as rate times seconds, characters or minutes.
- Compare it with the maximum to see how much a mistaken parameter could cost.
A three-column plan
A useful way to use a band is to keep three columns in a spreadsheet: the minimum, the figure for your actual parameters, and the maximum. The middle column is the budget. The outer columns tell you how wrong a mistake can be.
For one Omni Flash 1.1 clip at 720p and 8 seconds the middle column is $1.00, against a video-route maximum of $42.86. For one 300-character voice line the middle column is $0.01425, against a TTS maximum of $0.95. For a 10-minute transcript it is $0.10, which is also the STT maximum. The bands for STT and music are tight, so those lines rarely surprise you; the video and image bands are the ones that need the middle column.
A request that carries parameters you did not intend, such as a longer duration or a higher resolution, moves the reserve up the band. Fixing the model, the duration and the resolution in code, rather than leaving defaults, keeps the middle column honest.
Turn a band into a budget
Pick the model, then multiply. Omni Flash 1.1 at 720p for 8 seconds is 8 times $0.125, or $1.00, which sits well inside the video band. A 30-second Wan 3.0 clip at 1080p is 30 times $0.25, or $7.50.
Sume reserves the estimate for your exact request at submit, not the band maximum. If the balance cannot cover that reserve, the submit returns 402 insufficient_credits before any provider work starts. See preview the queue and balance for the checks that do not bill, and the minimum balance for a 10-second video for a worked reserve.
Sources
Related posts
More in Developers
- Sume status vocab: a job is completed, a resource is ready
Sume lists three status vocabularies: job, resource, webhook delivery. Only jobs say completed; resources say ready, so a check on the wrong one never matches.
- Sume timeouts in one table: 30 s, 55 s, 10 s, 90 minutes
Every wait in the Sume API has its own number: sync 30 s, jobs_wait 55 s, webhook attempts 10 s, SDK helpers 10 and 20 minutes, Format runs 90 minutes.
- Sume /v1/usage summary.final is false: a hold is open, not spent
Read GET /v1/usage?job_id= and book cost only when summary.final is true. held_usd_micros and refunded_usd_micros are not spend. Code to poll it.
- Sume webhooks: 10 attempts 30 seconds apart for a video receiver
A Sume job webhook is tried up to 10 times, 30 seconds apart by default, with a 10 s timeout each. What that means for a video receiver, plus a Python verifier.
Written by Sume