Nodes/Customizable API Call Nodes by BillBum/Doubao Seedance VideoGen API Node
ComfyUI Node

Doubao Seedance VideoGen API Node

Doubao Seedance video from inside ComfyUI — submit a task, wait, grab the URL

By AhBumm·Created 2 years ago·Updated 3 months ago· 11
Doubao Seedance VideoGen API Node
  • first_frame
  • last_frame
  • response_str
modeldoubao-seedance-1-5-pro-251215
prompt
seed-1
api_urlhttps://ark.cn-beijing.volces.com/api/v3/contents/generations/tasks
api_keyInput_your_API_key_here...
resolution480p
ratioadaptive
duration5
camerafixedfalse
watermarkfalse

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 adds generate_audio: true and enforces a minimum 4-second duration (even if you asked for less). Model names ending -no-audio turn audio off. So the 1.5 Pro line is assumed to generate audio by default - a real behavior, not a bug.
  • seed is only sent if it's not -1, so leave -1 for 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 - default doubao-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, plus adaptive), duration (2–12s).
  • camerafixed and watermark - both true/false dropdowns.
  • 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 literally Input_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. 251215 style suffixes mean model IDs get replaced; "model not found" = check the current ID.
  • It costs real money per generation, and watermark: false is your responsibility to set if you want clean output - the watermark toggle exists for a reason.
CategoryBillBum/API Nodes

Inputs (12)

NameTypeDefaultDescription
modelSTRINGdoubao-seedance-1-5-pro-251215
promptSTRING
seedINT-1-1–4294967295
api_urlSTRINGhttps://ark.cn-beijing.volces.com/api/v3/contents/generations/tasks
api_keySTRINGInput_your_API_key_here...
resolutionCOMBO480p3 options: 480p, 720p, 1080p
ratioCOMBOadaptive7 options: 16:9, 4:3, 1:1, 3:4, 9:16, 21:9, +1
durationINT52–12
camerafixedCOMBOfalse2 options: true, false
watermarkCOMBOfalse2 options: true, false
first_frameoptIMAGE
last_frameoptIMAGE

Outputs (1)

NameTypeDescription
response_strSTRING