Nodes/ERPK Collection/Bytedance Seedance 2.0 Image-to-Video
ComfyUI Node

Bytedance Seedance 2.0 Image-to-Video

Animate a frame, optionally end on another

By eRepublik-Labs·Created 11 months ago·Updated 21 days ago· 1
Bytedance Seedance 2.0 Image-to-Video
  • start_frame
  • end_frame
  • client
  • video_url
modelSeedance 2.0
prompt
start_frame_url
end_frame_url
duration5
aspect_ratio16:9
resolution720p
seed-1
enable_web_searchfalse
generate_audiotrue

Seedance 2.0 Image-to-Video is the sibling of the pack's Seedance T2V node: instead of a pure text prompt you give it a start frame and describe the motion, and it animates from there. The headline feature is the optional end frame - you can specify both the first and last frames and let the model bridge the motion between them. That's video continuation as a node input, and it's the kind of control you'd normally hack together from multiple generations.

The mechanism is straightforward hosted API: your image goes to WaveSpeed's Seedance 2.0 endpoint as a base64 data URI (if you wire a tensor) or a URL (if you pass a string), the prompt describes the desired motion, and after polling you get a video_url STRING back. It supports the same four model tiers as the T2V node - standard, Turbo, Fast, Fast Turbo - with the same caveat that Turbo variants are 720p/1080p only.

The inputs that matter

  • start_frame - an IMAGE tensor, the preferred input; takes precedence over the URL when connected and is sent as base64
  • start_frame_url - the fallback string URL when no tensor is connected
  • end_frame / end_frame_url - the optional final frame, same tensor-vs-URL pattern; leave both empty for open-ended motion
  • prompt - describes the desired motion
  • model - the four-tier Seedance dropdown
  • duration - 4 to 15 seconds
  • aspect_ratio - 16:9, 9:16, 4:3, 3:4, 1:1, 21:9
  • resolution - 480p / 720p / 1080p
  • generate_audio - native synchronized audio, on by default
  • enable_web_search - real-time info during generation
  • seed - reproducibility, -1 for random

The tensor-first design is the thing to appreciate here. Because start_frame is a real IMAGE input, you can chain this node straight off anything that outputs a tensor - a local checkpoint's VAE decode, an edit node, even another video's first frame extracted to a tensor. No hosting a URL, no Load Image round-trip.

Install and setup

cd ComfyUI/custom_nodes
git clone https://github.com/eRepublik-Labs/comfyui-nodes-erpk.git erpk
cd erpk && pip install -r requirements.txt

Or "ERPK Custom Nodes" from ComfyUI Manager, restart, and set a WaveSpeed API key in ERPK Settings (right-click canvas). Output goes to Preview Anything like every other video node here.

Troubleshooting

If you've read the T2V article, the gotchas carry over: Turbo tiers reject 480p, generate_audio bills by default, and reference/duration caps are enforced server-side. The one node-specific mistake is wiring both start_frame and start_frame_url with conflicting content - the tensor silently wins, so if you're fighting "why is it using the wrong image," check whether a tensor is connected. Same for end_frame. And a practical tip: for a clean loop or a seamless A→B transition, put real thought into the end frame's composition - the model bridges what's there, and a wildly different end frame gives you a wild jump.

CategoryERPK/WaveSpeedAI

Inputs (13)

NameTypeDefaultDescription
modelCOMBOSeedance 2.0Model variant: standard, Turbo (faster, 720p/1080p only), Fast (cheaper), or Fast Turbo (Fast family + turbo, 720p/1080p only)
promptSTRINGText description of the desired motion
start_frameoptIMAGEStart frame as a ComfyUI IMAGE tensor. Preferred input — takes precedence over `start_frame_url` when connected. Sent to WaveSpeed as a base64 data URI.
start_frame_urloptSTRINGStart frame image URL. Fallback when `start_frame` IMAGE input is not connected.
end_frameoptIMAGEEnd frame as a ComfyUI IMAGE tensor for video continuation. Preferred input — takes precedence over `end_frame_url` when connected.
end_frame_urloptSTRINGEnd frame image URL for video continuation. Fallback when `end_frame` IMAGE input is not connected.
clientoptWAVESPEED_AI_API_CLIENTWaveSpeed API client (optional if API key is configured in Settings)
durationoptINT54–15Video duration in seconds (4-15)
aspect_ratiooptCOMBO16:9Video aspect ratio
resolutionoptCOMBO720pVideo resolution
seedoptINT-1-1–2147483647Random seed for reproducibility (-1 for random)
enable_web_searchoptBOOLEANfalseEnable web search for real-time information during generation
generate_audiooptBOOLEANtrueGenerate native audio synchronized with the output video

Outputs (1)

NameTypeDescription
video_urlSTRING