LTX 2.3 Spicy LoRA · Image to Video
Thirteen built-in LoRAs, and the one input that will confuse you
- image_url
- loras
- video
- task id
What you're renting
The 2.3 Spicy build plus thirteen built-in LoRAs, with the ability to re-weight up to three of them on top of the preset. About $0.0285 per second of output - half again as much as the plain 2.3 Spicy node's $0.019. That's the tier for when the preset's default look is nearly right and you want to push motion or pacing without doing a training run of your own.
On the outside chance you're weighing this against training your own: an LTX-2.3 video LoRA is about seven hours of a 5090 in the current recipes. Renting somebody's tuned stack for three cents a second is the cheap end of that trade.
The loras input, explained properly
This is the part that will waste your afternoon if nobody tells you.
On the MiniMax H3 and LTX-2 19B LoRA nodes in this pack, the LoRA input entries are download links - a path that is a direct URL to a .safetensors file plus a scale. You supply those by adding a SpicyAPI LoRA node.
This node is different. Its loras entries are keys of the built-in LoRAs, not links. The schema lists thirteen: sulphur, sulphur_v1, vbvr, dreamly, synth, plora, singularity, omninft, omninft_bf16, better_motion, physics_v2, hardcut, transition. Entries take a path and an optional scale from 0 to 4, where 0 switches that LoRA off entirely, and you can override at most three. Never heard of them? Neither has anyone outside the release notes - the names are opaque, and the useful ones for most people are the self-describing ones: better_motion, hardcut, transition, physics_v2.
The catch: the only way to fill this socket in the graph is the SpicyAPI LoRA node, and that node's widget is a URL - it will not accept a key like better_motion. If a run with overrides comes back rejected, that mismatch is why. Leave loras empty, use the preset, and only go key-hunting if you're prepared to test on a 3-second 480p run.
The rest of the node
- preset -
tuned(the recommended general-purpose stack) ororiginal(light styling only). The preset is where those thirteen LoRAs actually live;tunedis the bundle switched on. - image_url - the opening frame, and the source of the clip's aspect ratio.
- prompt - action, camera, mood. The image carries the content; the prompt directs the motion.
- duration_seconds - 3 to 20 whole seconds.
- resolution - 480p default, up to 1080p. Higher tiers cost more per second.
- seed - real and repeatable, which is what makes strength experiments meaningful.
Outputs: video (→ Save Video) and task id, the string that identifies the request on SpicyAPI for support or the console.
Install
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 → restart once so the node list is rebuilt from your account. Headless installs can use SPICY_API_KEY; either way the key lives in the ComfyUI user folder, not in workflows or image metadata. No dependencies, no checkpoints, no GPU - the pack installs nothing beyond itself. ComfyUI Manager: search the pack title, SpicyAPI. ComfyUI 0.39-ish (V3 node API), Python 3.10+.
What else to watch
2.3 is the good generation, and this is it. The rebuilt VAE and new latent space fixed the soft detail and the frozen I2V that gave the 19B line a bad name; native portrait training up to 1080x1920 arrived here too. If you tried LTX during the 2.x era and wrote it off, this is the model that earned the retraction.
No audio field. LTX's signature trick - picture and sound generated together - is not on this node. If you want the soundtrack, use one of the LTX-2 19B or 2.5 nodes.
The licence still bans explicit output on paper. LTX-2's community licence (free below $10M revenue, hosting allowed, derivatives share-alike, revocable on notice) incorporates an acceptable use policy that prohibits sexually explicit content, while the weights themselves carry no filter. The Spicy builds exist in that gap. Whether that's your problem is a legal question, not a technical one - but don't confuse "the model will do it" with "the licence permits it".
Money mechanics, briefly. Seeds default to fixed so a repeated Queue press reuses the cached result; Max cost per run in the settings panel refuses over-budget quotes before they're charged; and cancelling stops your wait rather than the job, which keeps running and is charged if it succeeds.
Inputs (7)
| Name | Type | Default | Description |
|---|---|---|---|
| preset | COMBO | tuned | Style preset bundle. tuned is the recommended general-purpose stack; original applies light styling only. |
| image_url | IMAGE | Opening frame. The clip starts from this image. | |
| prompt | STRING | Describe what happens after the opening frame: the action, the camera, and the mood. | |
| duration_seconds | INT | 53–20 | Requested output length in seconds, from 3 to 20. |
| resolution | COMBO | 480p | Output resolution. |
| 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. |
| lorasopt | SPICY_LORAS | Per-LoRA strength overrides applied on top of the preset, up to three. |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| video | VIDEO | — |
| task id | STRING | The SpicyAPI task id, for the console logs or support. |