ByteDance Seedance 2.5 reference-to-video via Fal.AI. Generates video from up to 50 multimodal references — up to 30 images, 10 videos, and 10 audio files — locking a character, set, and palette across a full 30-second take. Reference inputs are addressed from the prompt as @Image1, @Video1, @Audio1, and drive motion transfer, editing, extension, and lip-sync.
Test this model instantly in the Console Playground — no code required
Copy usage instructions for Claude, ChatGPT, or other AI
curl -X POST "https://api.core.today/v1/predictions" \
-H "Content-Type: application/json" \
-H "X-API-Key: cdt_your_api_key" \
-d '{
"model": "bytedance/seedance-2.5/reference-to-video",
"input": {
"prompt": "An octopus finds a football in the ocean and excitedly calls its octopus friends to come and play. Cut scene to an octopus football game under the sea.",
"image_urls": [
"https://v3b.fal.media/files/b/0a8eba37/Cqg-4Uwzyz4DELfceT1CF_a17e588773ec45b1a9e6f100a787b80b.jpg"
],
"duration": "5",
"resolution": "720p",
"aspect_ratio": "auto",
"generate_audio": true
}
}'| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
prompt | string | Yes | - | The text prompt used to generate the video. Address reference inputs as @Image1, @Video1, @Audio1, etc. For dialogue, put the spoken words in double quotes. |
duration | string | Yes | 5 | Duration of the video in seconds (4-30), sent as a string. Required — upstream also accepts "auto", but the resulting length is unknown at request time and cannot be billed accurately, so this gateway requires an explicit duration. 456789101112131415161718192021222324252627282930 |
image_urls | array | No | - | Reference images to guide video generation, addressed in the prompt as @Image1, @Image2, etc. Supported formats: JPG, PNG, WebP, BMP, TIFF, GIF, HEIC, HEIF. Max 30 MB per image, up to 30 images. Total files across all modalities must not exceed 50. |
video_urls | array | No | - | Reference videos to guide video generation, addressed in the prompt as @Video1, @Video2, etc. Supported formats: MP4, MOV. Up to 10 videos; each 1.8-30.2s and at most 200 MB, combined duration at most 30.2s. Supplying any reference video switches billing to the video_in rate, which bills the reference footage as well as the output. |
audio_urls | array | No | - | Reference audio to guide video generation, addressed in the prompt as @Audio1, @Audio2, etc. Supported formats: MP3, WAV. Up to 10 files; each 1.8-30.2s and at most 15 MB, combined duration at most 30.2s. Requires at least one reference image or video. |
resolution | string | No | 720p | Video resolution — 480p for faster generation, 720p for balance. 480p720p |
aspect_ratio | string | No | auto | The aspect ratio of the generated video. Use 16:9 for landscape, 9:16 for portrait/vertical, 1:1 for square, 21:9 for ultrawide cinematic, or auto to let the model decide. auto21:916:94:31:13:49:16 |
generate_audio | boolean | No | true | Whether to generate synchronized audio for the video, including sound effects, ambient sounds, and lip-synced speech. The cost of video generation is the same regardless of whether audio is generated. |
There are 3 ways to provide files for the image_urlsvideo_urlsaudio_urls parameters:
Pass a publicly accessible URL directly. With the Storage API (POST /v1/files/upload-url) the file uploads straight to S3 (50MB per file) and you pass the returned file_url.
{
"model": "bytedance/seedance-2.5/reference-to-video",
"input": {
"prompt": "your prompt here",
"image_urls": ["https://example.com/image.jpg"]
}
}Attach files directly to POST /v1/predictions/upload. No separate upload step, but the bytes pass through the API server so the whole request is capped at 10MB.
curl -X POST "https://api.core.today/v1/predictions/upload" \
-H "X-API-Key: cdt_your_api_key" \
-F "model=bytedance/seedance-2.5/reference-to-video" \
-F 'input={"prompt":"your prompt here"}' \
-F "file:image_urls=@your_file.png"Common parameters used when calling POST /v1/predictions.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
model | string | Yes | - | Model identifier |
input | object | Yes | - | Object containing the model-specific parameters from the table above |
output_folder | string | No | - | Folder path for output files (max 256 chars, '..' not allowed) |
webhook_url | string | No | - | Webhook URL to call on completion |
is_public | boolean | No | false | If true, output files are also available via permanent public URLs |
Reference images lock the subject and style; no reference video, so billing stays on the base per-second rate.
curl -X POST "https://api.core.today/v1/predictions" \
-H "Content-Type: application/json" \
-H "X-API-Key: cdt_your_api_key" \
-d '{
"model": "bytedance/seedance-2.5/reference-to-video",
"input": {
"prompt": "An octopus finds a football in the ocean and excitedly calls its octopus friends to come and play. Cut scene to an octopus football game under the sea.",
"image_urls": [
"https://v3b.fal.media/files/b/0a8eba37/Cqg-4Uwzyz4DELfceT1CF_a17e588773ec45b1a9e6f100a787b80b.jpg"
],
"duration": "5",
"resolution": "720p",
"aspect_ratio": "auto",
"generate_audio": true
}
}'Combine a reference video with a product image and describe what to change and what to keep. Reference videos are billed at the video_in rate.
curl -X POST "https://api.core.today/v1/predictions" \
-H "Content-Type: application/json" \
-H "X-API-Key: cdt_your_api_key" \
-d '{
"model": "bytedance/seedance-2.5/reference-to-video",
"input": {
"prompt": "Replace the perfume bottle in @Video1 with the face cream from @Image1, keeping all original motion and lighting.",
"video_urls": [
"https://example.com/original-shot.mp4"
],
"image_urls": [
"https://example.com/face-cream.jpg"
],
"duration": "8",
"resolution": "720p"
}
}'POST /v1/predictions