Nodes/Quality of Life Nodes for ComfyUI/ModelArk Seedance 2.0 (Soze)
ComfyUI Node

ModelArk Seedance 2.0 (Soze)

No Local GPU, Just an ARK_API_KEY

By SozeInc·Created 2 years ago·Updated 8 days ago· 10
ModelArk Seedance 2.0 (Soze)
  • first_frame_image
  • last_frame_image
  • reference_image_1
  • reference_image_2
  • reference_image_3
  • reference_image_4
  • reference_image_5
  • reference_image_6
  • reference_image_7
  • reference_image_8
  • reference_image_9
  • reference_video_1
  • reference_video_2
  • reference_video_3
  • reference_audio_1
  • reference_audio_2
  • reference_audio_3
  • video
  • video_url
  • last_frame_image
  • last_frame_url
  • task_id
  • config
  • status
tierstandard
prompt
resolution720p
ratio16:9
duration-1
generate_audiotrue
seed0
negative_prompt
return_last_framefalse
callback_url
poll_interval5
poll_timeout600

Seedance is ByteDance's flagship video line, and like every flagship ByteDance generation model it is API-only - you will never download these weights, no matter how good your GPU is. ModelArk Seedance 2.0 is the node that talks to the API directly: it submits a task to BytePlus's ModelArk endpoint, polls until the video is done, and hands you the finished clip as a ComfyUI VIDEO. Cloud video generation with no local diffusion, no VRAM, and a per-run bill.

The setup is two environment variables: ARK_API_KEY (required) and optionally ARK_BASE_URL if your account lives in a different region than the default Asia-Pacific Southeast host. There's also a second, easy-to-miss requirement: if you connect any image, video, or audio reference, the node uploads it to FAL's CDN so ModelArk can fetch it at a public URL - which means media-input runs also need FAL_KEY. The generation itself is entirely on ModelArk's side; FAL is just being used as a file host. Don't skip that key and wonder why reference runs 401.

Inputs that matter

  • tier - standard vs fast, which map to dreamina-seedance-2-0-260128 and its -fast- sibling. Fast is cheaper/quicker, standard is the full quality tier.
  • prompt - the creative load, plus a separate negative_prompt if you know what you don't want.
  • resolution - 480p / 720p / 1080p. ratio - the usual 16:9 / 9:16 / 1:1 / 4:3 / 3:4 / 21:9 menu.
  • duration - -1 for auto (ModelArk picks) or an explicit 4–15 seconds.
  • generate_audio - on by default. Turn it off if you want silent clips (cheaper, and lets you score it yourself later).
  • seed - 0 to 2^32; 0 means ModelArk picks. Don't expect tight reproducibility from a cloud API anyway.

The reference slots are where Seedance gets interesting: up to nine reference_image_N, three reference_video_N, three reference_audio_N, plus first_frame_image / last_frame_image for image-to-video or first/last-frame animation. Here's the convention that bites people: references are cited in the prompt with @Image1, @Video2, @Audio3. Slots alone do nothing useful - the model only applies them where you point at them in the text. "Make the character from @Image1 walk through the room from @Video2" is the shape of a real prompt.

Outputs & the last-frame trick

You get video and video_url, plus task_id and a config string describing what was actually submitted. There's also last_frame_image and last_frame_url - but only populated if you turn on return_last_frame. That's a genuinely handy output for chaining: video out, last frame out, feed the frame into a second pass. If you don't enable it, the image output is just a blank placeholder, so don't wire it up and wonder why it's black.

Install & notes

cd ComfyUI/custom_nodes
git clone https://github.com/SozeInc/ComfyUI_Soze.git
pip install -r ComfyUI_Soze/requirements.txt

Then export ARK_API_KEY (and FAL_KEY for any reference media). A submission that's blank on every front - no prompt, no frames, no references - short-circuits without spending a call, which is the kind of small mercy batch workflows appreciate. Watch poll_timeout (default 600s): cloud video tasks are minutes, not seconds, and an impatient timeout just wastes the run you already paid for.

CategoryModelArk/VideoGeneration

Inputs (29)

NameTypeDefaultDescription
tierCOMBOstandard'fast' uses the *-fast-* model id.
promptSTRING
resolutionCOMBO720p3 options: 480p, 720p, 1080p
ratioCOMBO16:96 options: 16:9, 9:16, 1:1, 4:3, 3:4, 21:9
durationCOMBO-1-1 = auto (ModelArk picks). 4-15 = explicit seconds.
generate_audioBOOLEANtrue
seedINT00–42949672960 = let ModelArk choose. Max 4294967296 (2^32) per ModelArk API.
negative_promptoptSTRING
return_last_frameoptBOOLEANfalseIf True, the task also returns the final frame in the response.
callback_urloptSTRINGOptional webhook ModelArk will hit when the task completes.
first_frame_imageoptIMAGEOptional first-frame anchor (role=first_frame). Use for image-to-video or FF/LF; leave empty for pure reference-to-video.
last_frame_imageoptIMAGEOptional last-frame anchor (role=last_frame). Pair with first_frame_image for FF/LF.
poll_intervaloptINT51–60Seconds between status polls.
poll_timeoutoptINT60030–3600Max seconds to wait for the task before giving up.
reference_image_1optIMAGEReference image slot 1 (role=reference_image). Cite as @Image1 in the prompt.
reference_image_2optIMAGEReference image slot 2 (role=reference_image). Cite as @Image2 in the prompt.
reference_image_3optIMAGEReference image slot 3 (role=reference_image). Cite as @Image3 in the prompt.
reference_image_4optIMAGEReference image slot 4 (role=reference_image). Cite as @Image4 in the prompt.
reference_image_5optIMAGEReference image slot 5 (role=reference_image). Cite as @Image5 in the prompt.
reference_image_6optIMAGEReference image slot 6 (role=reference_image). Cite as @Image6 in the prompt.
reference_image_7optIMAGEReference image slot 7 (role=reference_image). Cite as @Image7 in the prompt.
reference_image_8optIMAGEReference image slot 8 (role=reference_image). Cite as @Image8 in the prompt.
reference_image_9optIMAGEReference image slot 9 (role=reference_image). Cite as @Image9 in the prompt.
reference_video_1optVIDEOReference video slot 1 (role=reference_video). Cite as @Video1 in the prompt.
reference_video_2optVIDEOReference video slot 2 (role=reference_video). Cite as @Video2 in the prompt.
reference_video_3optVIDEOReference video slot 3 (role=reference_video). Cite as @Video3 in the prompt.
reference_audio_1optAUDIOReference audio slot 1 (role=reference_audio). Cite as @Audio1 in the prompt.
reference_audio_2optAUDIOReference audio slot 2 (role=reference_audio). Cite as @Audio2 in the prompt.
reference_audio_3optAUDIOReference audio slot 3 (role=reference_audio). Cite as @Audio3 in the prompt.

Outputs (7)

NameTypeDescription
videoVIDEO
video_urlSTRING
last_frame_imageIMAGE
last_frame_urlSTRING
task_idSTRING
configSTRING
statusSTRING