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.

4 min readSume
All posts

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.

Seedance 2.5 price on Sume by length and resolution (pricing tables, read 2026-10-05)
Length480p720p1080p
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

All Developers posts

Written by Sume