Wan 2.6 vs Wan 2.7: Subtle API Shifts You Need to Know
Most of Wan 2.7 looks like 2.6. The differences are small but break existing pipelines if you ignore them.
The verdict up front
Migrating from Wan 2.6 to 2.7 looks like a no-op until you actually run your first batch. The endpoint path moved, a new audio_url parameter landed, the prompt expander flag is now part of the public surface, and duration has always been an integer but is easier to trip on when you are copying old code. Plan a 30-minute audit before you ship.

The four shifts that matter
Endpoint path. The 2.7 text-to-video endpoint routes through fal-ai/wan-27-t2v/text-to-video at the path layer while the public model ID is fal-ai/wan/v2.7/text-to-video. If you have hardcoded the 2.6 path or a custom proxy, update both the client string and any internal routers.
audio_url parameter. Wan 2.7 accepts an audio_url that drives the video from supplied audio. WAV or MP3, 3 to 30 seconds, under 15 MB. If you skip it, the model writes matching background music on its own. This is not a synthesizer. It does not generate dialogue. It generates a video synced to the audio file you provide.
enable_prompt_expansion. The internal LLM rewriter is now a first-class public flag, default true. When it is on, the response includes an actual_prompt field showing the rewritten string the diffusion model actually saw. Log it. For reproducibility, turn expansion off and paste the actual_prompt back in as your new prompt.
negative_prompt cap. Wan 2.7's negative_prompt is explicitly capped at 500 characters. If you were carrying a 1200-character negative list from 2.6, it will truncate or reject. Trim to the mechanical failures that actually matter.
Spec comparison
| Parameter | Wan 2.6 | Wan 2.7 |
|---|---|---|
| Endpoint path | fal-ai/wan/v2.6/text-to-video | fal-ai/wan-27-t2v/text-to-video (routed via fal-ai/wan/v2.7/text-to-video) |
| Price | $0.10 per second | $0.10 per second |
| Resolution | 720p, 1080p | 720p, 1080p |
| Duration | integer | integer, 2 to 15 |
| Aspect ratio | 16:9, 9:16, 1:1, 4:3, 3:4 | 16:9, 9:16, 1:1, 4:3, 3:4 |
| audio_url | not exposed | WAV/MP3, 3-30s, <15MB |
| enable_prompt_expansion | internal | public flag, default true |
| actual_prompt in response | not returned | returned when expansion is on |
| negative_prompt cap | informal | explicit 500 char limit |
Price is identical. Resolution tiers are identical. The important detail is that duration is an integer, not a string, and that was true on 2.6 too. People still get it wrong after the migration because they copy-paste from other model docs.
The port checklist

- Update the endpoint path in every client call. Grep for
v2.6and confirm every match is intentional. - Decide whether to expose
audio_urlto your users, or to keep Wan writing its own background music. Most UGC flows keep the default; most branded work passes a file. - Log
actual_prompton every response. You want this data before you need it. - Audit any code that sets
duration. Confirm it is an integer. Stringified values fail validation. - Trim your
negative_promptto under 500 characters. Prioritize mechanical fails like extra fingers, flicker, warping, watermark, text.
Why this is a small migration, not a free one
The difference between Wan 2.6 and 2.7 looks cosmetic from a product description. In practice, four small API changes land in the middle of a working pipeline. Each one on its own is recoverable. The pattern that bites you is shipping the migration without checking, finding a broken batch at 2am, and rolling back because you do not know which of the four changes caused it.
Thirty minutes of audit saves a week of rollback-and-retry. The pricing is the same. The parameter surface is slightly larger and slightly stricter. Port deliberately.