Seedance 2.0 Mini · Reference to Video
The cheapest way to point at your own footage
- reference_image_urls
- reference_video_urls
- reference_audio_urls
- video
- last frame
- task id
Reference-to-video is the mode where a video model stops guessing and copies. Instead of one first frame, you hand over a pile of material - up to nine images, three video clips, three audio tracks - and the model builds a new clip that carries the character, the style, the motion and the soundtrack from your references. This Mini version runs the entry-level rate in the whole reference family: $0.010969 per second, roughly a cent, at 480p or 720p, 4 to 15 seconds.
People ask constantly for a local equivalent. If you search for it you'll find threads where the answer is to stack an IC-LoRA on a local video model and accept a worse result - which is honest, and also the reason this node exists.
The sockets that aren't like other sockets
There is no image_url here, no last_image_url. The three reference inputs are autogrow groups: connect one thing and the node grows the next socket, labelled reference_image_0, reference_image_1, and so on. Wire images into reference_image_urls, clips into reference_video_urls, audio into reference_audio_urls. The pack uploads all of it and the schema caps you at 9 / 3 / 3.
Motion and pacing come from the video references, voice or beat from the audio ones, characters and style from the images. Then prompt says what the new shot actually is. That separation is the point of the mode - a first-frame node can't tell the difference between "this is the person" and "this is the framing", and this one can.
One cost fact worth internalising: on the pack's reference nodes, reference footage is added to the billed duration. A ten-second reference clip is seconds on top of the clip you asked for, so trim references to the gesture you actually need rather than uploading a whole scene.
The rest of the controls
aspect_ratio defaults to adaptive and accepts the 2.0 list (16:9, 9:16, 4:3, 3:4, 1:1, 21:9). resolution is 480p or 720p. duration_seconds is the dropdown with -1 at the top - smart duration, where the model chooses the length - followed by 4 through 15. generate_audio is on by default and costs nothing extra on this tier.
enable_web_search lets the model look things up before rendering; requests with it on are billed at the web-search rate. return_last_frame also emits the clip's final frame as an IMAGE, which is how you chain shots. bitrate_mode picks standard or high delivery, and watermark adds the model's "AI generated" mark.
seed is fixed after generate, so double-queueing a graph reuses the cached output rather than paying twice. That default exists because every run here costs real money.
Outputs
video - an ordinary ComfyUI VIDEO, into Save Video. last frame - an IMAGE, only with return_last_frame on. task id - a string; it identifies the job in your console and in support.
Install
Manager → SpicyAPI → Install, or:
cd ComfyUI/custom_nodes
git clone https://github.com/spicyapi-ai/comfyui-spicyapi
Restart, paste your key in Settings > SpicyAPI (or export SPICY_API_KEY), restart again. The pack declares no dependencies and ships no weights - the model runs on SpicyAPI, so a laptop is enough.
Where it goes wrong
Upload ceilings are real: images are re-encoded to PNG, fall back to JPEG above 10 MiB, and then fail - scale down rather than feeding it a 40-megapixel plate. Video and audio uploads cap at 90 MiB. 40004 means your combination has no deployment behind it, and the message names the field. Interrupting doesn't cancel: the job finishes server-side and is charged if it succeeds. Set the Max cost per run cap before you start stacking references - this is the node where an ambitious graph quietly becomes expensive.
Inputs (13)
| 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. |
| enable_web_search | BOOLEAN | false | Let the model search the web for information related to the prompt before rendering. Requests with it on are billed at the web-search rate. |
| 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. |