PVL QwenImage txt2img (fal.ai)
Qwen-Image's 20B, rented by the click
- IMAGE
Qwen-Image is Alibaba's 20B text-to-image model, Apache 2.0 and legitimately good at rendering text in the image - the one thing diffusion models historically fumbled. The catch is the size. Twenty billion parameters is a "do you actually have a 4090 and 24GB of spare VRAM" conversation. This node skips that conversation: it calls fal.ai's hosted fal-ai/qwen-image endpoint, so the model runs on fal's servers and you just write a prompt.
If you mostly want Qwen-Image's text rendering or its strong prompt adherence for the occasional job, this is the cheap path in. You're paying per generation instead of buying the hardware.
How it works
Straightforward: the node builds an arguments dict from your inputs and POSTs it to fal's API. Width and height become the image_size, steps become num_inference_steps, CFG becomes guidance_scale. Results come back as hosted images and get converted into a normal IMAGE tensor. Nothing runs locally, so there's no model download and no VRAM involved at all.
The inputs that matter
prompt/negative_prompt- the usual pair. The negative prompt defaults to empty, and that's fine; Qwen-Image responds more to prompt quality than to a long negative list.width/height- 256 to 2048, defaulting to 1024x768. Good enough for most work; push higher if text legibility is the goal.steps(default 30) andCFG(default 2.5) - note how low the CFG default is. That's deliberate; Qwen-Image is a flow-ish model that likes low guidance. If you dial it up to the 7.5 you're used to from SD, you'll get over-saturated mush.seed- -1 means random. Set a real number for reproducibility.acceleration-none,regular, orhigh. Higher acceleration means faster and cheaper but slightly lower quality. Start atnone.loras(optional) - a JSON list like[{"path": "...", "scale": 1.0}]. Qwen-Image's LoRA ecosystem is real, and fal hosts a bunch of them; this is how you attach one.
One output: IMAGE. That's it - no mask, no text.
Installing it
Pack install, same as the rest of "ComfyUI Assistant Node":
cd ComfyUI/custom_nodes
git clone https://github.com/pvlprk/comfyui-pvl-api-nodes
Restart, then set FAL_KEY in the environment (export FAL_KEY="..." before launching ComfyUI). No model files download - that's the entire trick.
Common issues
Here's the trap this node doesn't advertise: on API error it doesn't fail - it returns a 1×64×64 black image. The code catches exceptions and hands you a dummy tensor so the graph keeps running. If your outputs suddenly look like a black dot, check the ComfyUI console - the real error is printed there. That silent black output has burned more than one person who assumed their sampler was broken.
Beyond that, the usual suspects apply: FAL_KEY not set throws loudly, batch size is capped at 4 per call, and every generation bills fal's pay-per-use. And remember the privacy note - your prompt goes to fal's servers, so don't put proprietary prompt secrets in a workflow you share.
Inputs (13)
| Name | Type | Default | Description |
|---|---|---|---|
| prompt | STRING | — | |
| width | INT | 1024256–2048 | — |
| height | INT | 768256–2048 | — |
| steps | INT | 301–100 | — |
| CFG | FLOAT | 2.51–20 | — |
| seed | INT | -1-1–4294967295 | — |
| num_images | INT | 11–4 | — |
| enable_safety_checker | BOOLEAN | true | — |
| output_format | COMBO | png | 2 options: jpeg, png |
| sync_mode | BOOLEAN | false | — |
| acceleration | COMBO | none | 3 options: none, regular, high |
| negative_prompt | STRING | — | |
| lorasopt | STRING | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| IMAGE | IMAGE | — |