ComfyUI Node

MiniMax Hailuo 2.3

Cloud video gen that isn't a local-VRAM nightmare

By Runware·Created 2 years ago·Updated about a month ago· 140
MiniMax Hailuo 2.3
  • frameImages
  • video
positivePrompt
size720p (16:9)
durationfalse
duration_value0.00
numberResults1
providerSettings.minimax.promptOptimizerfalse
safetyfalse
safety.checkContentfalse
safety.modefast
ttlfalse
ttl_value60
outputFormatMP4
outputQuality95

MiniMax Hailuo is the Chinese video generation family that got famous for one thing: motion that actually looks physical. Water that flows, hair that moves, characters whose limbs don't melt into each other - Hailuo's whole reputation is "the model whose videos move well," and it's a closed model you cannot run locally. That's the entire reason this node exists. The Runware pack puts Hailuo 2.3 behind a node with the model's real parameters as widgets, runs it on Runware's machines, and hands you back a native VIDEO.

For the ComfyUI crowd this is a genuinely different proposition from local video gen. Local pipelines (Wan, LTX) want a big GPU, a pile of VRAM, and half an hour of tuning per clip. Hailuo 2.3 wants none of that from you - you prompt, wait, and get a finished MP4. The trade is that it's closed and metered: every run costs money, and the community's standing advice about Runware applies - it's fast and cheap, but you can get carried away and forget you're spending.

What you set

  • positivePrompt (optional here, but you want it) - describe motion and scene, not just subjects. "A cup of coffee on a rainy windowsill, steam rising, rain streaking the glass" beats "coffee."
  • frameImages - the image-to-video input. Feed it a still and Hailuo animates it; this is the mode most people end up using, since it gives you control over the starting frame.
  • width / height - default 1024 square.
  • duration toggle + duration_value - seconds; frames = duration × the model's fps. Off uses the model's default.
  • providerSettings.minimax.promptOptimizer - automatic prompt rewriting. The tooltip is blunt: it affects reproducibility. Flip it off for seed-stable runs.
  • safety.mode - none, fast, or full. This is MiniMax's content-checking depth; if you're hitting unexplained refusals, check what it's set to.
  • outputFormat - MP4 (default), WEBM, or MOV. outputQuality 20-99.
  • numberResults - 1-4 variations.

Output is video (VIDEO), which wires into the pack's video output handling (saved to your output folder as a file).

How it works

Every node in this pack is the same shape: build a request with the model AIR and taskType, send it over REST via the Runware SDK, and convert the returned media into a ComfyUI-native type. Video runs take longer than images - the model generates tens of frames in the cloud - so expect a real queue time, and the title bar shows the cost when it lands. Hailuo is unambiguously not open source (a fact the mods of r/StableDiffusion used to enforce, since it's a closed tool), so there's no local path; the API node is the path.

Installing

ComfyUI Manager → search Runware → install → restart. Manual:

cd ComfyUI/custom_nodes
git clone https://github.com/Runware/ComfyUI-Runware
pip install -r ComfyUI-Runware/requirements.txt

No model downloads; dependencies are runware-sdk, pillow, soundfile. API key via Settings → Runware API key, RUNWARE_API_KEY, or runware auth login.

Troubleshooting

Key first. If identical seeds produce different videos, promptOptimizer is rewriting your prompt - disable it. If output comes back as a path instead of a playable VIDEO, that's the pack's graceful degradation when the native video type isn't available; you'll still get the file. And watch the bill - video is the priciest thing in this pack per run.

CategoryRunware/Video/minimax

Inputs (14)

NameTypeDefaultDescription
frameImagesoptIMAGE
positivePromptoptSTRINGText prompt describing elements to include in the generated output.
sizeoptCOMBO720p (16:9)Output size. Only one of resolution or dimensions is sent.
durationoptBOOLEANfalseEnable to set duration. Off uses the model's default.
duration_valueoptFLOAT0.00Length of the generated video in seconds. The total number of frames produced is determined by duration multiplied by the model's frame rate (fps).
numberResultsoptINT11–4Number of results to generate. Each result uses a different seed, producing variations of the same parameters.
providerSettings.minimax.promptOptimizeroptBOOLEANfalseEnable automatic prompt optimization. Affects reproducibility.
safetyoptBOOLEANfalseEnable to set safety. Off uses the model's default.
safety.checkContentoptBOOLEANfalseEnable or disable content safety checking.
safety.modeoptCOMBOfastSafety checking mode for video generation.
ttloptBOOLEANfalseEnable to set ttl. Off uses the model's default.
ttl_valueoptINT60Time-to-live (TTL) in seconds for generated content. Only applies when `outputType` is `URL`.
outputFormatoptCOMBOMP4File format for the generated video.
outputQualityoptINT9520–99Compression quality of the output. Higher values preserve quality but increase file size.

Outputs (1)

NameTypeDescription
videoVIDEO