FAL Seedance 2.5 Reference To Video (Soze)
Seedance 2.5, now with video and audio refs
- image_1
- image_2
- image_3
- image_4
- image_5
- image_6
- image_7
- image_8
- image_9
- image_batch
- video_1
- video_2
- video_3
- audio_1
- audio_2
- audio_3
- video
- video_url
- status
ByteDance's Seedance is one of the video models you can't run locally no matter how many GPUs you own - it's API-only, full stop. So if you want it inside a ComfyUI workflow, you wire in something like this node, which wraps the FAL-hosted Seedance 2.5 endpoint and drops the finished clip back on the canvas. What makes this one worth reaching for over the plain Seedance 2.0 wrappers is the reference buffet: up to nine images, three videos, and three audio clips, all mixed in one call.
What you're actually driving
Seedance 2.5 ships in the usual reference-to-video shape. You connect reference media, then reference them by name in the prompt: @Image1, @Video1, @Audio1. The prompt is where the magic happens - say "the woman in @Image1 walks toward the camera as the room in @Video1 lights up, with the track from @Audio1 playing." Give the audio refs only sense if you have at least one image or video, and expect audio to work best when the visual subject is fixed.
The defaults are sensibly lazy. aspect_ratio and duration both default to auto, which lets the API pick sensible values from your reference media - leave them there on the first run and only pin them when the result isn't what you want. resolution (480p/720p/1080p) and bitrate_mode (standard/high) are the quality dials; high gives a bigger, cleaner file. generate_audio defaults to on, which is the whole point of this model tier. If you want reproducible output, set end_user_id - it's how ByteDance tracks usage and can matter for consistent billing.
How the mechanism works
Like every node in this pack's FAL family, the flow is: convert your connected IMAGE tensors and VIDEO/AUDIO objects to files, upload them to FAL's CDN with your key, POST the request to bytedance/seedance-2.5/reference-to-video, then download the returned mp4 into your output folder and hand it back as a VIDEO object. Your local GPU does none of the work; your FAL balance does the paying. That's the whole trade with API nodes - the video is only as private as the server you sent it to, so don't feed it anything you wouldn't upload to a stranger's cloud.
The three outputs you'll actually use: video (the VIDEO object - wire it to a preview or a video saver), video_url (the CDN link, handy if you want to log it or post it straight from a workflow), and status (a human-readable run summary you can route to a text display).
Install and key
This ships in the Soze pack ("Quality of Life Nodes for ComfyUI"). Easiest route is ComfyUI Manager → search "Soze" → install, then restart. Manual:
cd ComfyUI/custom_nodes
git clone https://github.com/SozeInc/ComfyUI_Soze.git
pip install -r ComfyUI_Soze/requirements.txt
You need a FAL account with credits and a key. Set FAL_KEY as an environment variable, or create ComfyUI_Soze/config.ini:
[API]
FAL_KEY=your_key_here
Grab the key at fal.ai/dashboard/keys. The repo's .gitignore excludes config.ini - keep it that way.
Common issues
- Nothing comes back and the node skips. Seedance 2.5 requires at least one reference (it's reference-to-video, not text-to-video). No connected refs → no request.
- It looks like the run froze. These calls are synchronous and a 1080p Seedance clip takes minutes. The
timeoutdefault is generous, but if you crank resolution to 1080p plushighbitrate on a long clip, wait it out. - Audio refs ignored. Check you cited
@Audio1and have an image/video ref in the same request - audio alone isn't valid.
Inputs (23)
| Name | Type | Default | Description |
|---|---|---|---|
| prompt | STRING | Cite refs as @Image1.., @Video1.., @Audio1.. | |
| resolution | COMBO | 720p | 3 options: 480p, 720p, 1080p |
| duration | COMBO | auto | Seconds, or 'auto'. |
| aspect_ratio | COMBO | auto | 7 options: auto, 21:9, 16:9, 4:3, 1:1, 3:4, +1 |
| generate_audio | BOOLEAN | true | — |
| bitrate_mode | COMBO | standard | 'high' = higher-quality, larger file. |
| image_1opt | IMAGE | Reference image 1 (cite as @Image1 in the prompt). | |
| image_2opt | IMAGE | Reference image 2 (cite as @Image2 in the prompt). | |
| image_3opt | IMAGE | Reference image 3 (cite as @Image3 in the prompt). | |
| image_4opt | IMAGE | Reference image 4 (cite as @Image4 in the prompt). | |
| image_5opt | IMAGE | Reference image 5 (cite as @Image5 in the prompt). | |
| image_6opt | IMAGE | Reference image 6 (cite as @Image6 in the prompt). | |
| image_7opt | IMAGE | Reference image 7 (cite as @Image7 in the prompt). | |
| image_8opt | IMAGE | Reference image 8 (cite as @Image8 in the prompt). | |
| image_9opt | IMAGE | Reference image 9 (cite as @Image9 in the prompt). | |
| image_batchopt | IMAGE | Optional IMAGE batch (capped at 9). Ignored if any image_N slot is connected. | |
| video_1opt | VIDEO | Reference video 1 (cite as @Video1). | |
| video_2opt | VIDEO | Reference video 2 (cite as @Video2). | |
| video_3opt | VIDEO | Reference video 3 (cite as @Video3). | |
| audio_1opt | AUDIO | Reference audio 1 (cite as @Audio1). Requires >=1 image or video. | |
| audio_2opt | AUDIO | Reference audio 2 (cite as @Audio2). Requires >=1 image or video. | |
| audio_3opt | AUDIO | Reference audio 3 (cite as @Audio3). Requires >=1 image or video. | |
| end_user_idopt | STRING | — |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| video | VIDEO | — |
| video_url | STRING | — |
| status | STRING | — |