MiniMax H3 First-Last-Frame (URL) to Video
First-Last-Frame video without uploading a thing — paste the URLs instead
- key
- VIDEO
This is the "no upload needed" twin of MiniMax H3 First-Last-Frame to Video. Same idea - first frame in, optional last frame, H3 fills in the motion - but instead of IMAGE tensors it takes plain text URLs. If your frames already live on the web, this node skips the upload step entirely and is slightly faster and simpler for it. If your frames are sitting on your hard drive, you want the tensor version instead, because there's no LoadImage in here.
How it works
Mechanically it's the same pack machinery minus the upload: the node drops your URLs straight into the content array of the generation request, marks the first as first_frame and the second (if present) as last_frame, POSTs to /v2/video_generation, polls until done, and hands back a VIDEO output. No file upload means no mm_file:// round-trip, which trims a step and a couple of failure points off the tensor path.
The URLs are more flexible than you might expect. The tooltip lists three supported forms: plain public URLs, mm_file://{file_id} references (handy if a prior tensor-node upload already gave you a file ID), and data URIs like data:image/...;base64,.... So you can paste an image hosted on your own server, a GitHub raw link, or even base64 data right into the field. The same aspect-ratio caveat as the tensor node applies - the output ratio follows your images - but the 256×256 / 2:5–5:2 validation is a backend concern here, since the node doesn't get to inspect the image before sending it.
The inputs that matter
- first_frame_url - required. The URL of your first frame.
- last_frame_url - optional (marked advanced). The URL of your last frame. Leave blank for first-frame-only.
- prompt - text description of the motion, still required even with both frames set.
- resolution, duration -
768Por2K, and 4–15 seconds.
Same shared gotchas as the rest of the pack: the seed input does nothing (the v2 API has no seed field), and the watermark toggle is off by default. The output is a single VIDEO you can wire into a player or SaveVideo.
Install
Identical to the pack's other nodes:
cd ComfyUI/custom_nodes
git clone https://github.com/meta-sota/ComfyUI-MiniMaxH3-API.git
cd ComfyUI-MiniMaxH3-API
pip install -r requirements.txt
Only aiohttp from pip; needs a modern ComfyUI (author tests 0.30.0) since the pack runs on the native V3 node API. No models, no GPU. The Key node in your workflow provides the credentials - connect its output to key.
Common issues
- Empty
first_frame_url- the node rejects it before anything is sent; a URL is mandatory, the last frame is not. - Bad URL / 404 from the API - since there's no local validation, the API is the first place a dead link surfaces. Paste a URL you can open in a browser first.
- Aspect ratio surprises - the output follows the image, so a portrait frame gives you a portrait video. If the ratio looks wrong, it's the input, not the node.
Inputs (8)
| Name | Type | Default | Description |
|---|---|---|---|
| key | MINIMAX_H3_KEY | — | |
| prompt | STRING | Text description of the video. | |
| first_frame_url | STRING | Public URL of the first frame image. Also supports mm_file://{file_id} or data:image/...;base64,... | |
| last_frame_url | STRING | Optional URL of the last frame image. | |
| resolution | COMBO | 768P | Output resolution. |
| duration | INT | 54–15 | Duration in seconds (4-15). |
| seed | INT | 420–4294967295 | Random seed. |
| watermark | BOOLEAN | false | Add an AIGC watermark to the video. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| VIDEO | VIDEO | — |