ComfyUI Node

Text to Video

Type a prompt, get a Dream Machine video — but bring your wallet

By lumalabs·Created 2 years ago·Updated about a year ago· 213
Text to Video
  • client
  • video_url
  • generation_id
model
prompt
duration
loopfalse
aspect_ratio
resolution
savetrue
filename

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, or ray-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 with ray-flash-2 for iteration, switch to ray-2 for the take you'll keep.
  • prompt - the actual text prompt, multiline.
  • duration - 5s or 9s.
  • 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 - 540p or 720p.

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.6 those 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_id isn't just bookkeeping - you'll feed it into LumaExtendGeneration, LumaUpscaleGeneration, LumaAddAudio2Video, and LumaInterpolateGenerations to 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_reason string 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 - save is off, or your filename path didn't exist (the node creates directories for you, but a stray extension like .mp4 in 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.

CategoryLumaAI/Ray

Inputs (9)

NameTypeDefaultDescription
clientLUMACLIENT
modelCOMBO3 options: ray-flash-2, ray-2, ray-1.6
promptSTRING
durationCOMBO2 options: 5s, 9s
loopBOOLEANfalse
aspect_ratioCOMBO6 options: 9:16, 3:4, 1:1, 4:3, 16:9, 21:9
resolutionCOMBO2 options: 540p, 720p
saveBOOLEANtrue
filenameoptSTRING

Outputs (2)

NameTypeDescription
video_urlSTRING
generation_idSTRING