ComfyUI Node

Recraft V4.1 Flash

The designer's model, with brand colours in JSON

By Runware·Created 2 years ago·Updated 24 days ago· 142
Recraft V4.1 Flash
  • advancedFeatures.watermark.image
  • image
◄positivePrompt—►
◄size1K (1:1)►
◄numberResults1►
◄advancedFeaturesfalse►
◄advancedFeatures.watermark.bgColor►
◄advancedFeatures.watermark.displayPosition(default)►
◄advancedFeatures.watermark.fontColor►
◄advancedFeatures.watermark.opacityfalse►
◄advancedFeatures.watermark.opacity_value0.10►
◄advancedFeatures.watermark.text►
◄safetyfalse►
◄safety.checkContentfalse►
◄ttlfalse►
◄ttl_value60►
◄outputFormatJPG►
◄outputQuality95►
◄advanced_json►

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) through 1K (16:9), 1K (9:16), and friends), plus None (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 IMAGE output 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 outputFormat is JPG/PNG/WEBP only. For paths, use the pack's vectorize nodes, not Flash.
  • advanced_json doing nothing. It's merged only if it parses as a JSON object, and it only carries what the model actually accepts - settings.backgroundColor.rgb and settings.colors per 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 key on queue, or a one-line Runware: … [parameter 'size', code …, HTTP 400] when a value is out of range. RUNWARE_DEBUG=1 before launching gives the full traceback.
CategoryRunware/Image/recraft

Inputs (18)

NameTypeDefaultDescription
positivePromptSTRINGText prompt describing elements to include in the generated output.
advancedFeatures.watermark.imageoptIMAGE—
sizeoptCOMBO1K (1:1)Output size. Only one of resolution or dimensions is sent.
numberResultsoptINT11–20Number of results to generate. Each result uses a different seed, producing variations of the same parameters.
advancedFeaturesoptBOOLEANfalseEnable to set advancedFeatures. Off uses the model's default.
advancedFeatures.watermark.bgColoroptSTRINGBackground color in hex format.
advancedFeatures.watermark.displayPositionoptCOMBO(default)Watermark position.
advancedFeatures.watermark.fontColoroptSTRINGText color in hex format.
advancedFeatures.watermark.opacityoptBOOLEANfalseEnable to set advancedFeatures.watermark.opacity. Off uses the model's default.
advancedFeatures.watermark.opacity_valueoptFLOAT0.100.1–1Watermark opacity.
advancedFeatures.watermark.textoptSTRINGWatermark text.
safetyoptBOOLEANfalseEnable to set safety. Off uses the model's default.
safety.checkContentoptBOOLEANfalseEnable or disable content safety checking. Increases total generation time.
ttloptBOOLEANfalseEnable to set ttl. Off uses the model's default.
ttl_valueoptINT60Time-to-live (TTL) in seconds for generated content. Only applies when `outputType` is `URL`.
outputFormatoptCOMBOJPGFile format for the generated image.
outputQualityoptINT9520–99Compression quality of the output. Higher values preserve quality but increase file size.
advanced_jsonoptSTRINGOptional JSON merged into the request. For: settings.backgroundColor.rgb, settings.colors

Outputs (1)

NameTypeDescription
imageIMAGE—