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

BYOKey Luma Image to Video

Luma image-to-video — animate a still with Ray 2 and your own key

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

This is the node you reach for when you have a still you love and want it moving. BYOKey_Luma_Image2Video calls Luma's Dream Machine API (api.lumalabs.ai/dream-machine/v1) with your own key and turns an image - optionally with a text prompt - into a video that starts from (or ends at) that frame. Returns a real ComfyUI VIDEO output, no Comfy proxy, no credits.

The distinctive thing about Luma's image-to-video versus most of the pack's other video nodes: you can supply a first frame, a last frame, or both. That's the power feature. Supply both and you get a video that interpolates between two endpoints - animate an expression change, a camera move, a scene transition - which is dramatically more controllable than "here's an image, make it move." That first/last-frame control is exactly the kind of capability that makes a hosted image-to-video model worth wiring into a workflow.

How it works

Same submit-and-poll pattern as the other Luma node: POST /generations, poll until completed or failed, download, wrap in VIDEO. Your first_image/last_image go up as part of the generation request, and the prompt guides the motion. Like all the pack's video nodes it blocks while it waits - that's the queue, not a hang.

The inputs that matter

  • first_image / last_image - the endpoints of your video. The node description says it needs at least one of them; both is where the magic is.
  • prompt - motion language shines here: "the camera slowly pushes in as the subject turns toward it." Describe the motion, not the image - the image already shows the subject.
  • model - ray-2 (default), ray-flash-2, ray-1-6. Same caveat as the text-to-video sibling: resolution and duration are ignored for ray-1-6.
  • resolution - 540p up to 4k for ray-2. Yes, 4k exists here; yes, it costs. Draft at 540p.
  • duration - 5s or 9s.
  • loop - boolean; useful for animated loops from a still.
  • luma_concepts - the LUMA_CONCEPTS input for precise camera motion via a Luma Concepts node.
  • poll_interval / max_wait - queue-waiting knobs (defaults 10s/600s).

seed is nondeterministic regardless of value, per the honest tooltip.

Output is output (VIDEO) - wire into a video preview or save node.

Installing it

It's one of 37 nodes in comfyui-byokey, with zero 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. No models download - Luma does the compute.

Gotchas

The first/last-frame combo is the thing to lean on but also the thing to budget for - every frame pair is a full generation, and getting the interpolation right often means a couple of takes, each billed. Feed good images in too: a low-res or messy source frame gives you a low-res or messy video, and Luma won't fix it for you. The usual video-node cautions apply (max_wait on a busy queue, cost scaling with resolution/duration), and the pack-standard hygiene: your key is saved into the workflow JSON, so scrub it before sharing workflows. If you've got a still that deserves to move, this node is how that happens inside ComfyUI.

Categoryapi/byokey/video

Inputs (13)

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.
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.
first_imageoptIMAGEFirst frame of generated video.
last_imageoptIMAGELast frame of generated video.
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