Protoface Seedance 2.5 · Text to Video
Thirty seconds from a prompt, at flagship prices
- video
- files
- run id
The pitch and the catch
Seedance 2.5 is the current flagship of a line ByteDance has never released as weights. Text in, up to 30 seconds of 4K video with native audio out, aspect_ratio included, reference images/videos/audio as optional inputs. If you want the best-looking generated video the pack can produce from a prompt alone, it's this node.
The catch is the same one the subreddit raised the moment Seedance showed up in ComfyUI, and it hasn't softened with a version number: this is metered, per second, at rates that make iteration a budgeting exercise. The catalog that ships with the pack prices output at roughly 10 credits a second at 480p, 23 at 720p, 59 at 1080p and 180 at 4K, with a four-second minimum. Five seconds at 1080p is a few hundred credits; thirty seconds at 4K is a very deliberate purchase. Nobody is wrong to find that steep - and nobody is wrong that it's simply what frontier video costs when the subsidy ends.
How the node works
Protoface is a third-party aggregator; the pack is one shared implementation wearing per-model controls generated from the provider's public request schema. This node builds the request, uploads any references, submits an async job, polls it (two seconds by default, two hours max), downloads the result, and returns a native ComfyUI VIDEO. Your prompts and reference media go to their servers. That's the whole design.
The controls
prompt: scene, action, camera movement, mood. With a 30-second run, structure helps - describe the shot as two or three phases rather than a single frozen moment, because the model has time to do more than one thing.
resolution (480p/720p/1080p/4K), aspect_ratio (16:9, 9:16, 4:3, 3:4, 1:1, 21:9), duration (4–30). These three determine the bill more than anything you type.
generate_audio defaults true. Native audio is the family's signature; leave it on unless you're scoring elsewhere.
reference_images, reference_videos, reference_audios are dynamic list inputs - native media nodes, asset ids, public URLs. This is secretly a reference-to-video node: a character sheet, a location and a voice, wired in, turns a prompt into direction. Attach a reference video and its input seconds are metered on top of your output, capped at 30 seconds.
generation_id: paid-job handle. Keep it fixed and requeue with identical inputs to resume; increment for a genuinely new generation. request_scope: auto-assigned, non-secret, and only your headless script needs to care.
Outputs: video (list), files (all originals), run id (feeds Resume Run).
Install
ComfyUI 0.41.0+ and Python 3.10+.
cd ComfyUI
git clone --branch v0.1.0 --depth 1 https://github.com/protoface-ai/protoface-comfyui.git custom_nodes/protoface
python -m pip install -r custom_nodes/protoface/requirements.txt
Or Manager: Extensions → Protoface → install protoface-nodes → restart, reload browser. Use ComfyUI's interpreter for pip. Then click Protoface in the lower-right and paste a key from your Protoface account, or export PROTOFACE_API_KEY on a headless box. Four small dependencies, no models, no torch risk.
Where people get burned
Discovering the price at 4K. The usual sequence: prompt, default 720p, looks good, bump to 4K, queue thirty seconds, wince. Draft at 480p, short. Then pay once for the keeper.
30 seconds when 8 would do. Most shots don't need it. Long generations are also harder to steer - more time for the model to invent something you didn't ask for.
Bumping generation_id to retry. That's a second paid job. A poll timeout is a recoverable job; requeue unchanged or recover with the run id in Resume Run.
Wiping ~/.cache/protoface-comfyui. That directory is the request journal - deleting it destroys your recovery path for unresolved paid submissions. Move it with PROTOFACE_STATE_DIR, don't delete it.
Shared servers. Interactive keys stay out of exported workflows, but anyone who can queue on the instance can spend them.
Should you use it?
Yes, for the one shot per project that has to look expensive. No, as a default - the tier structure exists precisely so you don't have to run every idea through the flagship, and this node is the reason Seedance 2.0 Mini and Fast exist.
Inputs (10)
| Name | Type | Default | Description |
|---|---|---|---|
| prompt | STRING | Describe the scene, action, camera movement, and mood for the video. | |
| resolution | COMBO | 720p | The output video resolution. |
| duration | INT | 54–30 | The duration of the generated video in seconds (4-30s). |
| aspect_ratio | COMBO | 16:9 | The aspect ratio of the generated video. |
| generate_audio | BOOLEAN | true | Whether to generate native audio synchronized with the output video. Defaults to true. |
| reference_audios | COMBO | Public URLs, data URIs, or asset ids. | |
| reference_images | COMBO | Public URLs, data URIs, or asset ids. | |
| reference_videos | COMBO | Public URLs, data URIs, or asset ids. | |
| generation_id | INT | 00–9007199254740991 | Keep fixed to reuse/resume this paid job. Increment for a fresh paid generation; independent of the model seed. |
| request_scope | STRING | Automatically assigned per node. Headless clients must supply a stable unique workflow/node ID. This is not a secret. |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| video | VIDEO | — |
| files | PROTOFACE_FILE | — |
| run id | STRING | — |