Qwen Image 3.0 Text-to-Image
Three cents, fifteen aspect ratios, no VRAM
- client
- image
This is a cloud node wearing a ComfyUI costume. You type a prompt, the node sends it to WaveSpeed's hosted qwen-image-3.0 text-to-image endpoint, and the result comes back as a normal IMAGE you can wire into anything. No checkpoint, no text encoder, no VAE, no VRAM. Your GPU only matters for whatever you do after the image arrives - upscaling, inpainting, ControlNet passes.
Reach for it when the model is the point and the hardware isn't. There is no open release of Qwen Image 3.0: Alibaba's Qwen-Image line is Apache 2.0 down to the 20B base and the Edit revisions, but 2.0 already shipped without weights and 3.0 is a hosted tier. So the choice isn't "3.0 locally or via API", it's "3.0 via API or a different model entirely". If you're running local, Z-Image and the Flux 2 family cover most of what this does on your own card. What Qwen's generation side is genuinely known for is glyph rendering - text in the image, especially Chinese, is the family's headline trick since the first release. If your prompt ends with a poster, a label, or a sign, this is the one to try first.
Cost is $0.03 per image at 1k or 2k on the standard model, $0.04/$0.075 on the Pro tier. Per image that's trivial; the meter only bites when you start a 40-variation sweep.
How it works
The node assembles a small request payload and POSTs it to /api/v3/alibaba/qwen-image-3.0/text-to-image (or the -pro path), gets a task id back, and polls the prediction result endpoint once a second until it finishes, with a 30-minute ceiling. ComfyUI's Cancel interrupts the poll loop rather than leaving the job hanging. Once the task reports done, the node downloads the returned image, decodes it, and converts it to a float tensor in (B, H, W, C) layout scaled to 0..1 - exactly what Preview Image, Save Image, and every other node expects.
Two things to internalise: it costs money per run, and your prompt leaves your machine for a third party's logs and content filter.
The inputs that matter
prompt is the only required input, multiline, and it accepts Chinese or English. WaveSpeed's own guidance is to stay at roughly 800 characters or fewer - the tooltip says it, and it's decent advice, because cramming a second paragraph of scene notes tends to make the model compromise on all of it. Describe the image; don't instruct the model.
aspect_ratio defaults to 1:1 and offers 15 fixed ratios - square, portrait, landscape, the 9:16/16:9 pair, and the very tall/short 1:3, 3:1, 9:21, 21:9. There's no auto here, because there's no reference image to follow. resolution is 1k or 2k; 2k costs the same on the standard model, so there's no reason to sit at 1k unless you're testing a composition.
model picks standard or Pro. enable_prompt_expansion hands your prompt to the model to rewrite into something longer and more detailed - genuinely useful for a four-word idea, actively annoying when you've already written the exact prompt you wanted. seed is a real generation seed sent to the API. client is optional; leave it unwired and the node pulls your WaveSpeed key from ComfyUI Settings, then a node input, then config.ini.
Output is one image. It chains into Save Image, an upscaler, or back in as the reference_images of the 3.0 Edit node.
Install
Easiest path is ComfyUI Manager: search erpk, install ERPK Custom Nodes, restart ComfyUI. Or by hand:
cd ComfyUI/custom_nodes
git clone https://github.com/eRepublik-Labs/comfyui-nodes-erpk.git erpk
cd erpk && pip install -r requirements.txt
The install is all Python packages (requests, Pillow, pydantic, urllib3, cryptography, plus the SDKs for the pack's other providers - it's a monorepo, so you get them whether you want them or not). Nothing gets downloaded into models/. Then add your WaveSpeed API key via right-click on the canvas → ERPK Settings → API Keys; keys are stored per user and never embedded in workflows, so you can share the graph without sharing the bill.
Where people get burned
Empty prompt is a hard error (Prompt is required), and that's the whole list of ways to break the node - it's a thin wrapper, so most confusion here is billing confusion, not bug confusion.
The one that actually costs you: leaving seed at -1. The node fingerprints itself as unhashable when the seed is random, so ComfyUI re-executes and re-bills on every queue, including queues where you changed nothing. Set a fixed seed and a re-queue serves the cached result for free. If you're iterating on a downstream upscale stage, that's the difference between a free evening and a small invoice.
And don't expect a local-speed loop - every queue is a network round trip. Fifty fast variations is a local model's job.
Inputs (7)
| Name | Type | Default | Description |
|---|---|---|---|
| model | COMBO | Qwen Image 3.0 | Qwen Image 3.0: $0.03 per image at 1k or 2k. Qwen Image 3.0 Pro: $0.04 at 1k, $0.075 at 2k. |
| prompt | STRING | Image description in Chinese or English. WaveSpeed recommends at most 800 characters. | |
| clientopt | WAVESPEED_AI_API_CLIENT | WaveSpeed API client (optional if API key is configured in Settings) | |
| aspect_ratioopt | COMBO | 1:1 | Output aspect ratio |
| resolutionopt | COMBO | 1k | Output resolution tier |
| enable_prompt_expansionopt | BOOLEAN | false | Let the model rewrite the prompt into a more detailed one |
| seedopt | INT | -1-1–2147483647 | Generation seed, sent to the API. A fixed seed reproduces the same result and lets ComfyUI reuse the cached output; -1 generates a new one each queue. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| image | IMAGE | — |