MiniMax (Hailuo) video generation in Nebula โ text-to-video, image-to-video (first frame), and subject-reference (face-consistent) video via Hailuo 2.3 / Hailuo 2.3 Fast / Hailuo 02 / S2V-01 on the async /v1/video_generation endpoint. VIDEO ONLY in Nebula (the API also offers TTS, voice clone, music, and image gen, but no Nebula node wires those). Activate when the user configures any minimax-t2v, minimax-i2v, or minimax-s2v node, or asks about MiniMax / Hailuo in Nebula. Sourced from the official MiniMax platform docs (platform.minimax.io) and the Nebula audit guide docs/api-guides/minimax.md, cross-checked against backend/handlers/minimax.py and node_definitions.json on 2026-06-04 (model enums updated 2026-06-10).
Installation
Mit Codex oder Claude installieren Kopieren Sie diesen Prompt, fรผgen Sie ihn in Codex, Claude oder einen anderen Assistant ein und lassen Sie die Skill-Seite prรผfen und installieren.
MiniMax (Hailuo) video generation in Nebula โ text-to-video, image-to-video (first frame), and subject-reference (face-consistent) video via Hailuo 2.3 / Hailuo 2.3 Fast / Hailuo 02 / S2V-01 on the async /v1/video_generation endpoint. VIDEO ONLY in Nebula (the API also offers TTS, voice clone, music, and image gen, but no Nebula node wires those). Activate when the user configures any minimax-t2v, minimax-i2v, or minimax-s2v node, or asks about MiniMax / Hailuo in Nebula. Sourced from the official MiniMax platform docs (platform.minimax.io) and the Nebula audit guide docs/api-guides/minimax.md, cross-checked against backend/handlers/minimax.py and node_definitions.json on 2026-06-04 (model enums updated 2026-06-10).
MiniMax (Hailuo) Skill
When to use
User configures any minimax-* node (minimax-t2v, minimax-i2v, minimax-s2v)
User wants a short AI video clip from a text prompt, a starting still image, or a reference face
User asks about MiniMax / Hailuo models (Hailuo 2.3, Hailuo 2.3 Fast, Hailuo 02, S2V-01), durations, resolutions, or in-prompt camera moves
User asks why MiniMax TTS / music / image generation isn't available as a node (see Capability boundaries)
Universal rules (all MiniMax nodes)
Auth + env var. Header Authorization: Bearer <MINIMAX_API_KEY> plus Content-Type: application/json. The backend reads MINIMAX_API_KEY from .env at the repo root. Missing key โ the node errors with MINIMAX_API_KEY is required. Restart the backend after adding the key.
Base URL.https://api.minimaxi.com (the handler's MINIMAX_API_BASE). All three nodes POST to https://api.minimaxi.com/v1/video_generation. Note: the MiniMax dashboard / docs Global host is api.minimax.io, but Nebula's handler talks to the api.minimaxi.com host โ do not "correct" it.
Execution pattern: async-poll (3 steps). All three nodes are executionPattern: "async-poll":
PollGET /v1/query/video_generation?task_id=<id> every 5 s, up to 300 polls (~25 min). Poll must return HTTP 200. The JSON status field drives the loop.
Retrieve + download on success: GET /v1/files/retrieve/{file_id} โ file.download_url, then the video is saved locally and exposed on the video output port.
Status / error codes. Poll status values: Queueing / Processing โ keep polling; Success โ fetch file_id then retrieve; Fail โ raises MiniMax task failed: <message>. No file_id on Success, or no download_url on retrieve, also raises. After 300 polls without Success โ MiniMax task timed out.
Input-URI rules (image ports).first_frame_image (I2V) and subject_reference (S2V) accept an http(s):// URL, a data: URI, or a local file path โ the handler's _resolve_image_url passes URLs/data-URIs through and converts local paths to a data URI via image_to_data_uri. A local path that doesn't exist raises Image file not found. Use JPG/PNG/WebP. The S2V image must contain a human face (it's sent as subject_reference: [{"type": "character", ...}]).
Key gotchas.
The connected input selects the mode, not a dropdown. The handler checks inputs in priority order: subject_reference present โ S2V; else first_frame_image present โ I2V; else โ T2V. So if you wire a Character Image, duration/resolution are ignored (S2V doesn't send them).
prompt is always required. Empty prompt on any node raises Prompt input is required โ including I2V and S2V, where the image alone is not enough.
Duration/resolution constraints.duration defaults to 6, resolution to 768P. The 10 s option is valid only at 768P; 1080P is 6 s only. Don't pair duration: 10 with resolution: 1080P.
Long-running. A clip normally takes a couple of minutes. Treat these nodes as slow poll nodes โ wait on the progress bar, never assume instant output.
Pick the right node
All three are video-gen nodes, share backend/handlers/minimax.py, and hit the same endpoint. Mode is chosen by the connected input.
Node (display name)
Node ID
Endpoint / model
Required inputs
Key params
MiniMax T2V
minimax-t2v
POST /v1/video_generation ยท Hailuo 2.3 / 2.3 Fast / 02
prompt (Text)
model, duration {6,10}, resolution {768P,1080P}
MiniMax I2V
minimax-i2v
POST /v1/video_generation ยท Hailuo 2.3 / 2.3 Fast / 02
first_frame_image (Image) + prompt (Text)
model, duration {6,10}, resolution {768P,1080P}
MiniMax S2V
minimax-s2v
POST /v1/video_generation ยท S2V-01 only
subject_reference (Image, human face) + prompt (Text)
duration โ enum (number), default 6. Options: 6, 10. 10 only valid at 768P.
resolution โ enum, default 768P. Options: 768P, 1080P. 1080P only valid at duration 6.
minimax-i2v (MiniMax I2V)
Inputs:first_frame_image (Image, required โ the opening frame), prompt (Text, required โ describes the motion).
Output:video (Video).
Params: same as T2V โ model (default MiniMax-Hailuo-2.3; MiniMax-Hailuo-2.3 / MiniMax-Hailuo-2.3-Fast / MiniMax-Hailuo-02), duration (default 6; {6,10}), resolution (default 768P; {768P,1080P}). Body sends first_frame_image as the resolved image string.
minimax-s2v (MiniMax S2V)
Inputs:subject_reference (Image, required โ a human face; display label "Character Image"), prompt (Text, required).
Output:video (Video).
Params:
model โ enum, default S2V-01, only option S2V-01.
No duration or resolution โ the S2V API doesn't accept them, so the node deliberately omits them. The image is sent as subject_reference: [{"type": "character", "image": [<url>]}].
In-prompt camera movement (all three nodes)
Camera direction lives inside the prompt text, not as a param. Use bracketed cues: [pan], [zoom], [static] (also [tilt], [push in], [pull out], [truck] styles). Example prompt: a red crab scuttling across wet sand at sunset, [pan] right. There is no separate camera param on any node.
Recipes
Quick text-to-video (1080P).Text node ("a red crab scuttling across wet sand at sunset, [pan] right") โ wire into the prompt port of minimax-t2v โ set duration: 6, resolution: 1080P (1080P is 6 s only) โ run. Out: a 6 s 1080P clip on the video output.
Animate a generated still (image โ video). Any image node (e.g. gpt-image-2 or gemini image gen) โ wire its image output into the first_frame_image port of minimax-i2v โ add a Text node into prompt describing the motion ("camera slowly pushes in, leaves rustle, [zoom]") โ keep model: MiniMax-Hailuo-2.3 โ run. The clip starts exactly from your still.
Consistent-character clip (subject reference). Feed a portrait photo (URL, data URI, or local path) into the subject_reference port of minimax-s2v โ wire a Text node into prompt ("she turns to camera and smiles, [static]") โ run. S2V-01 keeps the face consistent. No duration/resolution to set โ those are fixed for S2V.
Handler:backend/handlers/minimax.py โ single function handle_minimax_video. One handler serves all three nodes; it branches on the connected input port to build the right request body.
Input ports: T2V = prompt; I2V = first_frame_image + prompt; S2V = subject_reference (labelled "Character Image") + prompt. The connected image port selects the mode โ wiring a Character Image makes it S2V regardless of any duration/resolution you set (those get dropped).
Output ports: each node has one video port (dataType Video). The finished MP4 is downloaded locally via save_video_from_url into the run dir.
Chaining rules: the video output can feed any downstream node that accepts a Video input (e.g. a preview node or a video upscaler). Image inputs to I2V/S2V can come from upstream image-gen nodes (their image output port โ the first_frame_image / subject_reference port) or from a literal URL/path.
How outputs render: the downloaded video is served from the run dir and plays in Nebula's video preview on the canvas. Progress is reported via ProgressEvent during polling (a progress bar climbs to ~99% until Success).
Capability boundaries (what the MiniMax API does but Nebula does NOT expose)
MiniMax-in-Nebula is video only. Do not promise or invent nodes for the following โ the API supports them, but no Nebula node wires them (per the audit gap table, only ~12% of the MiniMax surface is exposed):
First-and-last-frame video (last_frame_image start+end mode) โ no node exposes it. Only first_frame_image (I2V) is wired.
prompt_optimizer toggle โ API can auto-optimize prompts; not surfaced as a node param.
Director / legacy video models (T2V-01-Director, I2V-01-Director, I2V-01-live) โ not in the Nebula model enums.
Video Generation Agent (/v1/.../video-agent, templated action clips like Diving/Climbing) โ no node.
Music generation (/v1/music_generation, music-2.6 / music-1.5, prompt+lyrics โ music) โ no node.
Image generation (/v1/image_generation, image-01) โ no MiniMax image node in Nebula (use a gpt-image-2 or gemini node instead).
Chat / LLM M-series text models โ no text node uses MiniMax.
File management โ only /v1/files/retrieve/{id} is used (to fetch the finished video); upload/list/delete are not wired.
If a user asks for any of the above, say the API supports it but Nebula has no node for it yet โ don't hallucinate a minimax-tts / minimax-music / minimax-image node.