Unit-test a Seedance 2.5 cost estimator against six billed amounts

Your own cost estimate for Seedance 2.5 should match what Sume bills to the micro-dollar. A Python assert test with six known amounts from 480p to 1080p 30 s.

4 min readSume
All posts

If your app shows a price before the user clicks generate, test it against known billed numbers. Sume's Seedance cost is deterministic: tokens = ceil(width x height x seconds x 24 / 1024), then the provider list micros are ceil(tokens x rate / 1000), then Sume bills that x 1.25. The list rate for seedance-2.5 is 21,400 micros per 1,000 tokens, and 23,400 at 1080p. At 9:16, 480p is 496x864, 720p is 720x1280 and 1080p is 1080x1920.

The script asserts six cases. All six passed on Python 3.14.7.

Seedance 2.5 billed amounts on Sume (read 2026-10-07)
ResolutionRatioSecondsBilled (USD)
480p9:165$1.343385
720p9:165$2.889
720p9:1615$8.667
1080p9:165$7.10775
1080p9:1615$21.32325
1080p16:930$42.6465

The test

Golden values are in integer micro-dollars, so the comparison is exact and floating-point rounding cannot hide a drift. 9:16 and 16:9 give the same token count.

import math
DIMS = {("480p", "9:16"): (496, 864), ("720p", "9:16"): (720, 1280),
        ("1080p", "9:16"): (1080, 1920), ("1080p", "16:9"): (1920, 1080)}

def micros(model, res, ratio, secs):
    w, h = DIMS[(res, ratio)]
    rate = 23400 if (model, res) == ("seedance-2.5", "1080p") else 21400
    tokens = math.ceil(w * h * secs * 24 / 1024)
    return math.ceil(math.ceil(tokens * rate / 1000) * 1.25)

GOLDEN = {  # Sume billable USD micros, packages/provider-pricing golden-amounts
    ("480p", "9:16", 5): 1343385, ("720p", "9:16", 5): 2889000,
    ("720p", "9:16", 15): 8667000, ("1080p", "9:16", 5): 7107750,
    ("1080p", "9:16", 15): 21323250, ("1080p", "16:9", 30): 42646500,
}
for (res, ratio, secs), want in GOLDEN.items():
    got = micros("seedance-2.5", res, ratio, secs)
    assert got == want, (res, ratio, secs, got, want)
    print(f"{res} {ratio} {secs:>2}s  ${got / 1e6:.6f}  ok")

Keep it honest

A passing test only proves your formula matches these six; add a case whenever a new resolution or model appears, and re-read the pricing page, because rates change. The estimate is a preview. The next post compares it with the cost the job reports.

Sources

Related posts

More in Pricing

All Pricing posts

Written by Sume