Check your predicted cost against usage.cost when a Sume video ends
Compare your own price prediction with the usage.cost on a completed Sume job and flag drift. A 20-line Python check, tested on three sample polls.

A completed GET /v1/videos/{id} response carries usage.cost. Comparing it with what you predicted before submitting catches a stale rate table, a wrong resolution mapping or a changed price on the day it happens, instead of at month end.
Only compare on completed. A job in pending or in_progress has no final cost, and a failed or cancelled one is a different question. The check returns a plain string, and a tolerance of 0.0005 dollars absorbs rounding in how the amount is printed.
The check
It predicts a Seedance 2.5 clip with the same token formula as the estimator, then compares. Run on a sample 720p 5 s poll, it printed match; with usage.cost set to 3.1 it printed DRIFT predicted 2.889 billed 3.1; with an in-progress poll it printed not completed yet. These are sample payloads, not live ones.
import math
DIMS = {"480p": (496, 864), "720p": (720, 1280), "1080p": (1080, 1920)}
def predict_usd(res, secs):
w, h = DIMS[res]
rate = 23400 if res == "1080p" else 21400
tokens = math.ceil(w * h * secs * 24 / 1024)
return math.ceil(math.ceil(tokens * rate / 1000) * 1.25) / 1e6
def check(poll, res, secs, tolerance=0.0005):
if poll["status"] != "completed":
return "not completed yet"
actual = poll["usage"]["cost"]
want = predict_usd(res, secs)
return "match" if abs(actual - want) <= tolerance else f"DRIFT predicted {want} billed {actual}"
done = {"status": "completed", "usage": {"cost": 2.889}}
print(check(done, "720p", 5))
print(check({**done, "usage": {"cost": 3.1}}, "720p", 5))
print(check({"status": "in_progress"}, "720p", 5))What to do on drift
Log the model, resolution, duration, predicted and billed numbers, stop showing the old estimate, and read the current pricing doc before changing the table. Do not auto-correct your estimator from the billed number, because that hides the change you wanted to see.
Sources
Related posts
More in Pricing
- What a rejected take costs: 30-second Seedance 2.5 vs 8-second clip
A rejected 30-second Seedance 2.5 take costs $17.33 at 720p; a rejected 8-second take is $4.62. A failed job is refunded, but a clip you dislike is not.
- Cost of one finished 60-second ad: four Wan clips, voice, music
A finished 60-second ad built from four 15-second Wan 3.0 clips at 720p costs $7.9678 on Sume with voice, a music bed, one render and captions.
- Cost of one finished minute of AI video: video, voice, music, timeline
One finished 60-second video on Sume costs about $4.23 to $90.26 depending on model and resolution, with voice, music, timeline and fee included. Worked.
- Cost per kept 8-second clip if you keep 1 in 1 to 1 in 4, by model
Billing is per attempt, not per keeper. Price one kept 8 s clip when you discard 0 to 3 takes first, across six Sume video models. Rates read 2026-10-07.
Written by Sume