Nodes/arkennemasis - ChatGPT / Codex / fal AI nodes/arkennemasis fal · MiniMax Hailuo 2.3 Fast Pro Image to Video · $0.33/video
ComfyUI Node

arkennemasis fal · MiniMax Hailuo 2.3 Fast Pro Image to Video · $0.33/video

1080p Motion From One Still for a Flat $0.33

By Hishamahmer·Created 3 months ago·Updated 9 days ago· 11
arkennemasis fal · MiniMax Hailuo 2.3 Fast Pro Image to Video · $0.33/video
  • image
  • video
  • video_path
  • info
◄prompt►
◄prompt_optimizertrue►
◄max_cost_usd20.0►
◄reuse_identical_runtrue►
◄extra_json►
◄max_concurrent1►

You have a still you're happy with and you want it to move, at 1080p, without babysitting a 14B video model's VRAM. That's this node's entire job. It wraps fal's hailuo-2.3-fast/pro/image-to-video endpoint - MiniMax's hosted Hailuo line, the one behind the Hailuo video service - and it charges a flat $0.33 per video.

Why you'd reach for it instead of a local model

Hailuo has no downloadable weights. MiniMax is API-first: the KB's picture is a Shanghai lab that built Hailuo into one of the closed video names people point at next to Kling and Veo, and only opened anything in August 2026 with H3 - whose community licence geofences the US, EU, UK and Korea out of local use anyway. So for a lot of people this isn't "cloud is convenient," it's the only door.

The practical reason is the price ladder inside this pack. Fast Standard at 768p is $0.19 for 6 seconds and $0.32 for 10; plain Standard at the same resolution is $0.28 and $0.56. This one is a flat $0.33 for 1080p Fast, and straight 2.3 Pro is $0.49. So Fast Pro is the 1080p tier that doesn't cost Pro money - and if 768p is good enough for your cut, it's the more expensive of your two options at both lengths. Decide resolution first, then price.

How it works

Not a model on your machine. The node reads your FAL_KEY, checks the inputs, estimates the cost, uploads your first frame to fal's CDN (free), submits one billed request, polls it while showing status, then downloads into output/fal/fal-ai_minimax_hailuo-2.3-fast_pro_image-to-video/. Everything up to and including the upload costs nothing - a failure there never bills you.

The inputs that matter

There are only three required ones, which tells you how little fal exposes here:

  • prompt - capped at 2000 characters in the schema. Describe the motion and the camera, not the picture; the picture is already the first frame. One action per clip lands far more reliably than a paragraph of choreography.
  • image - your first frame. The node checks for a batch where a single picture is expected, so feed it one image, not a batch, or you'll get told off before anything is billed.
  • prompt_optimizer (default on) - the model rewrites your prompt before generating. Handy for a loose sentence, less handy when you've tuned exact wording; turn it off if you want your text used verbatim.

Notice what isn't there: no duration box. fal bills this endpoint per video rather than per second, and the node mirrors fal's input list exactly, so there's nothing to tune. Want the 6-or-10-second choice? That lives on the Standard 2.3 image-to-video nodes.

Optional: max_cost_usd (default $20 - the node stops before uploading if the estimate exceeds it; 0 disables the cap), max_concurrent (default 1, so a canvas full of fal nodes goes one paid call at a time), reuse_identical_run (default on - same settings and same picture returns the already-paid-for file instead of billing again), and extra_json for any fal field with no box.

Outputs: video (a real ComfyUI VIDEO) plus video_path with the file on disk, and info, a JSON blob with the request id, the cost estimate, the saved files and fal's full answer. Wire video into Video Save or the pack's Video Assemble; take the request id from info if you ever need fal Recover Result. There's no audio track - this endpoint returns video only.

Install

In ComfyUI Manager search the pack title, or paste the repo URL into Install via Git URL. Manually:

cd ComfyUI/custom_nodes
git clone https://github.com/Hishamahmer/comfyui-arkennemasis
pip install httpx   # portable: python_embeded\python.exe -m pip install -r ComfyUI\custom_nodes\comfyui-arkennemasis\requirements.txt

Then put your key in the .env next to run_nvidia_gpu.bat and restart:

FAL_KEY=your-key-from-fal.ai/dashboard/keys

There is deliberately no key box on the node - a typed key ends up in every workflow you share.

Where people get burned

FAL_KEY not found is the number one failure, and it's almost always the .env sitting in the wrong folder - it belongs beside the launcher, or in the ComfyUI folder, never in the custom node's directory. Second: a restart mid-wait. The job keeps running on fal and you keep paying, so grab the id from output/fal/_requests.jsonl and pull it down free with fal Recover Result. Third: a wall of fal nodes uploading at once; max_concurrent of 1 exists because twenty nodes hitting fal in the same second is how you find out what a 429 looks like. And the one nobody remembers: reuse_identical_run handing back a previous take and looking like the node ignored your click. It didn't - it saved you $0.33.

Categoryarkennemasis/fal/Video/MiniMax

Inputs (7)

NameTypeDefaultDescription
promptSTRINGText prompt for video generation
prompt_optimizerBOOLEANtrueWhether to use the model's prompt optimizer
imageIMAGEURL of the image to use as the first frame
max_cost_usdoptFLOAT20.00–100000Safety 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_runoptBOOLEANtrueIf 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_jsonoptSTRINGAdvanced: 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_concurrentoptINT11–32How 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)

NameTypeDescription
videoVIDEO—
video_pathSTRING—
infoSTRINGJSON: request id, cost estimate, saved files and fal's full answer.