Doubao Seedance VideoGen API Node
Doubao Seedance video from inside ComfyUI — submit a task, wait, grab the URL
- first_frame
- last_frame
- response_str
Seedance is ByteDance's flagship closed video model, and it is closed - API only, no weights to download, which is why the community's conversations about it always end with "it's an API product" when someone asks about running it locally. The Doubao Seedance VideoGen API Node is the pack's hand-rolled client for it: it talks to the Volcano Ark (ByteDance's cloud) endpoint, submits a text-to-video or image-to-video job, and waits for it to finish.
It's the one node in this pack that behaves noticeably differently from the others, because Seedance is a task-based async API. You don't POST and get a result back in one shot - you submit a task, get a task ID, and then poll until the video's done. A 5-second clip takes a while; a 12-second one takes a while longer. The node polls every second and will keep at it for up to 30 minutes (1800 attempts), so the workflow just... blocks. Set it running and go make tea.
How it works
The node POSTs a JSON payload with model, prompt, ratio, resolution, duration, camera_fixed, and watermark to the default Ark URL (https://ark.cn-beijing.volces.com/api/v3/contents/generations/tasks). Two provider-specific behaviors worth knowing:
- For models whose name contains
doubao-seedance-1-5-pro, it addsgenerate_audio: trueand enforces a minimum 4-second duration (even if you asked for less). Model names ending-no-audioturn audio off. So the 1.5 Pro line is assumed to generate audio by default - a real behavior, not a bug. seedis only sent if it's not-1, so leave-1for fully random.
For image-to-video, it accepts optional first_frame and last_frame IMAGE tensors and base64-encodes them into the request as first_frame/last_frame image parts. The result comes back as response_str - the raw JSON-ish text from the poll, which contains the video URL.
The inputs that matter
prompt- your video description.model- defaultdoubao-seedance-1-5-pro-251215; a dated version string, so check current names on the Ark console.resolution(480p/720p/1080p),ratio(16:9 → 9:16, 21:9, plusadaptive),duration(2–12s).camerafixedandwatermark- bothtrue/falsedropdowns.first_frame/last_frame(optional IMAGE) - for image-to-video.api_url/api_key- the Ark endpoint and an Ark API key (created in ByteDance's Volcano Engine console). The default key placeholder is literallyInput_your_API_key_here....
Output: response_str (STRING). That's it. No VIDEO, no IMAGE - you're expected to parse the URL out (the pack's "UrlExtract from Chat Response" node with content_type: video is built for exactly this) and feed it to a video-loading node.
Installing it
Part of AhBumm/ComfyUI_BillBum_Nodes - ComfyUI Manager search "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. Light deps, no local models - everything happens on ByteDance's servers, billed per request.
Where people get burned
- The output is a URL in a string, not a video. The most common confusion: people expect VIDEO out. You need the extraction + load steps after it, or you're holding a string.
- Long blocking runs. A busy Ark queue can sit there for many minutes; the workflow is frozen meanwhile. The 30-minute cap is generous but real - very long generations can still exceed it.
- Ark, not a generic OpenAI key. This is ByteDance's own platform with its own console; a random API key won't authenticate.
- Versioned model names drift.
251215style suffixes mean model IDs get replaced; "model not found" = check the current ID. - It costs real money per generation, and
watermark: falseis your responsibility to set if you want clean output - the watermark toggle exists for a reason.
Inputs (12)
| Name | Type | Default | Description |
|---|---|---|---|
| model | STRING | doubao-seedance-1-5-pro-251215 | — |
| 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 | 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 | 52–12 | — |
| camerafixed | COMBO | false | 2 options: true, false |
| watermark | COMBO | false | 2 options: true, false |
| first_frameopt | IMAGE | — | |
| last_frameopt | IMAGE | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| response_str | STRING | — |