🎁 New Sign up free, 10 calls on us. Up to $1, no card needed.
Seedance API Pricing, Measured: the Video-Token Formula, Solved

Seedance API Pricing, Measured: the Video-Token Formula, Solved

Contents
  1. Which Seedance model does what?
  2. How do you call the Seedance API?
  3. What is a video token, exactly?
  4. What does Seedance actually cost per second?
  5. Is 4k cheaper? The rate card says yes, the bill says no
  6. What does generate_audio change?
  7. How does async video billing behave?
  8. FAQ

Seedance bills video by tokens, and the formula that actually matches the meter is encoded_width × encoded_height × (24 × seconds + 1) / 1024. Two parts of that are not in any documentation we could find: the +1 frame, and the fact that the encoded dimensions are not the nominal ones (720p bills as 1248×704, not 1280×720). We ran 27 generations across five Seedance models and every resolution tier, and every billed token count reconciles against that formula to the token. This post maps the family, shows the two-request API, then gives the solved formula, the per-second price ladder that falls out of it, and the two places the rate card misleads.

TL;DR

  • Seedance video tokens = encoded width × height × (24 × seconds + 1) / 1024; the +1 frame and the encoded dimensions are measured, not documented.
  • 720p bills as 1248×704 and 1080p as 1920×1088; aspect ratio changes nothing.
  • The same 4-second clip billed identical tokens on every tier from 1.5-pro up; rates run $1.0 to $7.0 per million.
  • 4k’s $4.0/M rate undercuts 1080p’s $7.7/M yet costs $0.78 per second against $0.38, 2.1x more.
  • generate_audio leaves tokens unchanged and doubles the rate on 1.5-pro.

Everything below was measured on 2026-07-22 through the Synthorai gateway’s /v1/videos endpoint, where the Seedance family is live at ByteDance list prices; raw per-task records back every number.

Which Seedance model does what?

Tier choice changes the rate, never the meter: pick by capability, then let the next sections price it. The same 4-second 480p prompt billed identical tokens on Seedance 2.0, 2.0-fast, 2.0-mini, and 1.5-pro (40,594 each; 1.0-pro-fast billed 39,285 on its slightly smaller pixel grid). What you pay for going up the ladder is capability, and the family splits it unevenly:

ResolutionsDurationAudioImage inputseed / camera_fixedRate ($/M tokens)
2.0480p-4k4-15s (+auto)✓ nativefirst + last frame$7.0 (1080p $7.7 · 4k $4.0)
2.0-fast480p-720p4-15s (+auto)first + last frame$5.6
2.0-mini480p-720p4-15s (+auto)first + last frame$3.5
1.5-pro480p-1080p4-12s (+auto)toggle ($1.2 / $2.4)first + last frame$1.2-2.4
1.0-pro-fast480p-1080p2-12sfirst frame only$1.0

Three quirks worth knowing before you pick. Reproducibility flows the wrong way: seed and camera_fixed exist only on the 1.x models, so the cheapest tiers are the controllable ones and the flagship is not. Capability fields are hard-gated per model: sending generate_audio to a 1.0 model returns a named 400 (extension_not_supported), so build requests from each model’s capability list instead of one shared shape. And only 1.0-pro-fast goes down to 2-second clips, which is why the formula measurements below lean on it; everything newer starts at 4 seconds. Beyond the table, the 2.0 models also accept reference-file input upstream (up to 9 images, 3 video clips, and 3 audio files) where a platform exposes it.

How do you call the Seedance API?

Video generation is an async job API: one POST creates the task and returns in about two seconds, then you poll the task URL until it completes. The whole flow in Python:

import os, time, requests

BASE = "https://synthorai.io/v1"
auth = {"Authorization": f"Bearer {os.environ['SYNTHORAI_API_KEY']}"}

task = requests.post(f"{BASE}/videos", headers=auth, json={
    "model": "seedance-1-5-pro-251215",
    "prompt": "A paper boat drifting across a rain puddle, cinematic",
    "resolution": "720p", "ratio": "16:9",
    "duration": 5, "generate_audio": True,
}).json()                                    # returns in ~2s: {"id": "vid_...", "status": "queued", ...}

while task["status"] not in ("completed", "failed", "cancelled"):
    time.sleep(8)
    task = requests.get(f"{BASE}/videos/{task['id']}", headers=auth).json()

print(task["data"][0]["url"])                # signed MP4, valid 24h
print(task["usage"]["total_tokens"])         # the billing meter this post is about

If you would rather block than poll, send a Prefer: wait=60 header on the create and the response holds until the clip is done or the window expires, then degrades back to the polling object. Generation itself took anywhere from 20 seconds to a bit over two minutes for the 480p and 720p clips in our runs. The usage.total_tokens field on the completed task is the billing meter, and the rest of this post is about what drives it.

What is a video token, exactly?

A video token is a fixed slice of output pixels over time: the billed count is W × H × frames / 1024, where the frame count is 24 × seconds + 1 and W×H are the encoder’s real dimensions, not the label on the resolution tier. We recovered both terms from the meter itself. Billed token counts across three durations at each resolution fit a straight line with zero residual, the line’s slope gives tokens per second, and its intercept, at every resolution, is exactly one frame’s worth of tokens (405 at 480p, 858 at 720p, 2,040 at 1080p). Solving the slopes for W×H gives the real encoded grids:

Nominal tierEncoded dimensions (measured)Tokens per secondOne extra frame
480p864×480 (1.0 series) / 864×496 (1.5/2.0 series)9,720 / 10,044405 / 418
720p1248×704 (not 1280×720)20,592858
1080p1920×1088 (not 1920×1080)48,9602,040
4k3840×2160 (nominal = encoded)194,4008,100

One independent cross-check: ByteDance’s widely circulated worked example for 2.0, a 15-second clip at about 308,880 tokens, is exactly 15 times our measured 720p rate, so the 720p grid holds beyond the 1.0 series we fitted it on (and their marketing math drops the +1 frame).

Two practical consequences. Aspect ratio does not move the bill: 16:9 and 9:16 billed identical tokens in all nine paired runs, so vertical output is not a cost decision. And the widely quoted approximation W × H × 24 × duration / 1024 undershoots by one frame and uses the wrong dimensions, which is why third-party estimates drift a few percent from real invoices.

What does Seedance actually cost per second?

Multiply the measured token rates by each tier’s list rate and the whole catalog collapses into one ladder:

Model @ resolution$/second (measured tokens × list rate)
seedance-1.0-pro-fast @ 480p$0.0097
seedance-1.5-pro @ 480p, no audio$0.0121
seedance-1.0-pro-fast @ 720p$0.0206
seedance-1.5-pro @ 480p, with audio$0.0241
seedance-2.0-mini @ 480p$0.0352
seedance-1.0-pro-fast @ 1080p$0.0490
seedance-2.0-fast @ 480p$0.0563
seedance-2.0 @ 480p$0.0703
seedance-2.0 @ 4k$0.778

For context against the per-second billers’ July 2026 list prices (as aggregated by public pricing trackers): Kling runs about $0.07/s, Sora 2 about $0.10/s, and Veo 3.1 about $0.40/s. Seedance 2.0 at 480p sits at Kling’s price point with native multi-track audio included, and the 1.0-fast tier generates watchable 480p at roughly a seventh of Kling’s rate. A 15-second 720p clip on 2.0 lands around $2.17; the same clip on 1.0-pro-fast is $0.31.

Is 4k cheaper? The rate card says yes, the bill says no

4k carries the lowest per-token rate on Seedance 2.0, $4.0 per million against 1080p’s $7.7, and it is still the most expensive thing on the menu. The reason is the formula: 4k emits about four times 1080p’s tokens per second (194,400 vs 48,960), so the cheaper rate buys 2.1x the per-second cost, $0.778/s against $0.377/s. Our 4-second 4k anchor billed 785,700 tokens, $3.14 for four seconds of video. Read any per-token rate card with that resolution’s tokens-per-second beside it; on token-billed video, the sticker and the bill can point in opposite directions.

What does generate_audio change?

The rate, not the tokens. On 1.5-pro the same 5-second clip billed 50,638 tokens with audio on and 50,638 with it off; the list rate doubles from $1.2/M silent to $2.4/M with audio, so soundtracked output costs exactly 2x, cleanly, with no hidden token surcharge. On the 2.0 series audio is part of the model’s single rate, so there is no toggle arithmetic to do. If your pipeline adds its own music bed anyway, 1.5-pro silent at $0.0121/s is the quiet bargain of the catalog.

How does async video billing behave?

Billing attaches to the task lifecycle you saw above: the bill lands once, when the task first reports completed, no matter how many times you poll. Cancellation is honest about physics: a queued task cancels cleanly and bills nothing, but once the task is running the upstream rejects deletion (409) and you wait out the result. Failed generations are not billed.

Three operational notes from running 27 tasks. First, video responses carry token usage but no cost field, unlike chat’s usage.cost; budget as tokens × your tier’s rate. Second, output arrives as a signed URL with a 24-hour lifetime; move it to your own storage promptly. Third, pace your creates: the platform allows 6 video tasks per workspace per minute, and because each pending task reserves worst-case cost against your balance, bursting creates during an upstream slowdown can bounce off a temporary insufficient-quota response even when the eventual spend is fine.

FAQ

Is the Seedance 2.0 API actually available?

Yes. The early-2026 access story (Chinese credentials, waitlists, staged rollout) is dated: the full family, 2.0 included, is live on the Synthorai gateway’s /v1/videos endpoint at ByteDance list prices (model pages: Seedance 2.0, 1.5-pro, 1.0-pro-fast), and several other platforms serve it as well. If a page tells you Seedance 2.0 is experience-quota only, it predates the API rollout.

Why do Seedance prices differ so much between providers?

Because most resellers convert token billing into flat per-second or per-clip prices with their own margin and rounding, and the conversion hides the resolution- and duration-dependent token math. The formula in this post is the ground truth underneath every quote: compute W × H × (24s + 1) / 1024 with the encoded dimensions and multiply by the official rate, and you can price any provider’s markup precisely.

Does aspect ratio or a vertical format cost extra?

No. 16:9 and 9:16 billed identical tokens at every resolution and duration we tested. Resolution and duration are the only levers that move the meter, and duration is exactly linear.

What about Seedance 2.5?

Announced, not yet served on the APIs we track. The token formula and the tier-versus-rate structure are the parts likely to carry over; when it lands we will re-run the same probes.

Measured 2026-07-22/23: 27 completed generations across five Seedance models via /v1/videos, token counts from per-task usage records, rates from the ByteDance list, and the capability matrix from the live /v1/videos/models catalog. Per-second competitor figures are list prices, not measurements. Formula fits are exact on every measured point; encoded dimensions are recovered from the meter, so re-verify them if ByteDance changes encoders. For the rest of the modality series: image generation, speech-to-text, voice sessions, and text tokens.

← Back to blog