Seedance 2.5 is token-priced: 30 s is $8.06, $17.33 or $42.65
The catalog shows per-1000-video-tokens for Seedance 2.5, so seconds times a rate fails. Totals for 480p, 720p and 1080p at 30 s with the ratios between them.

Seedance 2.5 is priced per 1,000 video tokens in the catalog, so a 30 s clip is not seconds times a published rate: it is $8.06 at 480p, $17.334 at 720p and $42.6465 at 1080p for 9:16. The same 30 s clip costs 2.15x more going from 480p to 720p and 2.46x more going from 720p to 1080p.
Totals from the price tool
The pricing code for Seedance estimates video tokens from resolution, aspect ratio and length, then multiplies by the token rate. The catalog gives only the rate, so a client that wants a total must use an estimate from Sume or a measured per-second figure.
At 9:16 and 720p the tool returned $2.3112 for 4 s and $17.334 for 30 s, which is the same $0.5778 per second, so a flat per-second figure was usable at that resolution and ratio. 16:9 at 720p gave the same 30 s total.
| Resolution | Per second | 30 s total | Ratio to 480p |
|---|---|---|---|
| 480p | $0.268677 | $8.06031 | 1.00x |
| 720p | $0.5778 | $17.334 | 2.15x |
| 1080p | $1.42155 | $42.6465 | 5.29x |
A quote helper with measured rates
Use this only as a pre-check and replace the constants whenever you re-run the price tool. The poll's usage.cost stays the source of truth.
from decimal import Decimal
# billable USD per second, 9:16, measured 2026-10-09
PER_SECOND = {
"480p": Decimal("0.268677"),
"720p": Decimal("0.5778"),
"1080p": Decimal("1.42155"),
}
def quote(res, seconds):
if not 4 <= seconds <= 30:
raise ValueError("seedance-2.5 takes 4 to 30 s")
return PER_SECOND[res] * seconds
print(quote("720p", 30)) # 17.3340Gotchas
The measured per-second figures hold for the ratios and lengths tested; do not assume they hold for 1:1 or 21:9 without running the tool. The catalog example in the docs shows a 4-decimal token rate string, and its value can change, which is why the constants above carry a date.
Seedance 2.5 runs 4 to 30 s at 480p, 720p and 1080p. For a cheaper 30 s clip, Wan 3.0 is $3.75 at 720p.
Sources
Related posts
More in Developers
- Send a signed webhook.test with POST /v1/webhooks/test-deliveries
Point POST /v1/webhooks/test-deliveries at a new HTTPS endpoint to get a signed webhook.test before any video job runs, then check the sume-v1 signature.
- Seven pre-flight checks before an Omni, H3 or Recast job
Duration, resolution, ratio, edit conflicts, reference counts, refused fields and URLs: seven per-model checks that catch a refused Sume video request.
- SGLang H3 /v1/videos vs Sume /v1/videos: same path, new fields
A self-hosted MiniMax H3 SGLang server and Sume both expose /v1/videos, but the fields differ: seconds vs duration, seed accepted vs not listed. Small adapter.
- Size a Sume submit wave: limit 100, 30 processing, 10 queued gives 60
How many new jobs can a Sume workspace take? max(0, limit - active - queued), capped by queue_capacity_remaining. Worked numbers and a TypeScript helper.
Written by Sume