Python: price a Seedance 2.5 clip from seconds and resolution
A 17-line function turns resolution and seconds into video tokens and a Sume price: 4 s at 480p is $1.07, 30 s at 1080p is $42.65.

Most video models bill by the second, so you can price a clip in your head. Seedance does not. Sume bills Seedance by video tokens, and the number of tokens depends on the output frame size and the length. Without a calculator, a 30-second 1080p clip looks affordable until the 402 arrives.
The formula in Sume's pricing tables is tokens = width x height x seconds x 24 / 1024, with 24 frames a second. The rate is then applied per 1,000 tokens: the provider list rate times 1.25. For Seedance 2.5 that is $0.02675 per 1,000 tokens at 480p and 720p, and $0.02925 at 1080p, where the provider list rate steps up from $0.0214 to $0.0234.
The function
The sizes are the output frame sizes the pricing tables use for 9:16: 496 x 864, 720 x 1280 and 1080 x 1920. A 16:9 clip has the same pixel count, so the price is the same. The function raises for anything outside the 4 to 30 second window that Seedance 2.5 advertises.
SIZES = {"480p": (496, 864), "720p": (720, 1280), "1080p": (1080, 1920)}
RATE = {"480p": 0.02675, "720p": 0.02675, "1080p": 0.02925} # USD per 1,000 tokens, list x 1.25
def seedance_25_cost(resolution: str, seconds: int) -> tuple[int, float]:
if not 4 <= seconds <= 30:
raise ValueError("seedance-2.5 takes 4 to 30 whole seconds")
w, h = SIZES[resolution]
tokens = w * h * seconds * 24 // 1024
return tokens, round(tokens / 1000 * RATE[resolution], 2)
if __name__ == "__main__":
for res in SIZES:
for sec in (4, 5, 15, 30):
tokens, usd = seedance_25_cost(res, sec)
print(f"{res:>5} {sec:>2}s {tokens:>9,} tokens ${usd:,.2f}")Check it against known prices
The printed values match the Sume golden price fixtures for 5, 15 and 30-second clips: $1.34, $2.89 and $7.11 at five seconds, $4.03, $8.67 and $21.32 at fifteen, and $42.65 for 30 seconds at 1080p. The other rows follow the same formula.
| Length | 480p | 720p | 1080p |
|---|---|---|---|
| 4 s | $1.07 | $2.31 | $5.69 |
| 5 s | $1.34 | $2.89 | $7.11 |
| 15 s | $4.03 | $8.67 | $21.32 |
| 30 s | $8.06 | $17.33 | $42.65 |
Wiring it into a submit path
Call the function right before the POST and refuse the job when the number is above your own cap, for example when a prompt template accidentally asks for 30 seconds at 1080p. The workspace wallet is also a guard, because Sume reserves the price at submit and answers 402 insufficient_credits when the balance is lower. A client-side cap fails earlier and with a message you control, and it protects a shared workspace where one script could otherwise take most of the balance.
What the function leaves out
Reference videos change the price. Sume applies a 0.6 multiplier to the input-video part and assumes a 15-second input when it reserves, so a job with a reference video is not covered by this function. Audio on or off does not appear in the formula above either. For the final amount always read usage.cost on the completed job.
Use the function before you submit to decide whether a draft at 480p is worth it. Going from 480p to 1080p multiplies the cost by 5.3 for a 5-second clip, which makes resolution the biggest cost lever in a draft pipeline.
Sources
Related posts
More in Developers
- Python: quote one 10-second clip across five Sume video models
A Python script that prices a 10-second clip on Seedance 2.5, Omni, Wan 3.0, H3 and H3 Max with Sume's 1.25 multiple and per-job rounding. Run it before a test.
- Python requests Retry on POST: safe for Sume only with a key
urllib3 Retry skips POST by default. Allow it for a Sume submit only when every request carries an Idempotency-Key, and retry just 429 and 503.
- Flag near-identical openings in your last 20 Short scripts
A short Python script that compares the first sentence of each Short script and flags pairs that read alike, a cheap check against templated AI Shorts.
- Python and SQLite: log every video job's usage.cost by model
A 13-line stdlib script stores each completed job's usage.cost in SQLite, ignores duplicates by job id and prints spend per model. Seedance 2.5 5 s is $2.89.
Written by Sume