arkennemasis fal · Seedance 2.5 Text to Video · $0.22-1.16/s
How to hold down the most expensive button in the pack
- video
- video_path
- seed
- draft_id
- info
You type a paragraph, you get one unbroken thirty-second shot with sound already in it. That's the pitch, and it's real - Seedance 2.5 reasons over the whole clip instead of denoising it in chunks, which is why motion, lighting and a character's face survive from the first frame to the last. No stitching six-second clips and praying the seams don't show.
The catch is the price tag, which is why this node deserves more caution than the rest of the arkennemasis audio shelf combined. Seedance is ByteDance's closed video line - there are no weights to download, at any VRAM, ever. ByteDance opens components and accelerators freely and keeps every flagship product on the API, and Seedance is the flagship. So this node is the only door, and it's a metered one.
How it works
Like every arkennemasis fal · node, it's generated from a JSON file describing fal's endpoint, and it does the same seven steps on Run: read the key, validate inputs, estimate the cost, upload anything connected, submit one billed call, poll, download into output/fal/bytedance_seedance-2.5_text-to-video/. Since this model is text-only, steps four and five collapse - nothing to upload, one POST. Every submit and every result is appended to output/fal/_requests.jsonl, which is what lets the pack recover a job you paid for after a ComfyUI restart.
The inputs that matter
prompt is the whole creative direction. resolution is 480p / 720p / 1080p, and it's the single biggest lever on your bill: roughly $0.22, $0.47 and $1.16 per second of finished video respectively. Do the arithmetic before you run - 30 seconds at 1080p is about $35, and the node's max_cost_usd defaults to $20, so it will refuse that run before uploading anything. That default cap is not a bug, it's the seatbelt.
draft is the good idea here. Turn it on and you get a 480p preview at the 480p rate, plus a draft_id you can hand back to fal to finish at 1080p within seven days. Draft a shot for a few dollars, look at it, then commit.
duration takes auto or 4 to 30 seconds; auto lets the model pick from your prompt, which is charming until it decides your "cinematic establishing shot" wants 30 seconds at 1080p. aspect_ratio covers 21:9, 16:9, 4:3, 1:1, 3:4, 9:16 or auto. generate_audio is free either way - the node's own tooltip says cost is identical with or without it - so leave it on unless you're layering your own soundtrack. bitrate_mode and codec are the last two you should touch.
Outputs: video (wire it to a Save/Combine node), video_path on disk, seed (the number fal rolled - worth pasting into your notes next to a take you liked), draft_id, and info, a JSON blob with the request id, the cost estimate and fal's full answer.
Install
Manager → search comfyui-arkennemasis, or:
cd ComfyUI/custom_nodes
git clone https://github.com/Hishamahmer/comfyui-arkennemasis
then restart ComfyUI. The fal nodes need nothing beyond the standard library; the pack's requirements.txt only lists httpx, and that's for the Codex/ChatGPT-login nodes. The key goes in one place - a line FAL_KEY=... in the .env next to run_nvidia_gpu.bat (or inside ComfyUI/, the node checks both). There is deliberately no key box on the node, so a key can never end up baked into a workflow you share.
Common issues & troubleshooting
"fal: no FAL_KEY found." The node names the exact path it looked in. Put the line there and restart. It also refuses correctly if fal rejects the key itself, which reads differently.
My 1080p run stops before it does anything. That's max_cost_usd at its $20 default. Either shorten the clip, drop to 720p, or raise the cap - set it to 0 to remove it entirely, which I would not do absent-mindedly.
It returned the same video instantly and didn't bill me. reuse_identical_run defaults to true, so an identical set of inputs whose files are still in output/fal comes back from disk. Turn the toggle off when you want a genuinely new take.
ComfyUI restarted while it was running. The job kept going on fal. Grab the request id from output/fal/_requests.jsonl and feed it to the pack's fal Recover Result node - that download is free.
A prompt that implies a long, complex shot. Duration on auto plus a rambling prompt is how a $7 idea becomes a $35 one. Pin the duration.
Inputs (12)
| Name | Type | Default | Description |
|---|---|---|---|
| prompt | STRING | The text prompt used to generate the video | |
| resolution | COMBO | 720p | Video resolution - 480p for faster generation, 720p for balance, 1080p for high quality. |
| draft | BOOLEAN | false | Generate a draft preview at 480p, overriding resolution. Returns a draft_id for completing the draft at 1080p within seven days. |
| duration | COMBO | auto | Duration of the video in seconds. Supports 4 to 30 seconds, or auto to let the model decide based on the prompt. |
| aspect_ratio | COMBO | auto | The aspect ratio of the generated video. Use 16:9 for landscape, 9:16 for portrait/vertical, 1:1 for square, 21:9 for ultrawide cinematic, or auto to let the model decide. |
| generate_audio | BOOLEAN | true | Whether to generate synchronized audio for the video, including sound effects, ambient sounds, and lip-synced speech. The cost of video generation is the same regardless of whether audio is generated or not. |
| bitrate_mode | COMBO | standard | Output bitrate mode. 'high' requests a higher-quality, larger-file encode from the model; 'standard' uses the default bitrate. |
| 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. |