Input
Type # to reference inputs.
Hint: Drag and drop files from your computer, images from web pages, paste from clipboard (Ctrl/Cmd+V), or provide a URL.
Hint: Drag and drop files from your computer, images from web pages, paste from clipboard (Ctrl/Cmd+V), or provide a URL.
Hint: Drag and drop files from your computer, images from web pages, paste from clipboard (Ctrl/Cmd+V), or provide a URL.
Customize your input with more control.
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 * (input video duration + output video duration) * 24) / 1024. If video inputs are provided the price is multiplied by 0.6. With video inputs and 720p resolution, the price is roughly $0.2838 per second of generated video. With video references, you will be charged for both input and output videos.
Logs
Run Seedance 2.5 AI Reference To Video API on fal
Combine up to 50 multimodal references — images, video, audio, and style — into a single generation of up to 30 seconds with native audio, real-world physics, and director-level camera control.
bytedance/seedance-2.5/reference-to-video
Overview
Seedance 2.5 is the next generation of the world's top-ranked video model, and reference to video is its most controllable endpoint. Supply references for subject appearance, motion style, composition, and rhythm, then describe in the prompt how to combine them. Reference inputs are addressed positionally in the prompt as [Image1], [Video1], [Audio1], etc.
The same endpoint covers video editing and video extension: give it a reference video and describe what to change, or describe what should happen next.
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, and on this endpoint input video duration is billed alongside output:
tokens = (output_height * output_width * (input_video_duration + output_duration) * 24) / 1024
You are charged $0.0214 per 1000 tokens at both 480p and 720p. If any video references are provided, the price is multiplied by 0.6. Image and audio references are not billed.
| Resolution | No video references | With video references |
|---|---|---|
| 720p with audio | ~$0.4730 / second | ~$0.2838 / second |
| 480p with audio | ~$0.2205 / second | ~$0.1323 / second |
Per-second figures are approximations for the common 16:9 case, and in the video-reference column they apply to input and output seconds alike. The token formula is authoritative.
Worked examples
| Generation | Tokens | Cost |
|---|---|---|
| 10s at 720p 16:9, images and audio only | 216,000 | ~$4.62 |
| 10s at 720p 16:9 with an 8s reference video | 388,800 | ~$4.99 (after ×0.6) |
| 30s at 720p 16:9 with a 10s reference video | 864,000 | ~$11.09 (after ×0.6) |
Trim reference videos to the segment that actually matters. Every second of input video you send is a billed second.
What's new in 2.5
Up to 50 multimodal reference inputs. Images, video, audio, and style references in one pass, up from 12 in the previous generation, for far more granular control over subject, motion, and composition.
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.
Audio in the same latent space. Sound and visuals are generated jointly rather than sequentially, which is what makes reference audio usable as an actual timing signal for on-screen action.
Better prompt adherence. Roughly 20% better, per ByteDance, meaning fewer generations before a usable result. This compounds on this endpoint, where prompts carry the most instruction.
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/reference-to-video", arguments={ "prompt": ( "The woman from [Image1], wearing the jacket from [Image2], " "performs the dance from [Video1] on the rooftop from [Image3], " "hitting the beats of [Audio1]. Keep her face and the jacket exact." ), "image_urls": [ "https://example.com/subject.jpg", "https://example.com/jacket.jpg", "https://example.com/rooftop.jpg", ], "video_urls": ["https://example.com/dance.mp4"], "audio_urls": ["https://example.com/track.mp3"], "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/reference-to-video", { input: { prompt: "The woman from [Image1], wearing the jacket from [Image2], performs the dance from [Video1]. Keep her face and the jacket exact.", image_urls: [ "https://example.com/subject.jpg", "https://example.com/jacket.jpg", ], video_urls: ["https://example.com/dance.mp4"], 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/reference-to-video \ -H "Authorization: Key $FAL_KEY" \ -H "Content-Type: application/json" \ -d '{ "prompt": "Replace the perfume in [Video1] with the face cream from [Image1], keeping all original motion.", "video_urls": ["https://example.com/original.mp4"], "image_urls": ["https://example.com/facecream.jpg"], "duration": "10", "resolution": "720p" }'
Note: Use the queue API rather than a synchronous call — reference generations with video inputs are the slowest of the three endpoints.
Input schema
Reference to Video (bytedance/seedance-2.5/reference-to-video)
| Parameter | Type | Default | Description |
|---|---|---|---|
prompt | string | — | Required. Describes the scene and how to combine references. Address references as [Image1], [Video1], [Audio1]. |
image_urls | string[] | — | Image references, in prompt order. Accepted: jpg, jpeg, png, webp, gif, avif. |
video_urls | string[] | — | Video references, in prompt order. Used for motion style, editing, and extension. |
audio_urls | string[] | — | Audio references, in prompt order. Used for rhythm, timing, and voice. |
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. |
Up to 50 reference inputs total across images, videos, and audio. Ordering within each list determines the index used in the prompt: the second entry of image_urls is [Image2].
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
Multimodal composition. Reference video for motion style, images for character appearance and wardrobe, audio for rhythm — then describe how to combine them. Powerful for outfit-change videos, product showcases, character-consistent series, and music-synced content.
Video editing. Provide a reference video and describe changes — replace an object, change a background, alter the style. The model preserves original motion and camera work while applying your edits.
Video extension. Provide a reference video and describe what should happen next. The model continues the scene with consistent characters, environment, and style. With a 30-second native ceiling, extension is for narrative continuation rather than for working around a short duration limit.
Tips
- Label references explicitly.
"The character from [Image1] performs the dance from [Video1]"beats leaving the model to guess which reference does what. - Say what to preserve. On edits, name both sides:
"Replace the perfume in [Video1] with the face cream from [Image1], keeping all original motion." - More references is not automatically better. Each one competes for influence. Start with the two or three that carry the concept, then add.
- Trim input video. Input video seconds are billed. Cut references to the segment you actually need.
- Iterate at 480p. Composition and reference weighting read fine at 480p and cost under half as much. Lock the arrangement there, then re-run the winning seed at 720p.
- Prefer clean reference images. Well-lit, single-subject images give the most reliable identity transfer.


