Nodes/KIE.ai Nodes Next/Hailuo Pro Image to Video
ComfyUI Node

Hailuo Pro Image to Video

The quality tier, and the end-frame socket you must fill

By felipederosilva·Created 2 months ago·Updated 13 days ago· 4
Hailuo Pro Image to Video
  • image_url
  • end_image_url
  • video
  • url
  • all_urls_json
  • task_id
  • raw_json
  • credits_consumed
  • credits_left
◄promptCinematic wide shot: A colossal starship drifts silently above the rings of Saturn, its metallic hull reflecting streaks of cosmic light. The camera pushes closer, revealing thousands of illuminated windows like a floating city. Smaller fighter crafts dart across the frame, leaving neon trails as they maneuver through the vastness of space. A sudden burst of thrusters scatters asteroid fragments in slow motion, glowing faintly as they collide and drift apart.►
◄prompt_optimizertrue►
◄nsfw_checkerfalse►
◄timeout_seconds1200►
◄callback_url►

What it is

MiniMax's Hailuo 02 Pro image-to-video model - the quality tier of the closed Hailuo video service - as a node at KIE Next / Video / Hailuo. You give it a still, optionally a last frame, and a prompt describing the motion; it gives you a video.

Hailuo is one of the names people drop when they're comparing a local Wan or LTX render to a hosted one: same job, hours of VRAM tuning versus a credit and a wait. Our KB's MiniMax panel covers the lab itself - Shanghai, publicly traded since early 2026, Hailuo its flagship closed video product and H3 its first open-weights release. What matters for this node is narrower: Hailuo 02 Pro is the high-quality endpoint, and the same KIE catalog also carries Hailuo 2.3 and the standard/02 text-to-video variants as separate nodes, so you're choosing a model, not a setting.

How it works

The image_url (and end_image_url, if connected) are uploaded to KIE's upload endpoint as PNG, and the returned URLs go into the create-task payload with your prompt and the optimizer flag. The node polls until the task completes, downloads the MP4, and returns a native VIDEO. Nothing runs locally.

The first-frame/last-frame pattern is the interesting part of this node: connect one image and it's classic image-to-video. Connect two and you're interpolating a transition between them - which is how people get a controlled camera move or an A-to-B morph without describing every beat in text.

The inputs

  • image_url (required) - the starting frame. KIE documents a 10MB cap and JPEG/PNG/WebP on the upload.
  • end_image_url (required in this schema) - the last frame. KIE's own docs call this optional, but the node lists it as required. If a run refuses to queue, that's why: feed it an image, even the same one twice, and the graph validates.
  • prompt (required) - up to 1500 characters. Shorter than the image models' limits on purpose; Hailuo responds well to concrete camera and motion language rather than adjective soup.
  • prompt_optimizer - boolean, default true. On, the model rewrites/expands your prompt internally before generating. This is a real fork in behaviour: with it on, weirdly terse prompts get rescued; with it off, what you typed is what you get. Turn it off when you've carefully crafted a prompt and don't want it reinterpreted.
  • nsfw_checker - default false, and the tooltip is unusually candid: with it off, KIE's content filtering is disabled and results come back as the model produced them, with no guarantee anything gets filtered. It is not a guarantee of anything, and provider policy still applies.
  • timeout_seconds (1200) and callback_url (leave empty).

Outputs

video is the deliverable, as a ComfyUI VIDEO. url is the primary result URL; all_urls_json is every URL the task returned; task_id is the handle for anything downstream (extend, upscale, or a task lookup); raw_json is the provider response when you need to know why something failed; credits_consumed and credits_left report cost and remaining balance and are also printed on the node after a successful run.

Note that unlike the standard node, Pro exposes no resolution or duration controls - that's the tier's trade. You're buying a fixed, better render.

Install

Manager → KIE.ai Nodes Next, or:

cd ComfyUI/custom_nodes
git clone https://github.com/felipederosilva/ComfyUI-KIE-Nodes-Next
python -m pip install -r ComfyUI-KIE-Nodes-Next/requirements.txt

requests, Pillow, numpy, PyYAML. No model downloads, no VRAM requirement, but you do need a funded KIE.ai account. Restart ComfyUI, then paste your API key once at Settings → KIE.ai Nodes Next → Connection - verified before saving, masked afterwards, and KIE_API_KEY covers headless installs. The pack generates its nodes from KIE's docs index on first launch and re-syncs about daily.

Gotchas

  • Both frames must be connected. The schema treats end_image_url as required even though the vendor calls it optional; a queue that refuses to start is almost always this.
  • Prompt text is capped at 1500 characters. Long cinematic bibles get truncated by the provider.
  • Video credits are the expensive ones. Draft on the standard tier, finish on Pro.
  • No key → No KIE API key configured. One-time Settings fix.
  • Keep ComfyUI reasonably current - the pack's VIDEO outputs use ComfyUI's newer comfy_api file helper and will tell you to update if it's absent.
CategoryKIE Next/Video/Hailuo

Inputs (7)

NameTypeDefaultDescription
promptSTRINGCinematic wide shot: A colossal starship drifts silently above the rings of Saturn, its metallic hull reflecting streaks of cosmic light. The camera pushes closer, revealing thousands of illuminated windows like a floating city. Smaller fighter crafts dart across the frame, leaving neon trails as they maneuver through the vastness of space. A sudden burst of thrusters scatters asteroid fragments in slow motion, glowing faintly as they collide and drift apart.Text prompt describing the desired video animation (Max length: 1500 characters)
image_urlIMAGEInput image to animate (File URL after upload, not file content; Accepted types: image/jpeg, image/png, image/webp; Max size: 10.0MB)
end_image_urloptIMAGEOptional URL of the image to use as the last frame of the video (File URL after upload, not file content; Accepted types: image/jpeg, image/png, image/webp; Max size: 10.0MB)
prompt_optimizeroptBOOLEANtrueWhether to use the model's prompt optimizer (Boolean value (true/false))
nsfw_checkeroptBOOLEANfalseDefaults to false. When false, no additional content filtering is applied and results are returned directly by the model.
timeout_secondsoptINT120030–7200—
callback_urloptSTRINGOptional KIE callback URL. Leave empty for normal ComfyUI use.

Outputs (7)

NameTypeDescription
videoVIDEO—
urlSTRING—
all_urls_jsonSTRING—
task_idSTRING—
raw_jsonSTRING—
credits_consumedFLOAT—
credits_leftFLOAT—