Seedance 2.0: Unit-Based Pricing and a 21:9 Aspect Ratio
Seedance 2.0 bills at $0.014 per unit, not per second - and it's the only model on fal.ai that supports native 21:9 ultrawide output.
What Seedance 2.0 is
Seedance 2.0 is ByteDance's video model. On fal.ai it runs as bytedance/seedance-2.0/text-to-video and bytedance/seedance-2.0/image-to-video. It's unusual in two ways: it prices in units (not seconds), and it supports an auto duration mode where the model decides clip length based on prompt density.
What it does well
Aspect ratio coverage is the broadest on the platform: auto, 21:9, 16:9, 4:3, 1:1, 3:4, 9:16. The 21:9 ultrawide is unique here - no other model on fal.ai supports it natively. Useful for trailer-style content.
Audio generation is on by default and ships in the same pass as video - dialogue, SFX, ambient, all synchronized. The duration: "auto" option lets the model self-pace: a tight single-action prompt tends to land at 4-6 seconds, while a multi-beat prompt extends toward the 15-second ceiling. On the I2V endpoint, you get end_image_url for bidirectional frame anchoring - give it a start and end frame and the model interpolates the middle.

What it can't do
Resolution tops out at 720p. There's no 1080p or 4K option here. No negative_prompt field - you have to write exclusions into the positive prompt or work around them. Note that duration is passed as a string ("auto" or "4" through "15"), not an integer.
Parameters that matter
| Parameter | Type | Default | Options |
|---|---|---|---|
| `prompt` | string | required | - |
| `duration` | string | `auto` | `auto`, `"4"`-`"15"` |
| `resolution` | string | `720p` | `480p`, `720p` |
| `aspect_ratio` | string | `auto` | 7 options including `21:9` |
| `generate_audio` | boolean | `true` | cost unchanged either way |
| `seed` | integer | - | - |
| `end_image_url` | string | - | I2V only |
On the image-to-video endpoint, image_url is required (JPEG/PNG/WebP, max 30 MB). end_image_url accepts the same formats and enables a start-to-end transition.
Pricing
$0.014 per unit. Units are not seconds - they depend on resolution, duration, and whether audio is generated. Practically: a 10-second 720p clip with audio typically lands in the $0.14-$0.28 range. At 480p the same call is noticeably cheaper. This is the one model here where you can't calculate cost from duration alone - run a short test generation to measure units consumed for your settings, then extrapolate.
Toggling generate_audio off doesn't save money - the per-unit rate is identical. It may shave a bit of generation time.

Working example
1import { fal } from "@fal-ai/client";23const result = await fal.subscribe("bytedance/seedance-2.0/text-to-video", {4 input: {5 prompt: "A street musician plays guitar on a rain-wet sidewalk, neon reflections, passersby blurred",6 aspect_ratio: "21:9",7 resolution: "720p",8 duration: "auto",9 generate_audio: true,10 seed: 42,11 },12});1314console.log(result.data.video.url);15console.log("Seed used:", result.data.seed);
When to pick Seedance 2.0
Pick it for 21:9 cinematic framing, for duration: "auto" when you want the model to self-pace, or for image-to-video sequences that need both start and end frame anchors. Skip it when 1080p is a hard requirement (resolution caps at 720p) or when you need precise negative-prompt exclusion control. Unit-based pricing makes cost modeling trickier than flat-per-second competitors - budget accordingly.
