Protoface Seedance 2.5 · Image to Video Turbo
Same shot, less waiting, same bill
- video
- files
- run id
What "turbo" means here, exactly
The turbo operation exists because waiting is its own kind of cost. Same model family, same image-to-video idea, generated faster. What it costs you is flexibility: this node offers 720p and 1080p only - no 480p draft tier, no 4K master.
The part people assume and should check: the turbo operation isn't priced differently per second in the catalog that ships with the pack. The quality tiers carry the same per-second rates as the rest of 2.5 - roughly 23 credits a second at 720p, 59 at 1080p. Turbo buys you wall-clock, not a discount. If you were hoping "turbo" meant "cheap", that's the Mini and Fast side of the family, and this isn't it.
Underneath
Like every node in the Protoface pack, this is an API call wrapped in native ComfyUI plumbing: one shared implementation, controls generated from the provider's public request schema, upload your frame, submit, poll, download, return a VIDEO. Seedance stays closed at ByteDance, so there's no local option to compare against - the honest comparison is only turbo vs. non-turbo, and it's latency against resolution range.
The controls
image is your anchor frame - native Image input, URL, data URI or asset id.
prompt is the motion brief. With a turbo run you're likely iterating quickly, so keep prompts short and specific; you'll get more information from three fast variants than from one beautifully-written paragraph.
last_image still works, so even a fast pass can be aimed at a specific end frame rather than left to drift.
resolution is 720p or 1080p here. duration is 4–30 seconds - the full 2.5 range, which is a lot of generation to hand to a speed-optimised operation. generate_audio defaults true.
Note what's absent: there's no aspect_ratio field on the 2.5 animate nodes. The output adapts to your input image. If you need a specific delivery ratio, set it in the still, not the node.
generation_id is the paid-job handle: fixed ID and identical inputs resume the same run; increment for a new generation. request_scope is auto-assigned and only matters for headless queueing.
Outputs: video (list), files (originals), run id (for 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 in Manager: Extensions → search Protoface → install protoface-nodes → restart and reload the browser. Use ComfyUI's interpreter for pip (python_embeded/python.exe on Windows portable). Then click Protoface in the lower-right and paste a key; headless setups export PROTOFACE_API_KEY. Dependencies: httpx, jsonschema, Pillow, PyAV - no weights, no torch conflicts.
Where it goes wrong
You can't draft cheap. This is the big one. Turbo starts at 720p, so there's no 480p smoke test - every idea costs a real 720p generation. If you're exploring, run the non-turbo node at 480p first and come back here when the motion is right.
Long turbo clips are still long turbo clips. A 30-second 1080p turbo generation saves you waiting, not money. It may also be more than you need; 8–12 seconds is where most shots actually live.
Timeout panic. These are asynchronous jobs and the pack polls every two seconds with a two-hour ceiling. A timeout doesn't mean the job died - it means the node stopped watching. Requeue unchanged or open Resume Run with the run id. Bumping generation_id after a timeout is how you buy the same render twice.
Assuming turbo changes the look. It's the same family. If the non-turbo output has a characteristic motion quality you like, expect to see it here too, just sooner.
Is it worth it?
For an interactive session where you're judging motion, yes - turnaround changes how you work, and the community's whole complaint about these API nodes is friction, not just price. For batch work where you set a queue and walk away, the faster operation buys you nothing you'll notice, and you gave up 480p and 4K to get it.
Inputs (8)
| Name | Type | Default | Description |
|---|---|---|---|
| prompt | STRING | Describe the scene, action, camera movement, and mood for the video. | |
| image | COMBO | A public URL, a data URI, or an asset id. | |
| resolution | COMBO | 720p | The output video resolution. |
| duration | INT | 54–30 | The duration of the generated video in seconds (4-30s). |
| generate_audio | BOOLEAN | true | Whether to generate native audio synchronized with the output video. Defaults to true. |
| last_image | COMBO | A public URL, a data URI, or an asset id. | |
| 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 | — |