Wan 2.7 vs Seedance 2.0: Who Obeys the Prompt?
Wan 2.7 rewrites your prompt by default and charges per second. Seedance 2.0 ships native audio and 21:9 for pennies but caps at 720p. Pick based on what you're willing to give up.
The actual tradeoff
You have a prompt-heavy workflow. You're not picking between good and bad. You're picking between two different philosophies about what the model should do with your words.
Wan 2.7 runs your prompt through an expansion step before generation. It charges per second and caps at 1080p. Seedance 2.0 takes your prompt literally, generates native audio, supports 21:9, and runs on unit-based pricing that works out cheaper on most clips. It caps at 720p and has no negative prompt at all.
That's the whole decision.

Spec comparison
| Feature | Wan 2.7 T2V | Seedance 2.0 T2V |
|---|---|---|
| Endpoint | `fal-ai/wan/v2.7/text-to-video` | `bytedance/seedance-2.0/text-to-video` |
| Resolution | 720p, 1080p | 480p, 720p |
| Duration | 2-15s (integer) | 4-15s or `auto` (string) |
| Aspect ratios | 16:9, 9:16, 1:1, 4:3, 3:4 | auto, 21:9, 16:9, 4:3, 1:1, 3:4, 9:16 |
| Native audio | Auto-generated BGM; supports `audio_url` driver | `generate_audio: true` by default |
| Negative prompt | Yes (max 500 chars) | No parameter |
| Seed | Yes (0 to 2147483647) | Yes (results still vary slightly) |
| Prompt rewriting | `enable_prompt_expansion` (default true) | None |
| Pricing (T2V) | $0.10/sec | $0.014/unit |

What enable_prompt_expansion actually does to you
This is the footgun. Wan 2.7's expansion is on by default. You submit A courier runs across a rooftop at dusk. The model rewrites it internally into something like A young delivery person in dark athletic wear sprints across a rain-slicked urban rooftop as the sun sets behind the skyline, cinematic wide shot..., then generates from the rewritten version.
That's fine for one-off clips. For prompt-heavy work where you're iterating against specific words, it's noise. You tune courier and the model trades it for delivery person. Set enable_prompt_expansion: false and you get deterministic behavior back. The actual_prompt field in the response tells you what the model actually saw.
Seedance doesn't rewrite anything. What you send is what gets rendered.
When Wan 2.7 wins
- You need 1080p. Seedance caps at 720p and that's that.
- You need
negative_prompt. Seedance has no equivalent. - You're driving lip-sync or music timing via
audio_url. Seedance has no audio input. - Your duration is fixed as an integer and you want to A/B test 3s vs 4s.
When Seedance 2.0 wins
- 21:9 cinematic framing. Wan doesn't offer it.
- Native dialogue and SFX in one call. Wan auto-generates background music but not speech.
- Cost-sensitive iteration. Unit pricing ends up cheaper than $0.10/sec on most clips.
- You want the model to pick the duration via
duration: "auto".
Honest weaknesses
Wan 2.7: the expansion default has burned people. The 1080p tier costs 10x what Seedance costs per clip. Audio is background-music-only unless you feed a driving track.
Seedance 2.0: 720p ceiling is a hard wall for premium deliverables. No negative prompt means artifacts you want to exclude have to be handled by prompt engineering alone. Seed reproducibility is "close," not exact.
Different input shapes
Wan 2.7, deterministic prompt, expansion off:
1import fal_client23result = fal_client.run(4 "fal-ai/wan/v2.7/text-to-video",5 arguments={6 "prompt": "A courier runs across a rain-slicked rooftop at dusk, neon cyan rim light",7 "negative_prompt": "daylight, motion blur, low quality",8 "resolution": "1080p",9 "aspect_ratio": "16:9",10 "duration": 8,11 "enable_prompt_expansion": False,12 "seed": 42,13 },14)15print(result["actual_prompt"])
Seedance 2.0, audio on, 21:9, model-chosen length:
1import fal_client23result = fal_client.run(4 "bytedance/seedance-2.0/text-to-video",5 arguments={6 "prompt": "A courier runs across a rain-slicked rooftop at dusk, neon cyan rim light, distant city hum and footsteps",7 "resolution": "720p",8 "aspect_ratio": "21:9",9 "duration": "auto",10 "generate_audio": True,11 },12)
Note the shape difference. Wan 2.7's duration is an integer. Seedance's is a string enum including auto. Your pipeline code has to branch on that.

Verdict
If you care about 1080p and precise exclusion via negative prompts, Wan 2.7, but turn expansion off. If you care about cost per clip, 21:9, or native dialogue audio, Seedance 2.0 and live with 720p.