arkennemasis fal · MiniMax Hailuo 2.3 Fast Standard Image to Video · $0.19-0.32/video
The $0.19 Draft Clip You Should Be Rendering First
- image
- video
- video_path
- info
Cheapest moving picture in this corner of the pack: $0.19 for a 6-second 768p clip from a still, $0.32 for 10 seconds. If you're building a film shot by shot and you don't yet know whether a shot works, this is the node you iterate on - not the 1080p one.
What it actually is
A wrapper around fal's minimax/hailuo-2.3-fast/standard/image-to-video endpoint, one of the hundred-odd fal nodes that ship in comfyui-arkennemasis. Hailuo is MiniMax's closed, hosted video line - no weights to download, no local option, which is exactly the case where an API node in your graph makes sense rather than being an awkward compromise. The community's own comparison threads put Hailuo in the "good value for money" bucket for video, so the value tier is the honest place to start, not a consolation prize.
"Fast" is fal's cheaper, quicker variant of the same 2.3 model. "Standard" here means 768p; Pro is 1080p. The trade you're making is resolution and, in practice, some detail - not the model family.
How it works
Same machinery as every other fal node in the pack: read FAL_KEY from your install's .env, validate the inputs, estimate the cost and compare it to max_cost_usd, upload your frame to fal's CDN for free, submit the single billed call, poll and download into output/fal/fal-ai_minimax_hailuo-2.3-fast_standard_image-to-video/. Nothing before the submit costs anything, so a misconfigured run is a wasted minute, not a wasted dollar.
Inputs, and the two that decide your bill
image- the first frame. This is an image-to-video node; the whole look of the clip is decided here, so put your best still in. Feed one image, not a batch.prompt- up to 2000 characters. You're describing motion and camera, since the composition is already fixed by the frame. "She turns her head toward the window, slow push in" beats a paragraph of setting.duration-6or10seconds, and this is the price dial: $0.19 versus $0.32.prompt_optimizer(default on) - the model's own prompt rewriter. Leave it on for off-the-cuff prompts; switch it off when you've deliberately written something precise and don't want it reworded.
The optional max_cost_usd ($20 default, 0 = off), max_concurrent (1 = one paid fal call at a time across the whole run), reuse_identical_run (returns an already-paid-for identical run rather than billing twice) and extra_json (raw JSON merged into the request for any fal field with no box) round it out.
Outputs are video - a genuine VIDEO you can pipe into Video Save or Video Assemble - video_path for the file on disk, and info, the JSON with request id, estimate, saved files and fal's answer. No audio comes back; this is silent footage.
Install
cd ComfyUI/custom_nodes
git clone https://github.com/Hishamahmer/comfyui-arkennemasis
pip install httpx
Or ComfyUI Manager → Install via Git URL with the repo link. Restart, then create the .env next to run_nvidia_gpu.bat:
FAL_KEY=your-key-from-fal.ai/dashboard/keys
The node appears under arkennemasis/fal/Video/MiniMax in the node menu, titled with its live price.
Draft on this, deliver on the expensive one
The reason to care about $0.19 is iteration. A 6-second 768p Fast clip costs less than a third of a 1080p Pro one, and for answering "does this motion work?" 768p is plenty. Lock the shot here, then re-render the keeper on the Pro node. Ten drafts at this price is $1.90; ten at Pro is $4.90.
Where people get burned
The .env has to be next to the launcher or in the ComfyUI folder - nowhere else. Anything the node needs before the submit (key, prompt length under 2000, image present, cost under the cap) fails free; the billed call is the last step, so if you're seeing money go out on runs that produce nothing usable, the problem is upstream in the inputs, not the billing.
If ComfyUI restarts while a job is in flight, the job finishes on fal without you. The submit is logged in output/fal/_requests.jsonl; feed that request id into fal Recover Result (free, arkennemasis/fal/Tools) to collect what you already paid for instead of paying again. And if you built a chain of twenty fal nodes, keep max_concurrent at 1 - the default exists to keep twenty paid requests from landing on fal in the same second and collecting rate-limit errors.
Inputs (8)
| Name | Type | Default | Description |
|---|---|---|---|
| prompt | STRING | Text prompt for video generation | |
| prompt_optimizer | BOOLEAN | true | Whether to use the model's prompt optimizer |
| image | IMAGE | URL of the image to use as the first frame | |
| duration | COMBO | 6 | The duration of the video in seconds. |
| 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 (3)
| Name | Type | Description |
|---|---|---|
| video | VIDEO | — |
| video_path | STRING | — |
| info | STRING | JSON: request id, cost estimate, saved files and fal's full answer. |