Recraft V4.1 Flash
The designer's model, with brand colours in JSON
- advancedFeatures.watermark.image
- image
The niche this sits in
Recraft is the lab the community discovered by reverse-engineering a leaderboard codename ("red panda is Recraft.ai"), and it's the one that held #1 for five straight months by aiming at designers rather than hobbyists. Its signature trick is native vector output at a time when nothing else generates SVG. That's a real differentiator, and it's also why the "best image generator you never heard of" framing stuck - respected by power users, invisible to everyone else.
V4.1 Flash is the fast raster tier of that line. It's not the vector endpoint (the pack ships separate Recraft Vectorize and V4 Vector nodes if that's the job) and it doesn't claim the top quality slot - the V4.1 Pro node does. What Flash gives you is the design-first aesthetic and typography instincts in seconds, per call, on someone else's GPU.
And honesty up front: this is an API node, so the prompt leaves your machine, calls are metered, and the filter isn't yours to change. The tier structure of the pack is the nice part - Flash for exploring, Pro for the deliverable, Vectorize when you need paths.
How it works
The node posts a recraft:v4.1@flash imageInference request through the runware-sdk over REST, then downloads the returned imageURL into a torch IMAGE tensor. Dependencies are runware-sdk, pillow and soundfile; no VRAM, no checkpoint, no model file.
The key resolves from RUNWARE_API_KEY, else ComfyUI Settings, else ~/.runware/config.yaml from runware auth login. Cost and NSFW status land on the node's title bar after each run.
There's also an advanced_json field on this node - a multiline string merged straight into the request, which is the escape hatch for parameters the widget surface doesn't expose. The tooltip names the two it's meant for: settings.backgroundColor.rgb and settings.colors. That second one is the interesting one: it's how you hand the model a palette. If you're doing brand work, that's the difference between "make it look corporate" and actually hitting the hex values.
The inputs that matter
- positivePrompt - required, multiline. Short and specific beats a paragraph here; design models care about the object and the label, not the mood board.
- size - a ratio dropdown in 1K-ish buckets (
1K (1:1)through1K (16:9),1K (9:16), and friends), plusNone (model default). Concrete ratios map to real pixel pairs, so pick a format rather than a number. - advanced_json - the colour and background escape hatch described above. Wrap it as an object and it merges over the request; malformed JSON is silently ignored, so check your braces.
{ "settings": { "backgroundColor": { "rgb": [12, 12, 12] }, "colors": ["#0C0C0C", "#F5C518"] } }
- numberResults (1–20) - one
IMAGEoutput with that many frames, each a separately billed generation. - outputFormat (JPG/PNG/WEBP), outputQuality (20–99), and the
advancedFeatures.watermark.*group under a toggle that's off by default.
There's no seed input on this node, so re-running gives variations rather than a controlled re-roll. Output is a single image (IMAGE).
Installing it
ComfyUI Manager → search Runware → install → restart. Manual:
cd ComfyUI/custom_nodes
git clone https://github.com/Runware/ComfyUI-Runware
pip install -r ComfyUI-Runware/requirements.txt
Then set ComfyUI Settings → Runware API key or export RUNWARE_API_KEY; the env var wins over the UI field. Runware is top-up billing with a minimum charge and a card on file, which is the platform's most common community gripe.
Where people get burned
- Expecting SVG. This node's
outputFormatis JPG/PNG/WEBP only. For paths, use the pack's vectorize nodes, not Flash. advanced_jsondoing nothing. It's merged only if it parses as a JSON object, and it only carries what the model actually accepts -settings.backgroundColor.rgbandsettings.colorsper the tooltip. A typo fails quietly.- Tiny prompts, tiny results. Ratio-bucketed sizes default to 1K. If you need a 3000px asset, that's a Pro-tier / upscale conversation, not a Flash one.
- No seed, no exact repeat. Variations are the only lever you get.
No Runware API keyon queue, or a one-lineRunware: … [parameter 'size', code …, HTTP 400]when a value is out of range.RUNWARE_DEBUG=1before launching gives the full traceback.
Inputs (18)
| Name | Type | Default | Description |
|---|---|---|---|
| positivePrompt | STRING | Text prompt describing elements to include in the generated output. | |
| advancedFeatures.watermark.imageopt | IMAGE | — | |
| sizeopt | COMBO | 1K (1:1) | Output size. Only one of resolution or dimensions is sent. |
| numberResultsopt | INT | 11–20 | Number of results to generate. Each result uses a different seed, producing variations of the same parameters. |
| advancedFeaturesopt | BOOLEAN | false | Enable to set advancedFeatures. Off uses the model's default. |
| advancedFeatures.watermark.bgColoropt | STRING | Background color in hex format. | |
| advancedFeatures.watermark.displayPositionopt | COMBO | (default) | Watermark position. |
| advancedFeatures.watermark.fontColoropt | STRING | Text color in hex format. | |
| advancedFeatures.watermark.opacityopt | BOOLEAN | false | Enable to set advancedFeatures.watermark.opacity. Off uses the model's default. |
| advancedFeatures.watermark.opacity_valueopt | FLOAT | 0.100.1–1 | Watermark opacity. |
| advancedFeatures.watermark.textopt | STRING | Watermark text. | |
| safetyopt | BOOLEAN | false | Enable to set safety. Off uses the model's default. |
| safety.checkContentopt | BOOLEAN | false | Enable or disable content safety checking. Increases total generation time. |
| ttlopt | BOOLEAN | false | Enable to set ttl. Off uses the model's default. |
| ttl_valueopt | INT | 60 | Time-to-live (TTL) in seconds for generated content. Only applies when `outputType` is `URL`. |
| outputFormatopt | COMBO | JPG | File format for the generated image. |
| outputQualityopt | INT | 9520–99 | Compression quality of the output. Higher values preserve quality but increase file size. |
| advanced_jsonopt | STRING | Optional JSON merged into the request. For: settings.backgroundColor.rgb, settings.colors |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| image | IMAGE | — |