Seedance 2.0 BytePlus Reference to Video
Keep your media hosted, not pasted
- video_url
- video
- task_id
- raw_json
Reference-to-video is where Seedance stops being a text box and starts being a tool: you give it one or more images, a video, or even an audio clip, plus a prompt, and it generates a new video that honors those references. This node is the URL-flavored version of that idea. Instead of dragging local media into the graph, you hand it hosted URLs - up to three images, one reference video, and one audio file - and it attaches them to the API request by reference.
That distinction matters more than it sounds. There's a sibling node in this pack, Seedance2BytePlusMediaReferenceToVideo, that takes local IMAGE and VIDEO tensors directly and base64-encodes them into the request. This node takes no tensors at all: its optional inputs are image_url_1 through image_url_3, video_url_1, and audio_url_1, all plain strings. The tradeoff is simple - URL references are smaller, faster, and don't bloat the request, but the URLs have to be publicly reachable by ByteDance's servers. A localhost link or a private S3 bucket won't work. If your media is already hosted, use this node and skip the base64 dance entirely.
Mechanically it's the same engine as the text-to-video node: build a content list, POST to {base_url}/contents/generations/tasks, poll until succeeded, download the result. The difference is in the payload - each reference is sent as a typed entry (image_url, video_url, audio_url) with a role label (reference_image, reference_video, reference_audio), and the prompt always leads. One hard rule in the code: if no reference is provided at all, it errors out with "Reference to Video needs at least one image_url, video_url, or audio_url." You need at least one, and honestly you need a good one - reference-video quality lives and dies on what you feed it.
The rest of the inputs match the pack's other generator: model (Seedance 2.0 or Fast - Fast still refuses 1080p), resolution (480p/720p/1080p), ratio (defaults to adaptive here, sensible when you're matching a reference), duration (4–15 seconds), generate_audio, plus seed, watermark, poll_seconds, timeout_seconds, and base_url if you're routing through a proxy. Outputs are the same four as everywhere in this pack: video_url, video (the Comfy VIDEO object - wire it into the Save Video node), task_id, and raw_json.
Install
Manager search ComfyUI-Seedance2-Direct-BytePlus, or:
cd /path/to/ComfyUI/custom_nodes
git clone https://github.com/aisam1989/ComfyUI-Seedance2-Direct-BytePlus
Restart and look for Seedance 2.0 BytePlus. No models to download - everything runs on the BytePlus side, billed per task.
Where people actually get burned
The moderation is ByteDance's, and it's not subtle. In the community's one substantial thread about this exact API, someone feeding a real person's reference video got rejected with InputImageSensitiveContentDetected.PrivacyInformation - the API flagged the real-person footage as a privacy violation even though the output image was AI-generated. So before you build a workflow around celebrity or family-photo references, know that the closed API enforces ByteDance's content policy, you can't patch it out like you would a checkpoint, and their support is reportedly slow to respond. Cartoon characters and AI-generated references sail through; identifiable real people are the risk zone.
Also worth knowing: this pack's README notes that BytePlus can reject video references for some accounts - and that warning is aimed at the local-media node. The URL route is the workaround it gestures at. If you hit a wall with local video refs, hosting the clip and using this node is the documented escape hatch.
Inputs (17)
| Name | Type | Default | Description |
|---|---|---|---|
| api_key | STRING | — | |
| prompt | STRING | — | |
| model | COMBO | Seedance 2.0 | 2 options: Seedance 2.0, Seedance 2.0 Fast |
| resolution | COMBO | 720p | 3 options: 480p, 720p, 1080p |
| ratio | COMBO | adaptive | 7 options: 16:9, 4:3, 1:1, 3:4, 9:16, 21:9, +1 |
| duration | INT | 54–15 | — |
| generate_audio | BOOLEAN | true | — |
| image_url_1opt | STRING | — | |
| image_url_2opt | STRING | — | |
| image_url_3opt | STRING | — | |
| video_url_1opt | STRING | — | |
| audio_url_1opt | STRING | — | |
| seedopt | INT | 00–2147483647 | — |
| watermarkopt | BOOLEAN | false | — |
| poll_secondsopt | INT | 93–60 | — |
| timeout_secondsopt | INT | 90060–3600 | — |
| base_urlopt | STRING | https://ark.ap-southeast.bytepluses.com/api/v3 | — |
Outputs (4)
| Name | Type | Description |
|---|---|---|
| video_url | STRING | — |
| video | VIDEO | — |
| task_id | STRING | — |
| raw_json | STRING | — |