Text to Video
Type a prompt, get a Dream Machine video — but bring your wallet
- client
- video_url
- generation_id
This is the pack's headline act: write a prompt, pick a model, and get a full video clip generated in Luma's cloud, not on your GPU. When Luma shipped these official nodes in late 2024, the community's reaction was basically "finally, a vendor who sees us" - you could drive Dream Machine from inside ComfyUI without leaving the graph. The catch, which nobody can avoid: every run is a paid API call against Luma's credit system, and people complain loudly that the good clips aren't cheap.
What it does
LumaText2Video (registered as "Text to Video") takes your text and hands it to the Dream Machine API, then blocks your queue while it polls until the clip is done - the node sleeps and checks every few seconds until the generation reaches completed. So queue it and go make tea; a 9-second clip at 720p isn't instant. On completion it returns two strings: video_url (the hosted file) and generation_id.
The inputs that matter:
- model -
ray-flash-2,ray-2, orray-1.6. Ray 2 is the quality model, Ray 2 Flash is the fast/cheap tier, and ray-1.6 is the older one kept around for compatibility. Rule of thumb: start withray-flash-2for iteration, switch toray-2for the take you'll keep. - prompt - the actual text prompt, multiline.
- duration -
5sor9s. - loop - whether the clip should loop seamlessly (useful for animated backgrounds).
- aspect_ratio -
9:16,3:4,1:1,4:3,16:9,21:9. - resolution -
540por720p.
There's also a save toggle (default on) that downloads the clip into ComfyUI's outputs folder, named after the generation id unless you set filename in the optional inputs. Turn save off and it just returns the hosted URL, which keeps your disk tidy if you only want the link.
Where people get burned
- Duration and resolution are only honored on Ray 2 and Ray 2 Flash. The README says it plainly: for
ray-1.6those parameters are ignored, so if your older-model runs come back at the wrong length, that's why. - Credit waste on failures. The API charges per generation; a clip that fails late in the render has already cost you. Keep prompts reasonably short and proofread before you queue a batch.
- It's an output node that still feeds other nodes.
generation_idisn't just bookkeeping - you'll feed it intoLumaExtendGeneration,LumaUpscaleGeneration,LumaAddAudio2Video, andLumaInterpolateGenerationsto chain the clip further. Keep the string wired, don't just look at the pretty video.
How to install
Install the whole pack once via ComfyUI Manager (search "ComfyUI-LumaAI-API"), or cd ComfyUI/custom_nodes && git clone https://github.com/lumalabs/ComfyUI-LumaAI-API and pip-install its requirements (lumaai==1.7.0, requests, numpy, Pillow). No models to download, no VRAM needed - the heavy lifting is on Luma's servers. You do need a LumaAI API key (from the Dream Machine API console) wired into a LumaAIClient node, or the env var / config.ini it falls back to.
Troubleshooting
- "Prompt is required" - the prompt widget is empty; the node won't call the API at all with a blank prompt, so this one never costs you.
- "Generation failed" with a reason from the API - check the
failure_reasonstring the node raises. Most commonly a content-safety refusal, which no amount of prompt twiddling fixes in one direction but is usually fine reworded. - Nothing saves -
saveis off, or yourfilenamepath didn't exist (the node creates directories for you, but a stray extension like.mp4in the filename is stripped and re-added).
If you're comparing it against local open-source video (Wan, Hunyuan), the honest framing is: Luma's quality was the gap-closer back in 2024, but open models have closed a lot of that distance since. You're not paying for the graph - you're paying for not owning a big enough GPU, and for Luma's motion quality, which is still genuinely good at transitions.
Inputs (9)
| Name | Type | Default | Description |
|---|---|---|---|
| client | LUMACLIENT | — | |
| model | COMBO | 3 options: ray-flash-2, ray-2, ray-1.6 | |
| prompt | STRING | — | |
| duration | COMBO | 2 options: 5s, 9s | |
| loop | BOOLEAN | false | — |
| aspect_ratio | COMBO | 6 options: 9:16, 3:4, 1:1, 4:3, 16:9, 21:9 | |
| resolution | COMBO | 2 options: 540p, 720p | |
| save | BOOLEAN | true | — |
| filenameopt | STRING | — |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| video_url | STRING | — |
| generation_id | STRING | — |