Protoface Luma Ray 3.2 · Text to Video
Three knobs, one bill
- video
- files
- run id
The one-line version
Text goes in, a cinematic clip comes out, and your Protoface account gets charged. Luma's Ray 3.2 is the closed model here; Protoface is the wrapper that puts it in your graph as a node with native VIDEO output. Nothing runs on your GPU - there's no checkpoint to download, no VRAM math, no ComfyUI update that breaks the sampler. That's either the whole point or a dealbreaker, and you probably already know which.
The case for reaching for it: you're building a workflow where a shot is one step - storyboard up front, Prompt Builder feeding the node, output getting a LUT and an upscale downstream. Local video models slot into that shape too, but they want 20GB of VRAM and a pile of nodes and a ten-minute generation. This one wants a key and thirty seconds of patience. The case against is the KB's standing one about API nodes: per-call cost, your prompt leaving the machine, and a content filter you can't patch. Ray is for shots you can afford to re-roll, not for iterating by brute force.
How it works
The pack generates every one of its ~95 task nodes from a catalog of public schemas - one shared adapter, not per-model code. When you queue, the node encodes any media into an upload, then submits a request whose idempotency key is a digest of your account, the node's request_scope, the node id, generation_id, the model, the schema fingerprint and the payload. That key is journaled to ~/.cache/protoface-comfyui before the submission goes out, which is why an ambiguous network failure doesn't double-charge you. Then it polls (every 2s, up to 2 hours by default) and downloads the result into native ComfyUI types.
Inputs worth setting
prompt is the shot. Camera language works on Ray - "slow dolly in, overcast, 35mm" lands differently than "a nice video."
reference is the odd one out and it's marked required. Its tooltip reads "public URLs, data URIs, or asset ids" in the plural, so the field accepts a list - which makes it a style/character reference slot rather than a single start frame. If you don't have one, you'll need to supply something anyway; a still you like the look of is the pragmatic answer.
resolution sits at 540p by default. duration is a picker defaulting to 5.
Watch out for size: despite the name, its tooltip is "aspect ratio of the generated video," defaulting to 16:9. On plenty of other nodes in this pack size means pixel dimensions like 1280*720. Here it's the frame shape. Don't type pixels into it.
generation_id and request_scope round it out - keep the first fixed to resume the same paid job, increment it for a new one.
Outputs
video (a VIDEO list - downstream nodes map over it), files (the originals, via PROTOFACE_FILE, for Protoface Save File), and run id, which is your support ticket and your Resume Run handle. If a clip comes back and you want a second take on the same prompt with a slightly different feel, change the prompt: that's a new request either way, and pretending otherwise by bumping generation_id on identical inputs just buys you the same clip twice.
Install
ComfyUI 0.41.0+, Python 3.10+, no model files. Manager → search Protoface → install protoface-nodes, or:
cd ComfyUI/custom_nodes
git clone --branch v0.1.0 --depth 1 https://github.com/protoface-ai/protoface-comfyui.git protoface
python -m pip install -r protoface/requirements.txt
Deps are httpx, jsonschema, Pillow, av>=14. Then hit the Protoface button bottom-right and paste your key - it's held in server memory only, so it vanishes on restart. Headless: export PROTOFACE_API_KEY_FILE=/path/to/key.
Where people get bitten
Node missing from the search box means one of three things: an old ComfyUI, a duplicate install under a second folder name, or a failed import in the startup log. The pack's own docs list that exact trio, and the duplicate-copy case is the one nobody believes applies to them.
Then the paid-job traps. A timeout leaves a recoverable job - requeue with the same input, or Resume Run, but don't increment generation_id. Deleting PROTOFACE_STATE_DIR "to clean things up" throws away the dedup record and is how a stuck run becomes two charges. And if you run a shared ComfyUI box, know that anyone who can queue a workflow can spend your key; separate accounts want separate server instances.
Inputs (7)
| Name | Type | Default | Description |
|---|---|---|---|
| prompt | STRING | Text prompt describing the video to generate. | |
| reference | COMBO | Public URLs, data URIs, or asset ids. | |
| resolution | COMBO | 540p | Output video resolution. |
| duration | COMBO | 5 | Output video duration. |
| size | COMBO | 16:9 | Aspect ratio of the generated video. |
| generation_id | INT | 00–9007199254740991 | Keep fixed to reuse/resume this paid job. Increment for a fresh paid generation; independent of the model seed. |
| request_scope | STRING | Automatically assigned per node. Headless clients must supply a stable unique workflow/node ID. This is not a secret. |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| video | VIDEO | — |
| files | PROTOFACE_FILE | — |
| run id | STRING | — |