Doubao Seedance2 VideoGen API Node
Seedance 2.0 video from inside ComfyUI — a cloud task, wrapped nicely
- first_frame
- last_frame
- reference_images
- video
- last_frame_image
- response_str
Seedance 2.0 is ByteDance's flagship video model, and like every ByteDance flagship it is API-only - no weights, ever. This node is the bridge that makes it usable from ComfyUI: you give it a prompt (and optionally first/last frames, reference images, or reference video/audio), it talks to the Volcengine ARK API, waits for the generation, downloads the result, and hands you an actual VIDEO tensor ready for preview or save. It's the most "real product" node in the pack - a full async task pipeline, not just a one-shot HTTP call.
How it works
Video generation over ARK is task-based, so the node runs a real pipeline:
- It POSTs a task to
https://ark.cn-beijing.volces.com/api/v3/contents/generations/taskswith your prompt and settings. Images you connect (first frame, last frame, reference images) get downscaled, encoded to base64, and attached with the rightrolemarkers; reference video and audio URLs are passed through (up to 3 each, comma-separated). - It polls the task status every second, up to 30 minutes, with retries and even a "rescue" path if polling glitches while the task actually completed server-side.
- When it succeeds, it downloads the MP4 to a temp file and returns it as a
VIDEOtensor viaVideoFromFile. Ifreturn_last_frameis on, it also downloads the last-frame image as anIMAGEtensor.
The text of your prompt lives alongside the reference media in one content array - that's how you steer it.
The inputs that matter
- model - defaults to
doubao-seedance-2-0-fast-260128. Keep the one your ARK account is provisioned for. - prompt - the creative direction.
- resolution -
480por720p. There's no 1080p option; pick accordingly. - ratio -
16:9,4:3,1:1,3:4,9:16,21:9, oradaptive. - duration - up to 15 seconds;
-1means auto, and anything under 4 gets clamped up to 4. - generate_audio -
true/false; Seedance 2.0 can produce audio along with video. - watermark, web_search, return_last_frame - toggles, all
true/falsecombos.web_searchadds a web-search tool (for grounding the generation),return_last_framegives you a still. - seed -
-1= let the API pick. Any other value is sent as a real seed. - Optional media:
first_frame,last_frame,reference_images(batch, max 9),reference_video_url,reference_audio_url.
Outputs: video (VIDEO), last_frame_image (IMAGE, when requested), and response_str (STRING - the raw ARK response JSON, which is where you go when something goes wrong).
Installing it
Part of AhBumm/ComfyUI_BillBum_APIset_Nodes. ComfyUI Manager → search "billbum" → install "Customizable API Call Nodes by BillBum", or:
cd ComfyUI/custom_nodes
git clone https://github.com/AhBumm/ComfyUI_BillBum_APIset_Nodes.git
cd ComfyUI_BillBum_APIset_Nodes
pip install -r requirements.txt
Restart ComfyUI. Dependencies are light; the real "dependency" is a Volcengine/ARK account with Seedance 2.0 access and API credits - this is a paid, per-second cloud service.
Common issues
- It takes minutes, not seconds. A 5-second clip can mean a long poll. The node handles it (that 30-minute budget is generous), but don't queue 50 jobs and expect speed. ComfyUI will just sit on the node while it waits.
- Text+audio-only is unsupported. If you send reference audio with no image or video reference, the node prints a warning and drops the audio - Seedance 2.0 won't do pure audio-conditioned generation that way.
- Resolution is capped. 480p/720p only. If you need 1080p output, this node (and the current ARK task API) won't get you there.
- The
response_stroutput is your debugging friend. When a run fails, the node returns(None, None, response_str)instead of raising - the raw task response contains the status and error text. Read it before blaming the node.
Where this fits: the KB's ByteDance panel nails the context - Seedance is a product, not a model you'll ever run locally. If you want flagship ByteDance video quality and you're willing to pay per second, this node is the cleanest way to get it into a ComfyUI graph. If you want free and local, this is explicitly not that - that's Wan 2.2 territory.
Inputs (17)
| Name | Type | Default | Description |
|---|---|---|---|
| model | STRING | doubao-seedance-2-0-fast-260128 | — |
| prompt | STRING | — | |
| seed | INT | -1-1–4294967295 | — |
| api_url | STRING | https://ark.cn-beijing.volces.com/api/v3/contents/generations/tasks | — |
| api_key | STRING | Input_your_API_key_here... | — |
| resolution | COMBO | 480p | 2 options: 480p, 720p |
| ratio | COMBO | adaptive | 7 options: 16:9, 4:3, 1:1, 3:4, 9:16, 21:9, +1 |
| duration | INT | 5-1–15 | — |
| generate_audio | COMBO | true | 2 options: true, false |
| watermark | COMBO | false | 2 options: true, false |
| web_search | COMBO | false | 2 options: true, false |
| return_last_frame | COMBO | false | 2 options: true, false |
| first_frameopt | IMAGE | — | |
| last_frameopt | IMAGE | — | |
| reference_imagesopt | IMAGE | — | |
| reference_video_urlopt | STRING | — | |
| reference_audio_urlopt | STRING | — |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| video | VIDEO | — |
| last_frame_image | IMAGE | — |
| response_str | STRING | — |