TL;DR
- Seedance 2.5 native 1080p is live at $8.77 per 1M tokens — about 25% below going direct to ByteDance. A 5-second 1080p clip is $2.15, ten seconds is $4.28, a 30-second single-take is $12.80. Start generating →
- 1080p is 2.25x the pixels but only 1.84x the price. The 1080p tier bills at $8.77/1M while 480p and 720p bill at $10.70/1M, so the resolution upgrade costs meaningfully less than the pixel math implies.
- The 1080p tier is a genuine native render, and we can prove it. A 1080p request bills 245,025 tokens; the same prompt at 720p bills 108,900. The ratio is 2.2500 — exactly the pixel ratio. An upscale would have billed the 720p number.
- The billing formula is
width x height x frames / 1024, andframes = fps x duration + 1. That +1 is real. Every file we pulled was 121 frames for a "5-second" clip, and the meter charged for all 121. You pay 0.83% more than the arithmetic suggests at 5s. - At 1080p, Seedance 2.5 switches codec. 720p comes back 8-bit H.264. 1080p comes back 10-bit HEVC (
hevc, Main 10,yuv420p10le). Same model, same request shape. Reproduced on two independent jobs. This will break players and pipelines that happily ate Seedance 2.0. - 1080p is slow. 720.7s to a downloadable file versus 216.1s at 720p — 3.3x the wall clock for 2.25x the pixels.
- Quality costs about 7x here. A 5-second 1080p clip billed $2.6218 the morning we ran it; Seedance 2.0 at the same size was $1.8867 and Seedance 1.5 Pro just $0.2940. The gap in prompt adherence is visible in the clips below. So is the gap in the bill.
- "Give me a 5-second 1080p clip" means five different things to five vendors. Sora 2 rejects
1080poutright and caps at 1792x1024. MiniMax wants1080Pwith a capital P. We asked Veo 3.1 for 5 seconds at 1080p and got 8.0 seconds at 1280x720.
Everything below is why that clip is worth generating — measured, not claimed.
Does Seedance 2.5 Actually Render at 1080p?
ByteDance launched Seedance 2.5 on July 31, 2026, onto Jimeng AI and Doubao Pro (TechNode, 2026). The launch post led with the headline number: 30 seconds of video in a single pass, double what Seedance 2.0 managed. It also claimed up to 50 multimodal references — 30 images, 10 video clips, 10 audio clips — and joint audio-video generation rather than dubbing a silent render afterward.
It never said what resolution the thing outputs.
So the ecosystem guessed, and split. One vendor's docs stated flatly that native output is 480p or 720p and that any 1080p or 4K route is an upscale off the 720p base. Another advertised native 4K. A third described a full 1920x1080 frame generated directly. These are not compatible claims, and every one of them is load-bearing if you're budgeting a render farm.
The disagreement has a boring explanation — the tier moved. Native 1080p was reportedly switched on around August 17, 2026, which is why pages written in early August describe a different model than pages written now (ChatSlide, 2026).
Boring explanations still leave the question a marketing page can't answer. When you pay for 1080p, what are you actually paying for? Pixel dimensions in the returned file prove nothing. ffmpeg will happily hand you a 1920x1080 file that was rendered at 720p and stretched. Every upscaler on earth produces exactly that.
There is a way to settle it. It just isn't the video file.
How Do You Prove a Render Isn't an Upscale?
Seedance is billed per token, not per second or per video. That's mildly annoying for budgeting and enormously useful for forensics, because the token count is computed from the render, not from the file that lands in your bucket.
We ran the same prompt at 720p and at 1080p and read usage.completion_tokens off each completed job:
| Request | Delivered file | Billed tokens |
|---|---|---|
resolution: "720p" | 1280x720 | 108,900 |
resolution: "1080p" | 1920x1080 | 245,025 |
245,025 / 108,900 = 2.2500. The pixel ratio between 1920x1080 and 1280x720 is also exactly 2.25.
If Seedance 2.5 were rendering at 720p and upscaling, the meter would have read 108,900 both times — you cannot bill for pixels you never diffused. It read the full 1080p count. The 1080p tier is a real render.
The formula, and the frame you didn't order
Chasing that number gave us the billing formula outright. Solve 245,025 back through 1920x1080:
245,025 x 1024 / (1920 x 1080) = 121.0121 frames. Not 120. And ffprobe confirms it on every single file we pulled — nb_frames=121 across Seedance 1.0 Pro, 1.5 Pro, 2.0 and 2.5, and on Kling 3.0 too:
tokens = width x height x frames / 1024frames = fps x duration + 1Check it: 1920 x 1080 x 121 / 1024 = 245,025. Exactly. At 720p: 1280 x 720 x 121 / 1024 = 108,900. Exactly. Five jobs reported a token count. Five exact hits, no rounding.
The +1 is the inclusive endpoint — a 5-second clip at 24fps spans frames 0 through 120. It's defensible, it's also billable, and nobody mentions it. At 5 seconds you're paying for 0.83% more frames than duration x fps implies. At 30 seconds it decays to 0.14%. It will not bankrupt you. It will make your cost model wrong by a consistent, confusing sliver until you know why.
We verified the arithmetic against the money, not just the meter. Reading /v1/balance before and after each job, the 1080p clip moved the balance by $2.621768. 245,025 tokens at the $10.70/1M list rate is $2.6217675. The meter and the ledger agree to the seventh decimal.
Why Does Seedance 2.5 Return HEVC at 1080p?
Here's what we didn't go looking for.
Ask Seedance 2.5 for 720p and you get 8-bit H.264, High profile — the same boring, universally playable thing Seedance 2.0 returns. Ask the same model for 1080p and you get this:
codec_name=hevcprofile=Main 10pix_fmt=yuv420p10lewidth=1920 height=1080 nb_frames=121HEVC. 10-bit. From the same model ID, same endpoint, same request shape — the only difference is the resolution string. We hit it twice on independent jobs, hours apart, and both came back hvc1/Main 10/yuv420p10le.
Here are both clips. Same prompt, same model, one parameter apart:
That right-hand player is doing the exact thing this section is about. Its first <source> is the untouched 10-bit HEVC file the API returned; the second is our H.264 transcode. Safari takes the original. Chrome and Firefox mostly fall through to the fallback. If we had shipped only the file the API gave us, the right-hand box would be black for a large share of you.
The 1080p files are also the only ones in the whole run carrying colour metadata — BT.709 primaries, transfer and matrix. Every other file arrived with no colour tags at all, leaving players to guess.
On the merits this is an upgrade. Ten-bit kills the banding you get in exactly the content video models love to generate — gradient skies, neon falloff, smoke, shallow-depth bokeh. HEVC carries more quality per bit. If you're grading footage, you want this.
If you're piping model output straight to a <video> tag, you have a problem. HEVC in MP4 has patchy browser support, and 10-bit HEVC is worse. Plenty of upload paths and CDN transcode presets still assume 8-bit H.264, because that assumption has been safe for a decade. The failure mode is nasty: your 720p staging environment works perfectly and 1080p production plays black.
The one-line fix, if your pipeline isn't ready:
ffmpeg -i in.mp4 -c:v libx264 -profile:v high -pix_fmt yuv420p -crf 18 -c:a copy out.mp4Budget for it. On our clips that transcode throws away the bit depth you just paid a premium to render.
Seedance 2.5 vs 2.0 vs 1.5 Pro: What Actually Improved?
One prompt: an iced coffee glass on a cafe table, a hand placing a newspaper, rain and neon through the window, warm interior light against cool window light. We sent it to every Seedance generation available — 5 seconds, 16:9, text-to-video, one API, 2026-08-17.
| Model | Latency | Delivered | Codec | Tokens | Measured cost |
|---|---|---|---|---|---|
| Seedance 1.0 Pro | 54.6s | 1920x1088, silent | H.264 Constrained Baseline, 8-bit, 15.1 Mbps | per-video | $0.1100 |
| Seedance 1.5 Pro | 126.4s | 1920x1080, AAC 44.1k | H.264 Constrained Baseline, 8-bit, 19.4 Mbps | 245,025 | $0.2940 |
| Seedance 2.0 | 306.0s | 1920x1080, AAC 44.1k | H.264 High, 8-bit, 6.1 Mbps | 245,025 | $1.8867 |
| Seedance 2.5 @ 720p | 216.1s | 1280x720, AAC 32k | H.264 High, 8-bit, 10.1 Mbps | 108,900 | $1.1652 |
| Seedance 2.5 @ 1080p | 720.7s | 1920x1080, AAC 32k | HEVC Main 10, 10-bit, 12.8 Mbps | 245,025 | $2.6218 |
Three things in that table are worth more than the headline.
Seedance 1.0 Pro doesn't return 1080p. It returns 1088. The model ID has 1080p in the name; ffprobe reports 1920x1088, coded and displayed, with no crop rectangle. That's the H.264 macroblock padding leaking through unclipped — eight rows of extra picture riding along. If you're compositing against a 1080-tall canvas or asserting dimensions in a test, that silently breaks.
Codec quality tracks price, not version number. Seedance 1.5 Pro spends 19.4 Mbps on Constrained Baseline — the most primitive H.264 profile there is, no B-frames, no CABAC. It produces a 12.2 MB file for five seconds and still looks softer than Seedance 2.0's 6.1 Mbps High-profile file at 3.9 MB. You are paying for bits that are doing no work.
Latency scales worse than pixels. 2.25x the pixels cost 3.3x the wall clock. If you're generating interactively, 720p isn't a compromise tier — it's the only tier with a tolerable feedback loop. The same logic that governs when prompt caching actually breaks even applies here: draft cheap and fast, then spend the render budget once, on the take you've already chosen.
What it looks like
Four generations of the same model, same prompt, playing at once:
Turn the sound on for the first three. Seedance 1.0 Pro is the only one in the lineage that returns no audio track at all.
Prompt adherence is where the generations separate, more than sharpness. The prompt asked for seven things: glass, ice, a hand, a newspaper, rain on the window, neon outside, and warm-against-cool lighting. Seedance 2.5 landed all seven. Seedance 2.0 rendered the drink with a foam head — that's a beer, not iced coffee — and reduced the newspaper to mush. Seedance 1.5 Pro drifted the composition entirely, shrinking the glass into the background and dropping the hand and newspaper out of frame.
Text is the classic tell, and it's the clearest jump in the lineage:
Identical crop coordinates on both frames. These are separate generations, so 2.0 placed different content in that region — which is itself the prompt-adherence result.
Both crops are the same rectangle of the same 1920x1080 frame position. Seedance 2.5 put the newspaper and hand there; Seedance 2.0 put window bokeh there and pushed the newspaper out of the region entirely. That difference is the prompt-adherence gap, not a rendering artefact.
Look at what 2.5 does with the newspaper: a blackletter masthead, a rule line, column structure and a consistent type colour. The glyphs are not real words; no video model is there yet. But they're typographically coherent — they read correctly at a glance, and they survive the dolly-in. Skin on the hand holds knuckle and tendon detail at native resolution. That is what the extra 136,125 tokens bought.
Worth stating plainly: these are single generations, not best-of-N. Video models have high variance run to run, and one clip per model is enough to show a capability gap but not enough to rank two close models. Treat the visual read as directional and the numbers as exact.
How Does Seedance 2.5 Compare to Veo 3.1, Kling 3.0 and Sora 2?
We sent the same prompt to the current flagships. Getting them to accept it was most of the work.
| Model | We asked for | We got | Measured cost |
|---|---|---|---|
| Kling 3.0 | 5s @ 1080p | 5.04s @ 1920x1080, silent | $0.5600 |
| Gemini Omni Flash | 5s @ 1080p | 5.01s @ 1280x720, 120 frames | $0.1400 |
| Veo 3.1 | 5s @ 1080p | 8.0s @ 1280x720 | $2.0046 |
| Sora 2 | 4s @ 1080p | rejected | $0 |
| MiniMax Hailuo 2.3 | 6s @ 1080p | rejected | $0 |
Not one of the five agreed with any other about what those parameters mean.
Kling's clip is the sharpest of the three and the only one that honoured both parameters, but it arrives silent — no audio track at all, where Seedance and Veo both bundle one. Gemini Omni Flash is the cheapest thing in this entire post at $0.14 and it is not embarrassing.
Sora 2 doesn't do 1080p at all. It rejects the string and enumerates what it wants: 720x1280, 1280x720, 1024x1792, 1792x1024. The tallest frame it will produce is 1024 lines. Its duration set is 4, 8, 12 — nothing else, and 5 is not in it. Its API is also reported to be sunsetting in late September 2026. Confirm that with OpenAI before you build anything on it.
MiniMax wants a capital P. 1080p is rejected; 1080P, 768P and 512P are accepted. Its durations are 6 or 10, nothing between.
Seedance 2.5 rejects durations below 4, and tells you nothing useful when it does. Every bad parameter yields the same opaque line — "the parameter duration specified in the request is not valid for model dreamina-seedance-2-5 in t2v" — with no legal set. Only OpenAI and MiniMax enumerate valid values in their errors. That sounds like a nitpick until you're mapping one duration slider onto six backends, and the only way to learn the grammar is to probe for it.
We probed it. Rejected requests are free, which makes the error path the cheapest documentation available.
And Veo 3.1 gave us 8 seconds at 720p when we asked for 5 at 1080p. We repeated it with a deliberately absurd duration: 45 and got back the same thing: 8.0 seconds, 1280x720, 192 frames. Two jobs, identical output shape, neither matching the request. We're still isolating the cause: the model, the provider tier, or our own parameter mapping in the middle. Read it as an observation about our path to Veo that day, not a verdict on Veo. The lesson stands wherever the fault lands, and it's the most useful thing in this post:
Assert on the file, not on the request. Run ffprobe on what comes back and fail loudly when width, height, frame count or audio presence don't match what you ordered. Every assumption in this article that turned out to be wrong — the 1088, the 121st frame, the codec switch, the 8 seconds — was invisible from the request side. All four were obvious from the file side.
How Much Does Seedance 2.5 Cost Per Clip?
Two rates, not one. 480p and 720p bill at $10.70 per 1M tokens; 1080p bills at $8.77. The formula is verified, so the whole grid is computable — Seedance 2.5, 24fps, 16:9:
| Duration | 720p tokens | 720p @ $10.70 | 1080p tokens | 1080p @ $8.77 |
|---|---|---|---|---|
| 5s | 108,900 | $1.165 | 245,025 | $2.149 |
| 10s | 216,900 | $2.321 | 488,025 | $4.280 |
| 15s | 324,900 | $3.476 | 731,025 | $6.411 |
| 30s | 648,900 | $6.943 | 1,460,025 | $12.804 |
That lower 1080p rate is the part worth internalising. 1080p is 2.25x the pixels but only 1.84x the price, because the rate drops 18% as you cross the tier. The usual intuition — that resolution scales cost with area — is wrong here in your favour. If you have been drafting at 720p purely to save money, the gap is narrower than you think.
A 30-second single-take at 1080p — the flagship capability, the thing 2.5 exists to do — is a $12.80 button. That is not a number you want to discover by watching your balance drop. It is also, in fairness, thirty seconds of coherent 1080p footage with synced audio, which had no price at all eighteen months ago because it wasn't purchasable.
Video is simply a different cost class from the rest of the stack. One 30-second clip costs more than an entire agent workflow's retry overhead, and orders of magnitude more than the image models — ByteDance's own Seedream 5.0 Pro renders a still for $0.11. Budget video per clip, not per thousand tokens, and the numbers stop surprising you.
Two economics notes from the run:
Audio is free. Both 1080p jobs billed 245,025 tokens whether or not we passed generate_audio, and both came back with an AAC track. Native audio is inside the video token price, not a line item. Seedance 2.5 also defaults it to on.
Async video reserves against your balance, and the reserve is nothing like the cost. Each in-flight job held $5.00 off our available balance until it settled. A 720p clip that cost $1.17 held $5.00 for the 216 seconds it ran. With a $30 balance we could run exactly five concurrent jobs before submissions started failing with spend_limit_exceeded — while the actual settled cost of all five was under $10. On token-priced video, your practical concurrency ceiling is your balance divided by the reserve, not your rate limit. Fund accordingly.
This is the same shape of trap we hit measuring text models, where the per-minute token ceiling quietly caps you long before the daily quota does. The advertised limit is rarely the one that stops you.
One more, learned the expensive way: there is no cancel endpoint. DELETE and POST .../cancel on a running job both return 404. While probing duration limits we sent duration: 45 to a per-second-priced model, expecting the rejection every other model gave us. It was accepted instead, and 45 seconds at $0.40/s billed $18.00 — for a file that came back 8 seconds long. Once a video job is submitted, nothing stops it. Validate durations client-side before they reach the wire, because the API will not always do it for you and you cannot take it back.
Why Is Seedance 2.5 1080p Cheaper Here Than Direct?
ByteDance publishes Seedance 2.5 video tokens at ¥70 per 1M without video input, and ¥77 at 1080p. Mesh's 480p/720p tier is $10.70, which pins the implied conversion at about ¥6.54 to the dollar — so ByteDance's own 1080p rate lands near $11.77 per 1M.
Mesh bills 1080p at $8.77. That is roughly 25% below going direct, and it is the standing rate, not a countdown promotion:
| Clip | Direct (¥77 ≈ $11.77/1M) | Mesh ($8.77/1M) | You keep |
|---|---|---|---|
| 5s @ 1080p | $2.88 | $2.15 | $0.73 |
| 10s @ 1080p | $5.74 | $4.28 | $1.46 |
| 30s @ 1080p | $17.18 | $12.80 | $4.38 |
On a thousand 30-second renders that difference is about $4,380, which is the point at which a rate card stops being trivia.
Two honest caveats. The ¥ figures come from third-party documentation of Volcengine's price list rather than a page we could fetch directly, and the dollar comparison uses the conversion implied by Mesh's own 480p/720p tier — so treat the 25% as approximately right, not to the decimal. And rates move: the 1080p tier appeared partway through our own test day, which is why the measured 5-second clip in the tables above cost $2.6218 at the old $10.70 rate and would cost $2.15 if you ran it now.
If you're evaluating video models this quarter, run your own prompt across a few of them and diff the files. Don't trust anyone's spec sheet, including this one. Every measurement above came from nine billed generations totalling $11.41. Try Seedance 2.5 at 1080p in the console.
Methodology
Every generation in this post was made through Mesh API's /v1/video/generations endpoint on 2026-08-17, one prompt, 16:9, text-to-video, single run per configuration, no best-of-N and no cherry-picking. Latency is wall clock from submit to a downloadable file. Costs are measured as /v1/balance deltas immediately before and after each job, not quoted from a rate card — the rate card is what we were checking. File properties come from ffprobe -show_streams -show_format on the downloaded MP4.
The 1080p rate changed during the test. Every measured cost in the comparison tables was billed at $10.70/1M, the rate in force that morning. A dedicated 1080p tier at $8.77/1M appeared the same evening; we confirmed it with a 10-second 1080p render that billed 488,025 tokens for exactly $4.2800, an effective $8.77/1M. Measured figures are left as measured and dated; the forward-looking pricing grid uses the current $8.77. This is a live rate card, so check /v1/models before quoting either number back to anyone — including us.
Three rows are computed rather than measured: the 10s, 15s and 30s entries in the pricing grid. Those come from the token formula, verified exactly against five independent measured jobs. The 480p tier was not measured and is excluded.
Reproduce it: same prompt, resolution: "720p" and resolution: "1080p", then compare usage.completion_tokens on the two completed jobs. If the numbers match, you're being upscaled. If the second is 2.25x the first, you're not.
Sources
- TechNode, ByteDance launches Seedance 2.5 video-generation model (July 31, 2026) — linked inline above, retrieved 2026-08-17
- ChatSlide, Seedance 2.5 API — Specs, Pricing & Access (2026), for the native-1080p enablement date and the published token-rate card — linked inline above, retrieved 2026-08-17
- Volcengine Ark, Doubao Seedance 2.5 documentation (updated August 11, 2026): https://docs.volcengine.com/docs/82379/2607688 — retrieved 2026-08-17
- Digital Applied, Seedance 2.5 Officially Launches: One-Take 30s AI Video (2026), for reference-input and editing-mode specs attributed to ByteDance's launch post: https://www.digitalapplied.com/blog/seedance-2-5-official-launch-one-take-video — retrieved 2026-08-17
- All measurements: Mesh API
/v1/video/generations,/v1/modelsand/v1/balance, run 2026-08-17. Raw job records,ffprobeoutput and the source clips are archived with this post.
