Result
What would you like to do next?
For 720p, you will be charged roughly $0.4730 per second of generated video, and for 480p, roughly $0.2205 per second of generated video. Your request will cost $0.0214 per 1000 tokens for 480p and 720p video. The number of tokens is roughly given by (height of output video * width of output video * duration * 24) / 1024.
Logs
Run Seedance 2.5 AI Text To Video API on fal
ByteDance's most advanced video generation model. Generate up to 30 seconds of cinematic video with native audio, real-world physics, and director-level camera control, all in a single pass.
bytedance/seedance-2.5/text-to-video
Overview
Seedance 2.5 is the next generation of the world's top-ranked video model. It runs on a unified multimodal architecture that accepts text, images, video clips, and audio as inputs and produces coherent, audio-synchronized video output. Audio is co-processed in the same latent space as the visuals, so on-screen action and sound are synchronized natively, no post-production layering.
API Endpoints
| Endpoint | Model ID |
|---|---|
| Text to Video | bytedance/seedance-2.5/text-to-video |
| Image to Video | bytedance/seedance-2.5/image-to-video |
| Reference to Video | bytedance/seedance-2.5/reference-to-video |
Pricing
Billing is token-based. Tokens are a function of output frame area, duration, and frame rate:
tokens = (output_height * output_width * duration_seconds * 24) / 1024
You are charged $0.0214 per 1000 tokens at both 480p and 720p.
In per-second terms, for standard 16:9 output:
| Resolution | Price |
|---|---|
| 720p with audio | ~$0.4730 / second |
| 480p with audio | ~$0.2205 / second |
Per-second figures are approximations for the common 16:9 case. The token formula is authoritative — wider aspect ratios have larger frame areas and cost more per second, narrower ones cost less.
Worked examples
| Generation | Tokens | Cost |
|---|---|---|
| 5s at 720p 16:9 (1280×720) | 108,000 | ~$2.31 |
| 30s at 720p 16:9 | 648,000 | ~$13.87 |
| 10s at 480p 16:9 (864×496) | 100,440 | ~$2.15 |
What's new in 2.5
Native 30-second generation. A full 30 seconds in a single pass — no stitching, no scene-cut splicing, no visible seams. Roughly double the native ceiling of Seedance 2.0, and a duration no other commercial video model has matched.
Up to 50 multimodal reference inputs. Images, video, audio, and style references in one generation, up from 12 in the previous generation, for far more granular control over subject, motion, and composition. See the reference-to-video endpoint.
Audio in the same latent space. Sound and visuals are generated jointly rather than sequentially, improving lip sync, impact timing, and ambient coherence.
Better prompt adherence. Roughly 20% better, per ByteDance, meaning fewer generations before a usable result.
Intelligent duration. Set duration to "auto" and the model picks the optimal length for the content.
Adaptive aspect ratio. Set aspect_ratio to "auto" and the model chooses the best fit based on your inputs.
Usage
Install the client:
bashnpm install --save @fal-ai/client
Note:
@fal-ai/serverless-clientis deprecated. Use@fal-ai/clientinstead.
Python
pythonimport fal_client result = fal_client.subscribe( "bytedance/seedance-2.5/text-to-video", arguments={ "prompt": "A spear-wielding warrior clashes with a dual-blade fighter in a maple leaf forest. Autumn leaves scatter on each impact. Slow dolly-in, late afternoon light.", "duration": "10", "resolution": "720p", "aspect_ratio": "16:9", } ) print(result["video"]["url"])
JavaScript
javascriptimport { fal } from "@fal-ai/client"; const result = await fal.subscribe("bytedance/seedance-2.5/text-to-video", { input: { prompt: "A spear-wielding warrior clashes with a dual-blade fighter in a maple leaf forest. Autumn leaves scatter on each impact.", duration: "10", resolution: "720p", aspect_ratio: "16:9", }, logs: true, onQueueUpdate: (update) => { if (update.status === "IN_PROGRESS") { update.logs.map((log) => log.message).forEach(console.log); } }, }); console.log(result.data);
REST
bashcurl -X POST https://fal.run/bytedance/seedance-2.5/text-to-video \ -H "Authorization: Key $FAL_KEY" \ -H "Content-Type: application/json" \ -d '{ "prompt": "A spear-wielding warrior clashes with a dual-blade fighter in a maple leaf forest.", "duration": "10", "resolution": "720p", "aspect_ratio": "16:9" }'
Note: Long generations take time. Use the queue API rather than a synchronous call for anything past a few seconds of output.
Input schema
Text to Video (bytedance/seedance-2.5/text-to-video)
| Parameter | Type | Default | Description |
|---|---|---|---|
prompt | string | — | Required. Scene description. Put spoken dialogue in double quotes for lip-synced audio. |
resolution | string | "720p" | "480p" or "720p" |
duration | string | "auto" | "auto", or "4" through "30" |
aspect_ratio | string | "auto" | "auto", "21:9", "16:9", "4:3", "1:1", "3:4", "9:16" |
generate_audio | boolean | true | Generate synchronized audio alongside video. |
seed | integer | — | Optional seed for reproducibility. |
end_user_id | string | — | Required for B2B access. Unique identifier for your end customer. |
Both "auto" settings affect your token count. Pass explicit values for duration and aspect_ratio when you need predictable cost.
Output schema
json{ "video": { "url": "https://v3b.fal.media/files/...", "content_type": "video/mp4", "file_name": "video.mp4", "file_size": 18240512 }, "seed": 1094575694 }
Access the video URL at result["video"]["url"] (Python) or result.data.video.url (JavaScript).
Supported resolutions
| 21:9 | 16:9 | 4:3 | 1:1 | 3:4 | 9:16 | |
|---|---|---|---|---|---|---|
| 480p | 992×432 | 864×496 | 752×560 | 640×640 | 560×752 | 496×864 |
| 720p | 1470×630 | 1280×720 | 1112×834 | 960×960 | 834×1112 | 720×1280 |
Capabilities
Text to video. Describe a scene and get video with matching audio. The model handles multi-subject interactions, camera movements, and emotional tone. For dialogue, put speech in double quotes — the model generates matching lip movements and voice.
Long-form coherence. Because 30 seconds is native rather than stitched, character identity, lighting, and camera language hold across the full clip instead of drifting at splice points.
Motion and physics. Realistic rendering of complex interactions like sports, dancing, fighting, and object collisions.
Tips
- Be specific. Describe camera movements, lighting, mood, and specific actions for best results.
- Dialogue. Wrap spoken lines in double quotes:
The man stopped and said: "Remember this moment." - Structure long prompts. For 20-30 second generations, describe the shot as a sequence of beats in order rather than one dense paragraph.
- Iterate fast. Nail the style with 4-5 second generations, then scale duration. A 5 second test costs roughly a sixth of a 30 second one.
- Leave audio on.
generate_audiodoes not change your token count — audio is generated in the same pass. Disable it only when you need silence.