ComfyUI Node

Seedance 2.0

The multimodal one — frames, reference videos, reference audio

By felipederosilva·Created about a month ago·Updated a day ago· 3
Seedance 2.0
  • first_frame_url
  • last_frame_url
  • reference_image_urls
  • reference_video_1
  • reference_video_2
  • reference_video_3
  • reference_audio_1
  • reference_audio_2
  • reference_audio_3
  • video
  • url
  • all_urls_json
  • task_id
  • raw_json
  • credits_consumed
  • credits_left
◄promptA serene beach at sunset with waves gently crashing on the shore, palm trees swaying in the breeze, and seagulls flying across the orange sky►
◄return_last_framefalse►
◄generate_audiofalse►
◄resolution720p►
◄aspect_ratio16:9►
◄duration15►
◄web_searchfalse►
◄nsfw_checkerfalse►
◄timeout_seconds1200►
◄callback_url►

This is the node that made people argue about API pricing, and the argument is worth stating before the feature list. Seedance 2.0 is ByteDance's flagship video model and ByteDance does not open its flagships: Seedream and Seedance are API-only, no weights, no local path at any VRAM. So the "$30 a month gets me how many videos?" reaction when it arrived in ComfyUI was accurate and the counter-argument - that this is simply what a good video render costs - was also accurate. Both things are true at once, and it's why this node is the one you plan around rather than casually queue.

What you're buying is the most controllable video endpoint in the pack. Seedance 2.0 isn't just prompt-to-clip: it takes a first frame, a last frame, up to three reference images, up to three reference videos and up to three reference audio clips, and it can return the last frame as an image so you can chain clips.

The inputs that matter

prompt is the only required input - multiline, up to 20,000 characters, and the sample text is a beach at sunset you should overwrite.

Everything else is optional and every media field is a native socket, which is the whole point of this pack: first_frame_url and last_frame_url are IMAGEs, reference_image_urls takes an IMAGE (a batch works - the pack uploads each), reference_video_1/2/3 are VIDEOs, and reference_audio_1/2/3 are AUDIOs. You press first_frame_url and you get an image-to-video shot; you press the reference sockets and you get multimodal reference mode.

Those two modes are mutually exclusive, and the node catches it before spending anything. KIE documents First Frame / First+Last Frame and Multimodal Reference as separate scenarios; mixing them is a locally-raised error with a useful message rather than a wasted call. That's the single most valuable thing in this node's implementation.

Then the dials: resolution goes 480p, 720p, 1080p, 4k. aspect_ratio (default 16:9) includes an adaptive option alongside the usual 1:1, 4:3, 3:4, 9:16, 21:9. duration is an INT defaulting to 15, documented as 4–15 seconds or -1 - which is the model picking a length itself. return_last_frame hands you the final frame as an image, which is the hook for chaining a sequence. generate_audio costs more when enabled. web_search pulls in online reference material but the docs restrict it to text-to-video scenes. nsfw_checker defaults off, meaning KIE's own filter is off - though ByteDance's model still applies its own judgement, and there's no local bypass for a closed model.

Outputs: video, url, all_urls_json (keep this - multi-artifact endpoints return more than one URL), task_id, raw_json, and credits_consumed / credits_left. After each run the node also displays credits spent and the remaining balance directly on it, which is the feature that makes metered work tolerable.

How to not waste money on it

Users of these nodes converge on one workflow: iterate at 480p until the prompt and motion are right, then re-run at the resolution you're delivering. The model reads intent well enough that draft passes are worth trusting - it's the resolution, not the interpretation, that changes. Combine that with -1 duration when you genuinely don't care, and with first_frame_url from a still you already approved rather than a fresh text-to-video roll every time.

Also budget queue time. This node waits on the task synchronously, so timeout_seconds (default 1200, up to 7200) needs to be long enough for your biggest job; a timeout doesn't refund a completed generation.

Install

Manager → search KIE.ai Nodes Next (publisher id felipeosilva). If Manager returns nothing, the README still describes registry publication as prepared rather than shipped, so clone it:

cd ComfyUI/custom_nodes
git clone https://github.com/felipederosilva/ComfyUI-KIE-Nodes-Next
pip install -r ComfyUI-KIE-Nodes-Next/requirements.txt

Restart ComfyUI. Four light dependencies, no model files, no video tooling - the media comes back over HTTP and the pack archives finished results under output/KIE-Results/ so a restart doesn't lose them. Windows users can run the .vbs installer in dist/ instead. Key setup is one-time: Settings → KIE.ai Nodes Next → Connection → Paste / replace KIE.ai API key, validated before it overwrites a saved key, masked fingerprint only, never written into workflow JSON. KIE_API_KEY overrides for headless installs.

Gotchas

Missing nodes or odd widgets? Refresh the catalog with KIE • Refresh Model Catalog - this node's fields are generated from KIE's live docs, which is also why the class name carries a hash suffix.

Reference video and reference audio inputs are the ones people misread. They're references the model conditions on, not clips to edit - Seedance 2.5 is the version whose docs describe editing behaviour like matching an input video's length.

Your reference images and audio are uploaded to KIE, and identity-heavy workloads mean real faces leaving your machine on every call. Same trade as every hosted model: per-call cost, inputs gone, a filter you can't patch - in exchange for a model you were never allowed to download.

CategoryKIE Next/Video/ByteDance/Seedance

Inputs (19)

NameTypeDefaultDescription
promptSTRINGA serene beach at sunset with waves gently crashing on the shore, palm trees swaying in the breeze, and seagulls flying across the orange skyThe text prompt used to generate the video. Required field. (Min length: 3, Max length: 20000 characters)
first_frame_urloptIMAGE—
last_frame_urloptIMAGE—
reference_image_urlsoptIMAGE—
reference_video_1optVIDEO—
reference_video_2optVIDEO—
reference_video_3optVIDEO—
reference_audio_1optAUDIO—
reference_audio_2optAUDIO—
reference_audio_3optAUDIO—
return_last_frameoptBOOLEANfalseWhether to return the last frame of the video as an image.
generate_audiooptBOOLEANfalseWhether to generate audio for the video. - **true**: Generate with audio - **false**: Generate without audio
resolutionoptCOMBO720pVideo resolution - 480p for faster generation, 720p for balance, 1080p for High-quality video, 4K Ultra-High Definition, delivering perfect visual details.
aspect_ratiooptCOMBO16:9Video aspect ratio configuration. Required field.
durationoptINT15-2147483648–2147483647Video duration in 4-15 seconds or -1.
web_searchoptBOOLEANfalseUse online search
nsfw_checkeroptBOOLEANfalseDefaults to false. You can set it to false based on your needs. If set to false, our content filtering will be disabled, and all results will be returned directly by the model itself. Note: There is no guarantee that everything can be filtered out; if you are not satisfied with the results, you will need to make your own arrangements.
timeout_secondsoptINT120030–7200—
callback_urloptSTRINGOptional KIE callback URL. Leave empty for normal ComfyUI use.

Outputs (7)

NameTypeDescription
videoVIDEO—
urlSTRING—
all_urls_jsonSTRING—
task_idSTRING—
raw_jsonSTRING—
credits_consumedFLOAT—
credits_leftFLOAT—