LTX-2 19B LoRA · Text to Video
Stack three of your own weights on a hosted LTX
- loras
- video
- task id
Where this fits
This is the text-to-video sibling of the LTX-2 19B LoRA node: a prompt goes in, a 5-to-20 second clip with synchronized stereo audio comes back, and up to three of your own LTX-2 19B LoRA files ride along on the generation. 16:9 or 9:16. Cheaper than almost anything else that produces sound with picture.
The reason to care about the LoRA socket specifically is that LTX has the most developed open LoRA ecosystem of any video model - official control adapters for pose, depth and canny, camera-move LoRAs, style and character weights, all of it trained against a model Lightricks shipped a trainer for. Doing that locally means wrestling the Gemma 3 12B text encoder, the quantisation of it, and (since 2.3) resolution rules that hard-fail instead of rounding. Doing it here means pasting a URL. If your LoRA workflow is the part you enjoy, stay local. If it's the part you tolerate, this is the shortcut.
The inputs
- prompt - scene, action, camera, and sound. This model generates the soundtrack in the same pass, so the audio is a prompt field. The node's tooltip is explicit about the house format: put the soundtrack on its own
Audio:line. Speech in quotes, named effects, music style, room tone. Skip it and you get whatever the model invents. - aspect_ratio - 16:9 or 9:16.
- resolution - 720p default, with higher tiers costing more per second.
- duration_seconds - 5 to 20 whole seconds.
- seed - a real seed, repeatable. Which is what makes the LoRA socket worth having: change a strength, keep the seed, and you can actually see what the weight did rather than guessing across two random draws.
- loras - a
SPICY_LORASsocket. You don't type a URL here; you add a SpicyAPI LoRA node, give it a direct.safetensorslink and a strength from 0 to 4, and connect the result. Chain LoRA nodes to stack, up to three. The link has to open without a login, and files over 2 GiB are rejected before the run.
Outputs: video, an ordinary ComfyUI VIDEO you can hand to Save Video, and task id - a string naming the exact SpicyAPI request, which is what support wants if something fails.
Install
cd ComfyUI/custom_nodes
git clone https://github.com/spicyapi-ai/comfyui-spicyapi
Restart ComfyUI. Settings > SpicyAPI → paste a key from spicyapi.ai/console/keys → restart once so the node list is rebuilt from your account rather than the snapshot bundled with the release. A server can set SPICY_API_KEY in its environment instead; either way the key lives in the ComfyUI user folder, not in your workflows or your images' metadata. No pip install, no checkpoints, no GPU. Manager users: search the pack title, SpicyAPI. ComfyUI 0.39-ish (it uses the V3 node API) on Python 3.10+.
Blunt notes
Check the generation before you spend on a LoRA. A weight trained for LTX-2 19B is not a 2.3 weight, and the naming conventions around this family are a documented mess - Lightricks acknowledged that everything being labelled "LTX-2" makes 2.3 resources hard to find. Stacking a mismatch produces mush, and at three LoRAs you have three chances to get it wrong.
This is the release generation with the motion problem. LTX-2's I2V was criticised for frozen frames and slow zooms; 2.3 fixed it, and 2.3 is a different node in this pack. LoRAs change style and can inject motion habits, but they don't fix a model that doesn't want to move. Text-to-video fared better than I2V here, which is one honest reason to prefer this node over its image-to-video sibling.
Sound is where LTX shines and stumbles. Music-video and lip-sync work is what made LTX-2 a community favourite - when it behaves, the sync is uncannily good. The 2.x era also produced artifacts: mumbling in the first sampler stage, random sounds, the occasional dropout. Regenerate rather than re-prompt.
Money mechanics. Runs are quoted before they're charged, and Max cost per run in the settings panel refuses anything above your ceiling. Seeds start on fixed so a second Queue press reuses the cached result instead of buying a new generation; flip control after generate to randomize for a fresh draw. Cancelling stops you waiting, not the job - it finishes server-side, is charged if it succeeds, and stays in your console for up to 14 days.
Inputs (6)
| Name | Type | Default | Description |
|---|---|---|---|
| prompt | STRING | Describe the scene, the action, the camera and the sound. Put the soundtrack on its own Audio: line. | |
| aspect_ratio | COMBO | 16:9 | Output aspect ratio. |
| resolution | COMBO | 720p | Output resolution. |
| duration_seconds | INT | 55–20 | Requested output length in whole seconds, from 5 to 20. |
| 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 | Up to three LoRA weight files trained for LTX-2 19B, each with its own strength. Files over 2 GiB are rejected. |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| video | VIDEO | — |
| task id | STRING | The SpicyAPI task id, for the console logs or support. |