MiniMax H3 Singularity LoRA · Image to Video
The Community Fine-Tune, With Your LoRAs Stacked On
- image_url
- last_image_url
- loras
- video
- task id
Base models have a house style, and if you don't like it you train something. Singularity is a community fine-tune of MiniMax H3 - same omni-modal base, someone else's taste on top - and this node animates your opening frame through it while letting you stack up to three LoRAs of your own on top. Clips run 3 to 15 seconds at 480p to 1080p, with stereo sound, from $0.0625 per second.
What you're actually running
MiniMax H3 is the Shanghai lab's 33B omni-modal video model: text, image, video and audio in one context, native stereo audio generated with the picture instead of dubbed after. The open weights landed in August 2026 under a community licence whose Applicable Territory excludes the US, EU, UK and South Korea - a real constraint if you intended to run the checkpoint locally, and a non-issue for this node, which calls the model hosted on SpicyAPI's servers.
What "Singularity" buys you is the thing every fine-tune in this ecosystem buys you: a different distribution. Different motion bias, different look out of the box, and - critically for a video model - a different baseline you can push further with LoRAs. It costs a bit more than base H3 image-to-video, which is the usual fine-tune tax.
The mechanism, briefly
The node is generated from the model's published input schema, so it can't drift from what the API accepts. On Run it uploads your frame(s), takes a quote, creates a task under an idempotency key, polls until the job lands and converts the downloaded MP4 into ComfyUI's VIDEO type. Uploads are cached per account by content hash for 12 hours, so iterating on the prompt doesn't re-send the same image.
Inputs and outputs
Required:
- prompt - what happens after the frame: action, camera, sound. The generated audio follows what you describe; say the foley out loud if you care about it.
- image_url - the opening frame. The clip starts here and keeps this image's aspect ratio, so the still you pick is your framing decision.
- resolution - default 480p, up to 1080p. Raise it on the take you like, not on the exploration.
- duration_seconds - 3 to 15, default 5.
- seed - same seed and settings, same result.
Optional:
- last_image_url - a closing frame the clip resolves to. Useful for bookending a shot between two stills you already like.
- loras - the
lorasoutput of a SpicyAPI LoRA node. That node takes a direct.safetensorsURL (it must open without a login) and a strength from 0 to 4, and you can chain several to stack up to three here. Stacking is multiplicative in practice: three weights at full strength is a great way to get mush, so bring the scales down as you add.
Outputs: video and task id. task id is the exact identifier support needs if a job fails.
Installing it
cd ComfyUI/custom_nodes
git clone https://github.com/spicyapi-ai/comfyui-spicyapi
Restart ComfyUI, then Settings > SpicyAPI → paste a key from spicyapi.ai/console/keys, and restart once more so the node list comes from your account's catalogue. ComfyUI Manager users can skip the git step and search SpicyAPI. Nothing else to install - no Python dependencies at all; the pack uses ComfyUI's existing aiohttp, torch and PyAV. On a server, use SPICY_API_KEY.
Traps worth naming
The usual trio, plus one specific to this node. Set Max cost per run in Settings so an accidental 1080p fifteen-second run stops before it's created. Remember that fixed is the default for seeds because runs are billed - re-queueing reuses the first result instead of quietly charging again; go to control after generate → randomize for a new take. Remember that cancelling stops your wait, not the job, which is billed if it succeeds and stays in your console up to 14 days. And the node-specific one: a LoRA URL that needs a login will fail, and a LoRA trained for base H3 may behave differently under a community fine-tune. Start at scale 0.6-ish and work up.
Inputs (7)
| Name | Type | Default | Description |
|---|---|---|---|
| prompt | STRING | Describe what happens after the opening frame: the action, the camera and the sound. | |
| image_url | IMAGE | Opening frame. The clip starts from this image and keeps its aspect ratio. | |
| resolution | COMBO | 480p | Output resolution. |
| duration_seconds | INT | 53–15 | Requested output length in whole seconds, from 3 to 15. |
| seed | INT | 00–2147483647 | Same seed and settings, same result. Set 'control after generate' to randomize to get a new result on every run; every run is billed. |
| last_image_urlopt | IMAGE | Optional closing frame the clip should resolve to. | |
| lorasopt | SPICY_LORAS | Up to three LoRA weight files trained for MiniMax H3, each with its own strength. |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| video | VIDEO | — |
| task id | STRING | The SpicyAPI task id, for the console logs or support. |