Skip to main content
Core.Today
|
ByteDanceMediumUltra

Seedance 2.5 Reference to Video

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.

4920 credits
per 5s 720p video — billed per second (480p 513/s, 720p 1100/s; with reference videos 480p 615/s, 720p 1320/s)
Up to 50 reference files in one request — 30 images, 10 videos, 10 audio
Prompt-level addressing (@Image1, @Video1, @Audio1) so each reference has an explicit role
Character, wardrobe, and palette consistency across a full 30-second take
Video editing and extension that preserve the original motion and camera work
Audio-driven generation and lip-sync from reference audio

Run it right now

Test this model instantly in the Console Playground — no code required

Sign in to try

Use with AI Assistant

Copy usage instructions for Claude, ChatGPT, or other AI

Quick Start

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
  }
}'

Parameters

ParameterTypeRequiredDefaultDescription
promptstringYes-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.
durationstringYes5Duration 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_urlsarrayNo-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_urlsarrayNo-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_urlsarrayNo-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.
resolutionstringNo720pVideo resolution — 480p for faster generation, 720p for balance.
480p720p
aspect_ratiostringNoautoThe 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_audiobooleanNotrueWhether 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.

How to Provide File Input

There are 3 ways to provide files for the image_urlsvideo_urlsaudio_urls parameters:

Recommended

Image URL

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"]
  }
}

Direct Upload (Multipart)

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"
See the File Upload docs for more upload methods including Presigned URLs.

Common Parameters

Common parameters used when calling POST /v1/predictions.

ParameterTypeRequiredDefaultDescription
modelstringYes-Model identifier
inputobjectYes-Object containing the model-specific parameters from the table above
output_folderstringNo-Folder path for output files (max 256 chars, '..' not allowed)
webhook_urlstringNo-Webhook URL to call on completion
is_publicbooleanNofalseIf true, output files are also available via permanent public URLs

Examples

Image references only

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
  }
}'

Product swap inside an existing clip

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"
  }
}'

Tips & Best Practices

1duration is a string on this endpoint — send "5", not 5. Integers are rejected before the request reaches the provider.
2Label every reference in the prompt (@Image1, @Video1, @Audio1). Unlabeled references get a vague role and the result drifts.
3Reference videos roughly double the per-second rate because the provider bills the reference footage as well as the output — use image references alone when you do not need motion transfer.
4For editing, say what to keep as explicitly as what to change: "...keeping all original motion and lighting."
5Reference audio requires at least one reference image or video; audio alone is rejected upstream.

Use Cases

Outfit-change and try-on videos built from product stills plus a motion reference clip
Multi-shot narratives that keep the same character across every cut
Editing an existing clip — swapping a product or background while keeping the original camera move
Extending an existing shot with consistent characters, environment, and style
Music-synced or dialogue-synced content driven by reference audio