FAL Seedance 2 Image To Video (Soze)
Animate a still frame with ByteDance's closed video model
- image
- end_image
- video
- video_url
- config
- status
Straightforward image-to-video, powered by fal.ai's hosted copy of ByteDance's Seedance model. Feed it a starting image and a prompt, get a short video back. ByteDance keeps its flagship generation models - the whole Seedream and Seedance lines - API-only, no exceptions; the only way to run Seedance at all is through somebody's hosted endpoint, and this node goes through fal.ai's.
How it works
You give it a starting image, describe the motion/action in the prompt, pick a resolution and duration, and it calls out to fal.ai, which runs the actual Seedance model and hands back a finished clip. speed controls which of fal's two endpoints it hits: standard is the full-quality path and the only one that supports 1080p; fast trades some of that for speed but tops out below it. generate_audio asks Seedance to synthesize audio synced to the video rather than returning silent footage.
The inputs and outputs that matter
image(IMAGE, required) - your starting frame.prompt(multiline STRING) - what should happen in the clip.speed(standard/fast, defaultstandard) -fastuses fal'sfast/*endpoint and can't do 1080p, per the node's own tooltip.resolution(480p/720p/1080p, default720p) - 1080p only works whenspeedisstandard.duration(defaultauto, or a specific length in seconds) - let the model pick, or pin it.aspect_ratio(defaultauto, plus fixed ratios like16:9,9:16,1:1, and others).generate_audio(BOOLEAN, default true) - off for a silent clip.seed(default 0, meaning "let fal choose," per its tooltip) - set it explicitly if you need a reproducible result.- Optional
end_image- pin the last frame too, not just the first, for tighter control over where the clip lands rather than letting the model wander to an arbitrary ending. - Optional
end_user_id- an identifier for usage attribution on fal's side; leave blank unless you're building a multi-user service on top of this. - Outputs:
video(VIDEO),video_url(a direct URL to the result),config(the request configuration that was actually sent - handy for debugging what you asked for),status.
How to install it
Via ComfyUI Manager: search "Quality of Life Nodes for ComfyUI", install, restart. Manually:
cd ComfyUI/custom_nodes
git clone https://github.com/SozeInc/ComfyUI_Soze.git
pip install -r ComfyUI_Soze/requirements.txt
This node needs FAL_KEY set in your environment (or [API] FAL_KEY in a config.ini, per the README) - a real fal.ai account with credit. This is a metered API call, not local compute: every run of this node spends real money on fal's side, independent of whatever GPU tier you're running ComfyUI on.
Common issues & troubleshooting
1080p silently doesn't apply, or the request errors. You're almost certainly on speed: fast - 1080p is only valid with standard. Switch speed first, then set resolution.
You're being billed more than expected. Every call is a real fal.ai request against your FAL_KEY's balance - there's no free or local fallback here, since Seedance itself is closed-weight and only runs on ByteDance's or a reseller's infrastructure. Keep an eye on duration and resolution, since longer clips at higher resolution cost more per generation on fal's pricing.
The clip's ending doesn't match what you wanted. You only set a starting image - the model is free to end wherever it wants. Wire in end_image if the last frame matters to you as much as the first.
Auth failure. Check FAL_KEY is actually set and valid - same failure mode as every other API-key node in this pack, invisible until you look for it specifically.
Inputs (10)
| Name | Type | Default | Description |
|---|---|---|---|
| speed | COMBO | standard | 'fast' uses the fast/* endpoint and disallows 1080p. |
| prompt | STRING | — | |
| image | IMAGE | — | |
| resolution | COMBO | 720p | 1080p is only valid when speed=standard. |
| duration | COMBO | auto | 13 options: auto, 4, 5, 6, 7, 8, +7 |
| aspect_ratio | COMBO | auto | 7 options: auto, 21:9, 16:9, 4:3, 1:1, 3:4, +1 |
| generate_audio | BOOLEAN | true | — |
| seed | INT | 00–18446744073709550000 | 0 = let FAL choose. |
| end_imageopt | IMAGE | Optional: target last frame. | |
| end_user_idopt | STRING | — |
Outputs (4)
| Name | Type | Description |
|---|---|---|
| video | VIDEO | — |
| video_url | STRING | — |
| config | STRING | — |
| status | STRING | — |