Bytedance logo
bytedance/seedance-2.5/text-to-video

Dreamina Seedance 2.5 generates native 30-second single-shot video at up to 720p from a single text prompt, reasoning about the whole shot at once so motion, lighting, and subject identity stay coherent from first frame to last.
Inference
Commercial use
Partner

Input

Additional Settings

Customize your input with more control.

Result

Idle

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

EndpointModel ID
Text to Videobytedance/seedance-2.5/text-to-video
Image to Videobytedance/seedance-2.5/image-to-video
Reference to Videobytedance/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:

ResolutionPrice
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

GenerationTokensCost
5s at 720p 16:9 (1280×720)108,000~$2.31
30s at 720p 16:9648,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:

bash
npm install --save @fal-ai/client

Note: @fal-ai/serverless-client is deprecated. Use @fal-ai/client instead.

Python
python
import 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
javascript
import { 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
bash
curl -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)
ParameterTypeDefaultDescription
promptstringRequired. Scene description. Put spoken dialogue in double quotes for lip-synced audio.
resolutionstring"720p""480p" or "720p"
durationstring"auto""auto", or "4" through "30"
aspect_ratiostring"auto""auto", "21:9", "16:9", "4:3", "1:1", "3:4", "9:16"
generate_audiobooleantrueGenerate synchronized audio alongside video.
seedintegerOptional seed for reproducibility.
end_user_idstringRequired 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:916:94:31:13:49:16
480p992×432864×496752×560640×640560×752496×864
720p1470×6301280×7201112×834960×960834×1112720×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_audio does not change your token count — audio is generated in the same pass. Disable it only when you need silence.