arkennemasis fal · Seedance 2.5 Draft to 1080p · $1.16/s
The $1.16-a-second button that finishes a Seedance draft
- video
- video_path
- seed
- draft_id
- info
Seedance has the most uncomfortable price in this whole category, and it's worth stating flat: at 1080p, finishing a draft runs roughly $1.16 per second. A six-second shot is about seven dollars. This is the number that made people angry when Seedance arrived in ComfyUI, and the KB quotes the reaction - "extremely expensive", a really small number of videos per month - along with the reply that this is simply "the real price of these renders" after years of subsidised pricing.
So this node is not a toy. It's the second half of a two-stage workflow whose entire justification is not paying that rate for a take you were going to reject.
What it does
ArkFal_bytedance_seedance_2_5_draft_complete takes a draft_id - the one returned by a Seedance node run with draft enabled - and regenerates that task at 1080p. You previewed at 480p for the cheap rate; this is the commit.
Two required inputs:
draft_id- the id string from the draft run. Valid for seven days, and only for the original caller. Both halves of that matter: let a week go by and the draft is dead, and if you finish it with a different fal key (a different account, a colleague's env file) it won't resolve. Same machine, sameFAL_KEY, within the week.codec-auto(default),H264orH265.autokeeps fal's default encoding behaviour; force H.265 if you care about file size, H.264 if you care about everything playing nicely with older NLEs.
Then the shared optional row: max_cost_usd (default $20 - and on this node, seriously consider lowering it, because a 30-second completion is over $30 and the check happens before anything is submitted), reuse_identical_run (on by default), extra_json, max_concurrent.
Outputs: video, video_path, seed, and draft_id echoed back, plus info with the request id, estimate and fal's full answer.
Why draft-then-finish is worth the extra step
The draft runs at 480p for about $0.22 per second - a fifth of the 1080p rate, because the endpoint bills in tokens computed from resolution and duration rather than a flat second. The mechanics of a draft are the same shot: same prompt, same references, same motion. You're just watching it small.
For a 10-second clip that's roughly $2.20 to look, versus $11.60 to look and deliver. Two drafts plus one finish beats two full renders at the cheap rate by a wide margin, and it's the only reason this pricing is defensible for anyone not on a company card.
ByteDance is the lab the KB calls the sharpest two-track operation in the space - accelerators and research derivatives out free, every flagship generator API-only, Seedance included. That's why there's no local substitute to fall back on. Nothing here is downloadable at any VRAM.
Install
cd ComfyUI/custom_nodes
git clone https://github.com/Hishamahmer/comfyui-arkennemasis
Restart ComfyUI, or install via ComfyUI Manager (search arkennemasis). Then:
FAL_KEY=your-key-from-fal.ai/dashboard/keys
in the .env sitting next to run_nvidia_gpu.bat (portable build) or in your ComfyUI folder. There's no key field on the node - the pack keeps credentials out of workflow JSON on purpose - and nothing to download.
Where people get burned
Pasting a draft_id from an older session and getting a cryptic failure: it's expired, or it belongs to a different key. Both are silent-ish errors from fal's side rather than something the node can check for you.
Assuming a draft is a cheap re-roll. It isn't a re-render of the same random seed at small size - it's a preview, and completing it is the render you'll keep or throw away. And once it's finished, reuse_identical_run will hand the same file back for free on a repeat run, so the expensive click is at least not an easily-repeatable mistake.
Results land in output/fal/bytedance_seedance-2.5_draft_complete/; every request is logged to output/fal/_requests.jsonl, which is also where the request id lives if ComfyUI restarts mid-render and you want fal Recover Result to fetch the finished job for free.
Inputs (6)
| Name | Type | Default | Description |
|---|---|---|---|
| draft_id | STRING | The draft_id returned with draft enabled. Valid for seven days and only for the original caller. | |
| codec | COMBO | auto | 'auto' retains default video codec behaviour; 'H264' uses H.264; 'H265' uses H.265. |
| max_cost_usdopt | FLOAT | 20.00–100000 | Safety cap. If the estimated cost of this run is above this many US dollars the node stops BEFORE sending anything to fal. 0 = no cap. |
| reuse_identical_runopt | BOOLEAN | true | If these exact inputs (the settings AND the same pictures/clips/audio) were already paid for and the files are still in output/fal, return them instead of paying again - also after a ComfyUI restart. Turn off for a fresh take with the same settings. |
| extra_jsonopt | STRING | Advanced: a JSON object merged into the request last, for any fal field this node has no box for. Example: {"seed": 7}. Leave empty normally. | |
| max_concurrentopt | INT | 11–32 | How many paid fal calls may run at the same time in one run, across every fal node. 1 (default) = one after another. This node starts its paid part only while fewer than this many fal calls are running. Once any fal node fails, the ones still waiting are not started, so nothing more is billed. |
Outputs (5)
| Name | Type | Description |
|---|---|---|
| video | VIDEO | — |
| video_path | STRING | — |
| seed | INT | — |
| draft_id | STRING | — |
| info | STRING | JSON: request id, cost estimate, saved files and fal's full answer. |