Seedance 2.0 vs Wan: Compare Video API Costs at the Same Resolution

Compare Seedance 2.0 and Wan 2.7 by resolution, input mode and supplier. Updated 1080p estimates, 4K pricing and code for testing both APIs.

Two vertical video frames side by side, one in warm ByteDance orange and one in cool Alibaba blue, split by a thin price tag reading dollars per second, on a dark background

Updated September 16, 2026: compare matching resolution and input mode. At 1080p text-to-video, Wan 2.7 is cheaper than Seedance 2.0; Seedance’s flagship instead offers a 4K option. Both use POST /v1/videos, so test your actual prompts before choosing on price alone.

Which One Should You Pick?

For a 1080p budget, start with Wan 2.7. For low-resolution drafts, compare Seedance Mini at the required resolution. For 4K, use the flagship Seedance 2.0 rate for 4K, not its 480p starting price.

ScenarioPickWhy
High-volume 1080p clipsWan 2.7$0.15/s versus Seedance 2.0 list $0.34/s; text-to-video
Drafts at 720pSeedance 2.0 Mini$0.08/s list; primary Volcengine $0.04/s; text-to-video
Need 4K outputSeedance 2.0Only one of the two that lists 4K
Clips shorter than 4 secondsWan 2.72s minimum vs Seedance’s 4s
Already tuned to Alibaba motion behaviorWan 2.7Migration cost outweighs price gap
Not sure yetRun bothOne endpoint, one string to swap

Everything below is the math and the specs behind that table, plus the exact code to run both on one call.

Quick Specs Comparison

Prices were refreshed from the Ofox catalog resolution tiers on September 16, 2026. The remaining specification and sample sections retain their original scope. Prices below are USD per second and explicitly distinguish list rates from primary supplier quotes.

SpecSeedance 2.0Seedance 2.0 FastSeedance 2.0 MiniWan 2.7Wan 2.6
Model IDbytedance/seedance-2.0bytedance/seedance-2.0-fastbytedance/seedance-2.0-minialibaba/wan-2.7alibaba/wan-2.6
Text-to-video list USD/s$0.07 (480p), $0.16 (720p), $0.34 (1080p), $1.37 (4K)$0.06 (480p), $0.13 (720p)$0.04 (480p), $0.08 (720p)$0.086 (720p), $0.15 (1080p)$0.086 (720p), $0.15 (1080p)
Max resolution4K720p720p1080p1080p
Default resolution1080p720p720p1080p1080p
Modest2v, i2v, v2vt2v, i2v, v2vt2v, i2v, v2vt2v, i2v, v2vt2v, i2v
Duration range4–15s4–15s4–15s2–15s2–15s
AudioYesYesYesYesYes
Aspect ratios16:9, 9:16, 1:1, adaptivesamesame16:9, 9:16, 1:116:9, 9:16, 1:1
Endpoint/v1/videos/v1/videos/v1/videos/v1/videos/v1/videos

Seedance 2.0 reaches 4K; Wan 2.7 has a 2-second minimum. Neither capability makes a starting price valid at every resolution. At matched 1080p text-to-video, Wan has the lower rate.

Where Seedance and Wan Come From

The two models trace back to the two Chinese labs with the deepest video-generation research. Seedance is part of ByteDance’s Seed group, the same team behind the Seedream image models and the short-video pipeline that feeds Douyin and TikTok. Wan is Alibaba’s Tongyi line, developed alongside the Qwen family and the Model Studio platform. You can read the vendor material at ByteDance Seed’s Seedance page and the Wan project site.

For a developer, the lineage matters less than the access path. Both models are trained and hosted in China first, which historically meant separate consoles, separate billing, and phone-number verification that does not always accept a foreign number. Routing them through the ofox gateway collapses that into one key and one endpoint, which is the practical reason this comparison is about the models rather than the paperwork. The interesting decision is price and capability, not which console you can sign into.

That framing also sets up the honest limit of a spec sheet. ByteDance and Alibaba both tune for their home platforms, so motion style, default pacing, and prompt interpretation differ in ways a datasheet does not capture. The only way to see it is to run the same prompt through both, which is the next section.

Same-Prompt Test: What the Price Gap Buys

Price and spec sheets settle the easy part. The harder question is whether the cheaper model holds up on motion, prompt adherence, and audio sync. Spec parity does not mean output parity, so this section runs the same prompt through both flagships and compares the result rather than trusting the datasheet.

Test prompt one, held identical across models, 1080p, 16:9, 8 seconds, audio on:

“A ceramic coffee cup on a wooden table, morning light from a window, steam rising, a hand enters frame and lifts the cup. Ambient cafe sound.”

Four frames each from the same coffee-cup prompt: Seedance 2.0 on the top row, Wan 2.7 on the bottom row, both at 1080p

Same prompt, four frames per model — Seedance 2.0 (top) and Wan 2.7 (bottom). Both render the cup, steam, and warm window light; watch the hand across the four frames.

The same two clips in motion, side by side: Seedance 2.0 (left), Wan 2.7 (right), looping and muted. The hand enters and lifts the cup on the Seedance side; on the Wan side the cup and steam hold but the lift barely reads.

CriterionSeedance 2.0Wan 2.7Notes
Prompt adherence (objects, action)Full — the hand enters and lifts the cupPartial — cup and steam land, the lift barely readsDoes the hand actually lift the cup
Motion coherence (no warping)Clean across the four framesClean across the four framesSteam and hand physics across frames
Audio level (measured)Full synced bed, -34 dB avg / -5 dB peakPresent but faint, -43 dB avg / -30 dB peakBoth ship a synced audio track; Wan’s runs ~9 dB quieter on this clip
Current estimated output cost (8s, 1080p)$2.72$1.208 × USD/s

The cost row is a current text-to-video list-rate estimate for an 8-second 1080p output, not the invoice for the historical samples: Seedance $2.72 versus Wan $1.20. At the current primary BytePlus quote, the Seedance estimate is $2.48. The original sample observations are unchanged.

A single calm prompt does not stress a video model, so a fair test also needs a motion-heavy prompt where cheaper models tend to break. Test prompt two, same settings:

“A skateboarder does a kickflip down a set of stairs, fast camera pan, crowd in the background, daytime.”

Four frames each from the skateboard kickflip prompt: Seedance 2.0 on the top row, Wan 2.7 on the bottom row

The motion-heavy prompt: Seedance 2.0 (top) holds the board, feet, and background crowd coherent through the trick; Wan 2.7 (bottom) keeps the wide shots but drifts into a distorted close-up mid-sequence.

Motion tells the story the stills can’t: Seedance 2.0 (left), Wan 2.7 (right), looping. The board and feet stay locked through the flip on the Seedance side, while the Wan side snaps to a distorted close-up partway through before recovering the wide shot.

This is the prompt that separates the tiers. Fast camera motion plus a rigid-body trick plus background crowd is where warping, limb duplication, and physics drift show up. Judge both clips for whether the board and feet stay coherent through the flip and whether the pan smears the background. Run both prompts on bytedance/seedance-2.0 and alibaba/wan-2.7 and watch the two clips side by side before you commit a pipeline to either. Longer clips compound the effect: at 15 seconds, small per-frame drift accumulates, so if your format runs long, test at your real duration rather than a safe 5-second sample.

The Async Workflow: Submit, Poll, or Webhook

Video generation is not a single blocking request the way a chat completion is. The ofox POST /v1/videos call returns immediately with 202 Accepted and a polling_url. The clip renders in the background, and you find out it is ready one of two ways: poll the task, or register a webhook.

The task moves through a small state machine. You keep checking, or you get called back, until it reaches a terminal state.

ofox /v1/videos async task state machineAsync task lifecycleOne POST /v1/videos, then poll or webhook until a terminal state202 Accepted+ polling_urlpendingqueuedprocessingrenderingDELETETTLcompleteddownload clipfailedread error, retrycancelledyou stopped itexpiredTTL elapsed, regenterminal states — polling stops here

The task moves through three live states, then stops at one of four terminal states. Poll GET /v1/videos/{id} or register a webhook; DELETE cancels, and results expire on a TTL.

Field / stateMeaningWhat to do
202 + polling_urlTask accepted, rendering startedSave the URL, begin polling
status: pendingQueued, not startedKeep polling, no faster than 1/s
status: processingRendering in progressKeep polling
status: completedDone, result URL attachedDownload the clip
status: failedGeneration errorRead error, retry or fall back
status: cancelledYou called DELETEStop
status: expiredResult TTL elapsedRegenerate

Two operational details save you a support ticket. First, poll no faster than once per second; the GET /v1/videos/{id} endpoint is rate-limit protected, and a tight loop will get throttled. Second, for production you usually want the webhook instead of polling. Pass a callback_url when you create the task and ofox posts an HMAC-signed payload when the clip finishes. The URL must be HTTPS and public: private, loopback, and cloud-metadata addresses are rejected by SSRF validation, and a bad address fails at creation time with 400 invalid_callback_url. If you need to abort a run, DELETE /v1/videos/{id} cancels it. All of this is identical for Seedance and Wan, which is the point: the operational surface does not change when you swap the model.

Common Errors and Gotchas

Most failures with either model come from the same handful of mismatches, not from the models themselves.

SymptomCauseFix
400 on a 2–3s clip with SeedanceSeedance minimum duration is 4sUse Wan (2s floor) or raise duration to 4s
Resolution rejected on Fast / MiniFast and Mini cap at 720pRequest 720p, or use flagship bytedance/seedance-2.0 for 1080p / 4K
400 invalid_callback_urlWebhook not HTTPS or points to a private addressUse a public HTTPS endpoint
Task stuck polling foreverPolling too fast and getting throttled, or ignoring terminal statesPoll ≤1/s, break on completed / failed / cancelled / expired
Got t2v when you wanted i2vNo image in the payloadPass frame_images (or input_references) to trigger image mode
Unexpected aspect ratioWan has no adaptive optionSet an explicit ratio; only Seedance supports adaptive

The mode-inference behavior is the one that surprises people. The endpoint does not take a mode flag; it reads your payload. No images means text-to-video, frame_images means image or first/last-frame, and input_references means reference-guided. That keeps the call shape identical across both model families, but it also means a forgotten image field silently gives you the wrong mode instead of an error.

Prompting and Audio: Practical Notes

Neither model needs a special prompt dialect, but a few habits raise the hit rate on both. For text-to-video, describe the subject, the action, the camera, and the setting as separate clauses rather than one run-on sentence; both families parse “what, doing what, shot how, where” more reliably than a wall of adjectives. Keep the action singular. A prompt that asks for a kickflip and a crowd reaction and a lens flare in eight seconds usually gets one of the three, so if you need all three, chain shorter clips instead of overloading one generation.

Audio is on by default on every tier here, and that changes how you write. Because both models generate a synced audio bed, a prompt that mentions “ambient cafe sound” or “footsteps on gravel” gets a matching track, while a prompt that says nothing about sound gets whatever the model infers, which is not always what you want. Name the audio you expect, or you inherit a guess. If you are compositing the clip into a timeline with your own sound design, that generated bed is noise you have to strip, so treat audio as a decision, not a freebie.

For image-to-video, the frame you pass matters more than the prompt. A clean, high-resolution first frame with the subject already composed gives both models a stable anchor, and the prompt then only has to describe motion: “slow push in,” “hair moves in the wind,” “camera orbits left.” Seedance’s adaptive aspect ratio helps here, because it can match the frame you hand it instead of forcing a crop, which means one reference image can drive a 16:9 and a 9:16 output without re-framing. Wan needs an explicit ratio, so plan the crop before you submit.

Pricing Math: Estimates by Resolution

The table estimates 2,000 text-to-video outputs of 5 seconds each, with no input video or retries. Mini and Fast rows use 720p; the two other rows use 1080p, so do not interpret all four as equal-quality deliverables. These are estimates, not measured invoices.

Model / resolutionList USD/s5s at list2,000 at listPrimary supplier USD/s2,000 at supplier quote
Seedance 2.0 Mini / 720p$0.08$0.40$800$0.04 (Volcengine)$400
Seedance 2.0 Fast / 720p$0.13$0.65$1,300$0.091 (Volcengine)$910
Seedance 2.0 / 1080p$0.34$1.70$3,400$0.31 (BytePlus)$3,100
Wan 2.7 / 1080p$0.15$0.75$1,500$0.15 (Aliyun)$1,500

At matched 1080p, Seedance 2.0 costs $1,900 more than Wan at list rates, or $1,600 more at the quoted primary supplier rates. If you generate 2,000 Mini drafts at 480p and then separately render 200 selected clips at 1080p on Seedance 2.0, the list-rate estimate is 2,000 × 5 × $0.04 + 200 × 5 × $0.34 = $740; using the listed primary quotes gives $200 + $310 = $510. The selected drafts are still charged: do not count only the discarded ones.

At 1080p list rates, a 5-second text-to-video output is $1.70 on Seedance 2.0 versus $0.75 on Wan 2.7; at 15 seconds it is $5.10 versus $2.25. For 4K Seedance 2.0, the list rate is $1.37/s and the primary BytePlus quote is $1.24/s. Video input can change both the tier and billable seconds; do not reuse these text-only estimates for video-to-video.

When to Pick Seedance 2.0

Reach for Seedance 2.0 when volume and resolution both matter. The three-tier structure lets you meet cost to quality per job instead of paying one flat rate: Mini for throwaway variants and drafts, Fast for approved 720p output, flagship for hero clips that need 1080p or 4K. Because all three share one model-ID prefix and one endpoint, you can route by tier inside your own code without touching auth. If Seedance is settled and the only open question is which tier, Seedance 2.0 vs Fast vs Mini walks that choice resolution by resolution.

It is the right default for e-commerce product video, social ad variants, and any pipeline where you generate hundreds or thousands of short clips and iterate. The 4K ceiling on the flagship also means you do not outgrow it the moment a client asks for a higher-resolution master. The adaptive aspect ratio is a quiet convenience here too: for a mixed feed of 16:9, 9:16, and 1:1 placements, you can let the model fit the frame instead of maintaining three prompt variants.

Where it bites: nothing under 4 seconds, and the cheap tiers stop at 720p. If your whole business is 2-second loops or 1080p-minimum output on a budget, the tier math stops helping.

When to Pick Wan

Pick Wan 2.7 when the clip is short or when you are already invested in Alibaba’s stack. The 2-second minimum duration is a genuine capability Seedance does not have, and for loops, stingers, and micro-transitions that floor is the deciding factor, not the rate. Wan 2.7 also adds video-to-video, which Wan 2.6 lacks, so use 2.7 if you extend or restyle existing footage.

Prompt tuning, reference material and QA also affect the choice. Compare the same output requirements and include migration work and rejected generations in your budget.

When NOT to Pick Either (and What to Use Instead)

Neither Seedance nor Wan is the answer for every job.

Try Both via ofox: A/B on One Endpoint in 10 Lines

This is where Seedance vs Wan stops being a spec argument. Because both live behind ofox’s POST /v1/videos, you switch models by editing the model string. The call is async, exactly as described above: submit, get a polling_url, poll until completed.

For a low-resolution text-to-video trial, bytedance/seedance-2.0-mini lists $0.04/s at 480p; its primary Volcengine quote is $0.02/s as of September 16. Requests incur charges; this is not a free benchmark.

A/B both models in Python

import os, time, requests

OFOX = "https://api.ofox.run/v1"
HEAD = {"Authorization": f"Bearer {os.environ['OFOX_API_KEY']}"}

def generate(model, prompt):
    r = requests.post(f"{OFOX}/videos", headers=HEAD, json={
        "model": model,
        "prompt": prompt,
        "duration": 8,
        "resolution": "1080p",
        "aspect_ratio": "16:9",
    })
    r.raise_for_status()
    poll = r.json()["polling_url"]        # 202 + polling_url
    while True:
        s = requests.get(poll, headers=HEAD).json()
        if s["status"] in ("completed", "failed", "cancelled", "expired"):
            return model, s
        time.sleep(2)                     # poll no faster than 1/s

prompt = "A ceramic coffee cup on a wooden table, morning light, steam rising."
for model in ("bytedance/seedance-2.0", "alibaba/wan-2.7"):
    print(*generate(model, prompt))       # swap the string, same call

The same call in Node

const OFOX = "https://api.ofox.run/v1";
const HEAD = { Authorization: `Bearer ${process.env.OFOX_API_KEY}`,
               "Content-Type": "application/json" };

async function generate(model, prompt) {
  const res = await fetch(`${OFOX}/videos`, {
    method: "POST", headers: HEAD,
    body: JSON.stringify({ model, prompt, duration: 8,
                           resolution: "1080p", aspect_ratio: "16:9" }),
  });
  let { polling_url } = await res.json();          // 202 + polling_url
  while (true) {
    const s = await (await fetch(polling_url, { headers: HEAD })).json();
    if (["completed", "failed", "cancelled", "expired"].includes(s.status))
      return { model, s };
    await new Promise(r => setTimeout(r, 2000));   // poll no faster than 1/s
  }
}

const prompt = "A ceramic coffee cup on a wooden table, morning light, steam rising.";
for (const model of ["bytedance/seedance-2.0", "alibaba/wan-2.7"])
  console.log(await generate(model, prompt));      // one string swaps the model

Image-to-video: same call, add a frame

To drive either model from a still, pass frame_images instead of relying on the prompt alone. The endpoint reads the payload and switches to image-to-video without a different route:

r = requests.post(f"{OFOX}/videos", headers=HEAD, json={
    "model": "bytedance/seedance-2.0",
    "prompt": "camera slowly pushes in, steam rises",
    "frame_images": ["https://example.com/first-frame.png"],
    "duration": 8,
    "resolution": "1080p",
})

Two model families, one auth, one schema. That is the practical reason to A/B them instead of picking on the datasheet.

The Seedance API guide has the full Seedance side of this comparison, all four models with prices.

FAQ

Is Seedance 2.0 cheaper than Wan? Not at 1080p. For text-to-video, Seedance 2.0 lists $0.34/s versus Wan 2.7 at $0.15/s. A 5-second output estimate is $1.70 versus $0.75. Seedance’s primary BytePlus quote is $0.31/s, or $1.55 for 5 seconds; it is still higher. Mini and Fast are separate models capped at 720p.

What is the model ID for Seedance 2.0 on ofox? bytedance/seedance-2.0, bytedance/seedance-2.0-fast, and bytedance/seedance-2.0-mini. Wan is alibaba/wan-2.7 and alibaba/wan-2.6.

Does Seedance 2.0 support 4K? The flagship bytedance/seedance-2.0 tier lists 4K. Fast and Mini cap at 720p, and Wan caps at 1080p.

Can both generate audio? Yes. All Seedance 2.0 tiers and both Wan versions list synced audio. Wan starts at a 2-second minimum, Seedance at 4 seconds.

Do I need separate API keys? No. Both run through one ofox key and POST /v1/videos. Swapping models is a one-string change.

Which is better for image-to-video? Both list i2v. Seedance adds v2v on all three tiers; Wan 2.7 adds v2v, Wan 2.6 does not.

What is the cheapest video model on ofox right now? For low-resolution drafts, Seedance 2.0 Mini lists $0.04/s at 480p and $0.08/s at 720p for text-to-video. The September 16 primary Volcengine quotes are $0.02/s and $0.04/s respectively. These are conditional supplier prices, not a universal rate for every mode.

Sources Checked for This Refresh

Frequently Asked Questions

Is Seedance 2.0 cheaper than Wan?
Not at 1080p. For text-to-video, Seedance 2.0 lists $0.34/s versus Wan 2.7 at $0.15/s. A 5-second output estimate is $1.70 versus $0.75. Seedance’s primary BytePlus quote is $0.31/s, or $1.55 for 5 seconds; it is still higher. Mini and Fast are separate models capped at 720p.
What is the model ID for Seedance 2.0 on ofox?
bytedance/seedance-2.0 for the flagship tier, bytedance/seedance-2.0-fast, and bytedance/seedance-2.0-mini. Wan is alibaba/wan-2.7 and alibaba/wan-2.6. All five run through the same POST /v1/videos endpoint, so switching is a one-string change.
Does Seedance 2.0 support 4K video?
The flagship bytedance/seedance-2.0 tier lists 480p, 720p, 1080p, and 4K. The Fast and Mini tiers cap at 720p. Wan 2.6 and 2.7 cap at 1080p. If you need 4K out of the box, Seedance 2.0 flagship is the only one of the two that does it.
Can Seedance 2.0 and Wan generate audio?
Both do. Seedance 2.0 (all three tiers) and Wan 2.6 / 2.7 all list supports_audio: true, so you get synced audio without a separate voice pass. Minimum clip length differs: Wan starts at 2 seconds, Seedance at 4 seconds.
Do I need separate API keys for Seedance and Wan?
No. Both are behind one ofox key and one endpoint (POST /v1/videos). You send model, prompt, duration, resolution, and aspect_ratio, get a 202 with a polling_url, then poll GET /v1/videos/{id} until status is completed. Swapping models means editing the model field.
Which is better for image-to-video?
Both list i2v. Seedance 2.0 also lists video-to-video across all three tiers; Wan 2.7 adds v2v while Wan 2.6 does not. For first-frame or reference-guided runs, the ofox /v1/videos schema infers the mode from whether you pass frame_images or input_references, so the call shape is identical for both models.
What is the cheapest way to generate AI video in 2026?
For low-resolution drafts, Seedance 2.0 Mini lists $0.04/s at 480p and $0.08/s at 720p for text-to-video. The September 16 primary Volcengine quotes are $0.02/s and $0.04/s respectively. These are conditional supplier prices, not a universal rate for every mode.