Nodes/comfyui-byokey/BYOKey Luma Text to Video
ComfyUI Node

BYOKey Luma Text to Video

Luma Dream Machine text-to-video — Ray 2 with your own key

By MeteorAndy·Created 4 months ago·Updated 3 months ago· 0
BYOKey Luma Text to Video
  • luma_concepts
  • output
api_key
base_urlhttps://api.lumalabs.ai/dream-machine/v1
prompt
modelray-2
aspect_ratio16:9
resolution540p
duration5s
loopfalse
seed0
poll_interval10
max_wait600

Luma's Dream Machine - and its Ray model family - is one of the main hosted video generators, and BYOKey_Luma_Text2Video is the node that calls it with your own key. It hits api.lumalabs.ai/dream-machine/v1 directly, no Comfy proxy, no credits, and returns a real ComfyUI VIDEO. If you're already paying Luma and want its output feeding your ComfyUI pipeline, this is the door.

The Ray models are the hosted-fronfier class of video gen: strong motion coherence, good prompt adherence, and - worth calling out - the option to drive camera motion through Luma's Concepts system. The KB's framing applies: this is a closed model with no local equivalent, so the API node is the only way it enters a graph. The honest positioning versus the pack's other video nodes: Luma is a solid, well-established default, not the flashiest and not the cheapest, but reliably good at shot-level generation.

How it works

Standard submit-and-poll: POST to /generations, then poll the generation id until the state flips to completed (or failed), then download the finished video and wrap it in ComfyUI's VIDEO output type. The node blocks while it waits, which is why poll_interval and max_wait are exposed - Luma's queue can be slow at peak times.

The inputs that matter

  • model - ray-2 (default), ray-flash-2, or ray-1-6. Ray-2 is the quality default; ray-flash-2 is the cheap-and-fast tier; ray-1-6 is the older model, and its quirk is in the tooltips: resolution and duration are ignored for ray-1-6, so don't chase settings on it.
  • prompt - the video prompt. Dream Machine responds to camera language ("slow push-in," "handheld") - use it.
  • aspect_ratio - 16:9 (default), 9:16, 1:1, 4:3, 3:4, 21:9, 9:21.
  • resolution - 540p (default), 720p, 1080p. Bump only for finals; video resolution costs multiply fast.
  • duration - 5s or 9s.
  • loop - a boolean; when true Luma aims for a seamless loop, which is great for backgrounds and product shots.
  • luma_concepts - an optional LUMA_CONCEPTS input from a Luma Concepts node, which dictates camera motion. If you want "dolly in while tilting up," this is how you say it precisely instead of hoping the prompt reads.

seed exists but - honest tooltip - results are nondeterministic regardless. Don't expect reproducible takes.

Output is output (VIDEO) - feed it to a video preview/save node to see anything.

Installing it

It's one of the 37 nodes in comfyui-byokey, no extra dependencies beyond ComfyUI's bundled torch/aiohttp/PIL/numpy/av. Install via ComfyUI Manager (search "byokey") or:

cd ComfyUI/custom_nodes
git clone https://github.com/MeteorAndy/comfyui-byokey.git

Restart, and it's under api/byokey/video.

Gotchas

The recurring themes: cost and patience. Video generation is the most expensive per-call thing in ComfyUI, and Luma bills per generation - 1080p/9s runs add up fast, so 540p/5s for drafts. The synchronous wait means a busy queue can blow past max_wait (default 600s); raise it if you see timeouts. And don't bother tuning resolution/duration on ray-1-6 - they're ignored, which is easy to miss and frustrating to debug. Standard BYOKey hygiene: your key is saved into the workflow JSON, so scrub it before sharing. Solid, dependable, slightly pricey: that's Luma, and this is the node that puts it in your graph.

Categoryapi/byokey/video

Inputs (12)

NameTypeDefaultDescription
api_keySTRINGYour Luma API key.
base_urlSTRINGhttps://api.lumalabs.ai/dream-machine/v1Luma API base URL (override for relays).
promptSTRINGPrompt for the video generation.
modelCOMBOray-2The video generation model to use.
aspect_ratioCOMBO16:9Aspect ratio of the generated video.
resolutionCOMBO540pOutput resolution (ignored for ray-1-6).
durationCOMBO5sVideo duration (ignored for ray-1-6).
loopBOOLEANfalseWhether the video should loop.
seedINT00–18446744073709550000Seed to determine if node should re-run; results are nondeterministic regardless of seed.
luma_conceptsoptLUMA_CONCEPTSOptional Camera Concepts to dictate camera motion via the Luma Concepts node.
poll_intervaloptINT101–120Seconds between poll attempts.
max_waitoptINT60030–3600Maximum seconds to wait for completion.

Outputs (1)

NameTypeDescription
outputVIDEO