arkennemasis fal · Qwen Image 3 Text to Image · $0.04-0.075/image
Qwen Image 3 for text that's actually readable in the picture
- images
- image_paths
- seed
- info
Qwen's whole reputation in image generation rests on one thing, and it isn't faces. It's text. qwen.md leads with it - "text rendering flagship" - and that's still the reason to pick the family over a local model that renders "CLOSED" as "CL0SED" on a shop sign. Anything with a sign, a label, a poster, a UI mock, packaging, a menu: that's the job this node is for.
ArkFal_alibaba_qwen_image_3_text_to_image generates images from a prompt at up to 2048×2048, with automatic prompt rewriting and prompt-guided resolution selection. $0.04 per image at 1K, $0.075 at 2K - so a set of six 1K options is about a quarter, which is a very different feeling from burning twenty minutes of GPU on a prompt you half-like.
Why you'd call it instead of running something local
The family's local story is "heavy, LoRA-friendly, and excellent" - Qwen-Image 2512 is a 20B model the KB quotes people calling a VRAM hog next to the speed-tuned models. This node sidesteps all of that: no download, no quantisation debate, no waiting. It's the same calculus external-api-nodes.md lays out - a paid call is the right tool when the local option is inconvenient for this job, and the wrong default when you already have the model loaded and running.
What you set
prompt- the point of the exercise. Up to 5,000 characters, Chinese or English. Long, specific prompts about the text you want in the image are what this model is unusually good at.negative_prompt- capped at 500 characters, and empty is fine. Don't lean on it; with prompt expansion on you'll get further by rewording the positive.image_size-square_hdby default, or fal's presets, orcustomplusimage_size_width/image_size_height(multiples of 16, total pixels between 512² and 2048²). "Prompt-guided resolution selection" is a real thing here: the size setting is a guide, not a hard promise.num_images- 1 to 6 per call, and the cost multiplies straight through.enable_prompt_expansion- on by default, and this is the setting people forget they have. Your prompt goes through an LLM rewriter before the image model sees it. Great for "a cool cyberpunk street", actively bad when the exact words on the sign are the entire point. Turn it off for copy-accurate text.seed--1lets the model choose; otherwise set it for reproducibility. Note that reproducibility across calls is approximate on most hosted models, andreuse_identical_runis the reliable way to get the same picture back.enable_safety_checker- on by default. Turning it off requires account authorization; unauthorized requests are checked regardless.output_format-png,jpegorwebp.
The optional row is the pack's standard fal kit: max_cost_usd (default $20 cap, checked before anything is uploaded or billed), reuse_identical_run (on - identical inputs come back free from disk), extra_json (merged into the fal request for any field the node doesn't expose) and max_concurrent (1 by default: one paid fal call at a time across the entire run).
Outputs: images (IMAGE batch), image_paths (newline-separated disk paths), seed, and info - a JSON with the request id, the estimate, the saved files and fal's full answer.
Install and configure
cd ComfyUI/custom_nodes
git clone https://github.com/Hishamahmer/comfyui-arkennemasis
Restart ComfyUI, or install via ComfyUI Manager by searching arkennemasis. Then put your fal key in the .env of your ComfyUI install:
FAL_KEY=your-key-from-fal.ai/dashboard/keys
There's no key field on the node - a deliberate choice, so a key can't leak into a workflow JSON you share. Nothing downloads; the pack's only real dependency is httpx, and that's for its unrelated Codex nodes.
Where people get burned
Two things I'd flag. First, the estimate is priced at the 2K rate, so the number the node shows before running is roughly double the 1K bill. That's the safe direction to be wrong in, but it isn't the price you'll pay.
Second, the honest newness warning. I went looking for community signal on this pack on Reddit and found zero - no threads mentioning arkennemasis or the author, at all. That doesn't mean anything is wrong with it; it means nobody has vetted it in public, and a pack that holds your API key and phones home by design is the one category where you should skim the source before you trust it. Look before you run, then enjoy it - the pricing is honest, the nodes are readable, and the price badge on the title follows your settings as you change them.
Inputs (14)
| Name | Type | Default | Description |
|---|---|---|---|
| prompt | STRING | Text prompt describing the desired image. Supports Chinese and English. Max 5000 characters. | |
| negative_prompt | STRING | Content to avoid in the generated image. Max 500 characters. Empty leaves it out. | |
| image_size | COMBO | square_hd | The size of the generated image. Total number of pixels must be between 512x512 and 2048x2048. 'custom' uses the width and height below. |
| image_size_width | INT | 102416–14142 | Width in pixels when image_size is 'custom'. |
| image_size_height | INT | 102416–14142 | Height in pixels when image_size is 'custom'. |
| enable_prompt_expansion | BOOLEAN | true | Enable automatic LLM prompt rewriting for better results. |
| seed | INT | -1-1–2147483647 | Random seed for reproducibility (0-2147483647). -1 leaves it to the model. |
| enable_safety_checker | BOOLEAN | true | Enable content moderation for input and output. Disabling it requires account authorization; unauthorized requests are always checked. |
| num_images | INT | 11–6 | The number of images to generate. |
| output_format | COMBO | png | The format of the generated image. |
| max_cost_usdopt | FLOAT | 20.00–100000 | Safety cap. If the estimated cost of this run is above this many US dollars the node stops BEFORE sending anything to fal. 0 = no cap. |
| reuse_identical_runopt | BOOLEAN | true | If these exact inputs (the settings AND the same pictures/clips/audio) were already paid for and the files are still in output/fal, return them instead of paying again - also after a ComfyUI restart. Turn off for a fresh take with the same settings. |
| extra_jsonopt | STRING | Advanced: a JSON object merged into the request last, for any fal field this node has no box for. Example: {"seed": 7}. Leave empty normally. | |
| max_concurrentopt | INT | 11–32 | How many paid fal calls may run at the same time in one run, across every fal node. 1 (default) = one after another. This node starts its paid part only while fewer than this many fal calls are running. Once any fal node fails, the ones still waiting are not started, so nothing more is billed. |
Outputs (4)
| Name | Type | Description |
|---|---|---|
| images | IMAGE | — |
| image_paths | STRING | — |
| seed | INT | — |
| info | STRING | JSON: request id, cost estimate, saved files and fal's full answer. |