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

Dreamina Seedance 2.5 animates a single still into a native 30-second clip at up to 720p, extending one frame into continuous, coherent motion without the drift or stitching of shorter multi-clip workflows.
Inference
Commercial use
Partner

Input

Type # to reference inputs.

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 Image To Video API on fal

Animate a still image into 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/image-to-video


Overview

Seedance 2.5 is the next generation of the world's top-ranked video model. Image to video uses your image as the first frame and generates motion, camera work, and synchronized audio from it. Optionally supply an end frame to control where the video concludes. The model preserves the look, palette, and style of your input while adding natural motion, and audio is co-processed in the same latent space as the visuals — 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. Input images are not billed — you pay only for generated output.

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. For image to video this matters most for subject consistency: your input character or product holds its appearance across the whole clip.

Up to 50 multimodal reference inputs. Images, video, audio, and style references in one generation, up from 12 in the previous generation. If you need more than a start and end frame, use 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 input image.


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/image-to-video",
    arguments={
        "image_url": "https://example.com/portrait.jpg",
        "prompt": "The woman turns toward the window as rain starts against the glass. Slow push-in, handheld feel.",
        "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/image-to-video", {
  input: {
    image_url: "https://example.com/portrait.jpg",
    prompt: "The woman turns toward the window as rain starts against the glass.",
    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/image-to-video \
  -H "Authorization: Key $FAL_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "image_url": "https://example.com/portrait.jpg",
    "prompt": "The woman turns toward the window as rain starts against the glass.",
    "duration": "10",
    "resolution": "720p",
    "aspect_ratio": "16:9"
  }'

Note: You can upload local files with the fal client storage API and pass the returned URL as image_url. Long generations take time — use the queue API rather than a synchronous call for anything past a few seconds of output.


Input schema

Image to Video (bytedance/seedance-2.5/image-to-video)
ParameterTypeDefaultDescription
image_urlstringRequired. Start frame image URL. Accepted: jpg, jpeg, png, webp, gif, avif.
promptstringScene description and motion direction. Put spoken dialogue in double quotes for lip-synced audio.
end_image_urlstringOptional end frame image to control where the video concludes.
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.

With aspect_ratio set to "auto" the model chooses the best fit from your input image. Since frame area drives cost, pass an explicit aspect ratio when you need predictable billing.


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

First-frame animation. Your image anchors identity, palette, and composition; the prompt drives motion, camera, and audio. The model preserves the look and style of your input image while adding natural motion.

Start and end frame control. Supply end_image_url to land the clip on a specific composition — useful for loops, product reveals, and before-and-after transitions.

Native audio. Ambient sound, impacts, and dialogue are generated with the visuals in one pass, not layered afterward.


Tips

  • Match your prompt to your image. Describe what changes, not what is already visible. The image establishes the subject; spend the prompt on motion, camera, and sound.
  • Direct the camera explicitly. "Slow dolly-in", "handheld pan left", "static wide" all land reliably.
  • Dialogue. Wrap spoken lines in double quotes: She looks up and says: "You came back."
  • Use a clean, high-resolution input. Compression artifacts and heavy watermarks in the start frame carry into the motion.
  • Iterate fast. Test style at 4-5 seconds, then scale duration. A 5 second test costs roughly a sixth of a 30 second one.