Seedance 2.0 Fast · Reference to Video
No first frame, just your own material
- reference_image_urls
- reference_video_urls
- reference_audio_urls
- video
- last frame
- task id
Reference-to-video is the least understood mode in the whole Seedance family, and it's the one people keep asking for a local equivalent of. There isn't a good one. You feed the model up to nine images, three video clips and three audio tracks, describe the shot you want, and it builds a new clip that carries over the characters, style and motion from your references - with no first frame deciding anything.
The community request that keeps surfacing is exactly this: a 3D playblast for motion, a still of the object for the look, and a prompt for everything else. The honest answer that thread reached was "stack IC-LoRA on a local video model and accept it won't be as good." This node is the version that just works, at $0.022539 per second.
What "reference" means in practice
A first frame says start here. A reference says be like this. They are genuinely different jobs, and mixing them up is the main way people get disappointing output from this node - so note what isn't here: no image_url, no last_image_url. The image socket list is reference_image_urls, and it behaves differently from every other image input in ComfyUI.
It's an autogrow group. The node grows a new socket every time you connect one, labelled reference_image_0, reference_image_1 and so on, up to nine. Same for reference_video_urls (up to three clips) and reference_audio_urls (up to three tracks). Wire a Load Image, a video loader, or a Save Audio-adjacent output into each socket you need; the pack uploads them for you.
Then the settings, which will look familiar from the Fast tier: prompt ("subject, action, camera, light, sound, and constraints"), aspect_ratio (16:9, 9:16, 4:3, 3:4, 1:1, 21:9 or adaptive), resolution (480p or 720p only), generate_audio, seed, return_last_frame, bitrate_mode and watermark. duration_seconds is that dropdown with -1 at the top followed by 4 through 15 - pass -1 and the model chooses the length itself.
The cost detail nobody expects
Reference footage is billed on the same linear basis as generated length. So a 10-second reference clip adds real money to the request, on top of the clip you asked for. Keep references short and surgical - a three-second gesture, not a whole scene - unless length is the point.
The video presence also switches the pricing variant (with_video), which is why the node's rate badge moves when you connect a clip socket. That badge is a rate, not a total; the authoritative number is the quote taken when you run.
Outputs and wiring
video (a normal VIDEO, into Save Video), last frame (an IMAGE, only populated when return_last_frame is on), and task id (a string for the console or a support ticket).
A workflow worth trying: reference images of a character plus a short reference clip of their walk, a prompt for a new environment, and a 6-second duration. That's the shape the mode was built for, and it's the one thing on this node a text-to-video prompt can't fake.
Install
Manager → SpicyAPI → Install, or:
cd ComfyUI/custom_nodes
git clone https://github.com/spicyapi-ai/comfyui-spicyapi
Restart, paste your key under Settings > SpicyAPI (or export SPICY_API_KEY), restart once more. No model downloads, no pip packages - the pack depends only on what ComfyUI already ships.
Traps
- Uploads have ceilings. Images are re-encoded to PNG, falling back to JPEG above 10 MiB, and then they fail outright - scale down rather than uploading a 40-megapixel plate. Video and audio inputs cap at 90 MiB.
40004means no deployment serves your combination; the message names the field to change.- Cancelling keeps the job alive on SpicyAPI, charged if it succeeds. Result's in your console for up to 14 days.
- Set the spend cap in Settings before you start stacking references on 15-second clips.
- Nothing offline. References and prompts leave your machine; that's the mechanism, not a bug.
Inputs (12)
| Name | Type | Default | Description |
|---|---|---|---|
| prompt | STRING | Describe the intended subject, action, camera, light, sound, and constraints. | |
| aspect_ratio | COMBO | adaptive | Output frame ratio. |
| resolution | COMBO | 720p | Output resolution. |
| duration_seconds | COMBO | 5 | Requested output duration in seconds. Pass -1 for smart duration: the model picks the length itself instead of a fixed number. |
| generate_audio | BOOLEAN | true | Request synchronised output audio. |
| seed | INT | 00–2147483647 | Same seed and settings, same result. Set 'control after generate' to randomize to get a new result on every run; every run is billed. |
| return_last_frame | BOOLEAN | false | Also return the clip’s final frame as a separate image. |
| bitrate_mode | COMBO | standard | Encoding bitrate of the delivered file: standard, or high for crisper detail and a larger file. |
| watermark | BOOLEAN | false | Add the model’s visible "AI generated" watermark to the video. |
| reference_image_urlsopt | COMFY_AUTOGROW_V3 | Authorised image references. | |
| reference_video_urlsopt | COMFY_AUTOGROW_V3 | Authorised video references. | |
| reference_audio_urlsopt | COMFY_AUTOGROW_V3 | Authorised audio references. |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| video | VIDEO | — |
| last frame | IMAGE | Needs return_last_frame turned on. |
| task id | STRING | The SpicyAPI task id, for the console logs or support. |