MiniMax H3 Image-to-Video
The open-weight model whose licence won't let you run it
- first_frame_url
- last_frame_url
- video
- url
- all_urls_json
- task_id
- raw_json
- credits_consumed
- credits_left
The odd one out in this folder
Every other node you'll find next to this one in ComfyUI-KIE-Nodes-Next calls a model you can never download. This one calls a model whose weights are public - MiniMax H3, the 33B omni-modal video model that dropped in late July 2026 and got day-zero ComfyUI support. People were genuinely excited: "Minimax H3 is very, VERY good. Unbelievably so." It does native stereo audio, up to 15 seconds, up to 2K, and it does V2V motion transfer "like Kling."
Then the licence landed and geofenced the West. The MiniMax H3 Community License excludes the US, EU, UK and South Korea from its Applicable Territory - meaning users there aren't licensed to run the local weights, modify them, or even use the outputs. MiniMax framed it as a temporary regulatory read, not a permanent one, but as of writing that's where it stands.
Which is exactly why an API node for H3 makes sense in this pack. If you're in an excluded region and you want H3, this is the legal door - KIE_Next_minimax_h3_image_to_video_9e63733b, under KIE Next / Video / MiniMax, calling KIE.ai's hosted H3 on your own KIE account and credits.
Inputs
- prompt - required, 1 to 7000 characters. Long is fine and encouraged; H3's unified-context design handles text, image and audio context together rather than bolting audio on afterwards.
- first_frame_url (
IMAGE, required) - the opening frame. Native socket, uploaded for you. - duration - a dropdown, 4 to 15 seconds, default 6.
- last_frame_url (
IMAGE, optional) - a closing frame. This is the one input that separates this node from the text-to-video sibling in the same folder, which doesn't have it. - resolution -
2Kor768P, defaulting to2K. - timeout_seconds - 1200 seconds of polling. callback_url - leave empty unless you run a webhook server.
Mechanism
Your first frame (and the last frame, if you gave one) is PNG-encoded and uploaded to KIE's file host; the node then POSTs the documented H3 request to createTask and polls the task record until it reports success, with the poll interval growing from about 2.5 seconds to a 15-second ceiling. Rate limits and transient errors are retried with backoff inside the client. The result is downloaded into output/KIE-Results/videos/ and returned as a native Comfy VIDEO - and since H3 renders audio natively, the clip you get back may carry a soundtrack, so check before layering your own.
It's a blocking call. A 15-second 2K H3 render on a busy queue can take a while; that's what timeout_seconds is for, and re-submitting while it's still working is how you pay twice for one clip.
Outputs
video, url, all_urls_json, task_id, raw_json, plus credits_consumed and credits_left. The receipt prints on the node after each run. credits_left reads -1 if KIE's balance service is briefly unavailable - not a failure, just a missing number.
Install
cd ComfyUI/custom_nodes
git clone https://github.com/felipederosilva/ComfyUI-KIE-Nodes-Next
Restart ComfyUI, then Settings → KIE.ai Nodes Next → Connection → Paste / replace KIE.ai API key. The key is validated against KIE before it replaces an existing one, never lands in your workflow JSON, and comes back as a masked fingerprint with a ✅ CONNECTED status and your balance. Servers can set KIE_API_KEY instead, which takes priority. Dependencies are only requests, Pillow, numpy, PyYAML. Manager install works where the pack is listed, and the repo ships a ZIP plus a one-click Windows installer under dist/.
Traps and honest caveats
The licence question doesn't vanish because you used an API. The geofence restricts running the weights in excluded territories; calling a hosted endpoint is a different legal animal, but if your use case is commercial and the licensing matters, that's a conversation to have deliberately rather than by accident. What the API route does give you is a clean, metered path to H3's quality without shipping a 42 GB model and a GPU that can hold it.
Don't expect the local and API versions to be identical forever. The weights and the hosted service are maintained separately, and the community's whole point of interest was the local release.
Resolution default is 2K. That's the expensive one. When you're testing a first-frame choice, drop to 768P for a run or two - you'll learn whether the shot works for a fraction of the cost.
Fresh install, no node. The pack generates its model nodes from KIE's documentation index at startup and re-syncs at most once every 24 hours; first launch ships a small bootstrap set. Restart, wait a minute, look again.
KIE task ... failed - the provider refusing. The reason is in the message and in raw_json. And if the node errors while wrapping the downloaded clip as a VIDEO with a mention of comfy_api.latest, update ComfyUI.
Inputs (7)
| Name | Type | Default | Description |
|---|---|---|---|
| prompt | STRING | Let the character in the scene turn around naturally and smile, camera slowly pushing forward | Video generation prompt, length is between 1 and 7000 characters. |
| first_frame_url | IMAGE | — | |
| duration | COMBO | 6 | Generated video duration, supporting integer values from 4 to 15 seconds. |
| last_frame_urlopt | IMAGE | — | |
| resolutionopt | COMBO | 2K | Video resolution. |
| timeout_secondsopt | INT | 120030–7200 | — |
| callback_urlopt | STRING | Optional KIE callback URL. Leave empty for normal ComfyUI use. |
Outputs (7)
| Name | Type | Description |
|---|---|---|
| video | VIDEO | — |
| url | STRING | — |
| all_urls_json | STRING | — |
| task_id | STRING | — |
| raw_json | STRING | — |
| credits_consumed | FLOAT | — |
| credits_left | FLOAT | — |