Nodes/ERPK Collection/Qwen Image 3.0 Text-to-Image
ComfyUI Node

Qwen Image 3.0 Text-to-Image

Three cents, fifteen aspect ratios, no VRAM

By eRepublik-Labs·Created 12 months ago·Updated a day ago· 2
Qwen Image 3.0 Text-to-Image
  • client
  • image
◄modelQwen Image 3.0►
◄prompt►
◄aspect_ratio1:1►
◄resolution1k►
◄enable_prompt_expansionfalse►
◄seed-1►

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.

CategoryERPK/WaveSpeedAI

Inputs (7)

NameTypeDefaultDescription
modelCOMBOQwen Image 3.0Qwen Image 3.0: $0.03 per image at 1k or 2k. Qwen Image 3.0 Pro: $0.04 at 1k, $0.075 at 2k.
promptSTRINGImage description in Chinese or English. WaveSpeed recommends at most 800 characters.
clientoptWAVESPEED_AI_API_CLIENTWaveSpeed API client (optional if API key is configured in Settings)
aspect_ratiooptCOMBO1:1Output aspect ratio
resolutionoptCOMBO1kOutput resolution tier
enable_prompt_expansionoptBOOLEANfalseLet the model rewrite the prompt into a more detailed one
seedoptINT-1-1–2147483647Generation 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)

NameTypeDescription
imageIMAGE—