Grok Imagine Image Quality
The least-censored image model you can wire straight into ComfyUI
- referenceImages
- advancedFeatures.watermark.image
- image
Grok Imagine is xAI's image model - the one that lives inside Grok on X - and this node exposes it as a plain ComfyUI node. The name on the tin says "Image Quality" because that's the catalog's label for the quality preset, but don't read too much into it: you get one prompt box, a bunch of standard generation widgets, and an IMAGE out the back. The reason you'd reach for this one over the dozen other image nodes in the Runware pack is that xAI's model is famously the least restrictive mainstream image generator. The community's shorthand for it has been "Spicy Mode": where other closed APIs hard-stop, Grok keeps going. It's also suspected of being built on Flux-derived weights, so its aesthetic sits closer to what ComfyUI users are used to than something like a typical OpenAI output.
The practical frame matters here: this is a closed, cloud-only model. There are no weights to download, no license to squint at, and no local VRAM involved - it runs on Runware's infrastructure and the node returns a native IMAGE tensor. If you've been bouncing off Grok's closed website or X integration and want it inside a real workflow, this is the access path.
How it works
Like every node in this pack, it's a thin generated class that sends an imageInference request to the Runware API and turns the returned image URL back into a ComfyUI IMAGE tensor. The interesting part is what it doesn't have: no width/height widgets on this node, no seed, no scheduler. Instead there's a size dropdown - 29 presets like 1K (16:9), 2K (from input), portrait and square variants - which is the model's own way of expressing output dimensions. "Only one of resolution or dimensions is sent," per the tooltip, and the size dropdown owns the whole thing. If you want a specific pixel size, that's not the knob here.
Inputs worth touching
positivePrompt(required) - the only thing you must fill in. Describe what you want; Grok is a capable prompt-follower.size- the output-size dropdown described above.None (model default)exists if you'd rather let it decide.referenceImages- anIMAGEinput, so you can wire an existing image in for editing/reference. This is where Grok Imagine gets interesting: it does image editing well, not just text-to-image.numberResults(1–20) - variations, each with a different seed. 20 is a lot of API calls; start at 2–4.safety/safety.checkContent- both off by default, leaving the model's own moderation in charge. If you want Runware to run its own content check and flag results, toggle these on. For a model whose appeal is (ahem) latitude, this is your call.outputFormatandoutputQuality- JPG/PNG/WEBP and a compression slider. PNG if you'll be compositing; JPG if it's going to Discord.
The single output is image - wire it to Preview Image or Save Image.
Installing
ComfyUI Manager → search Runware → install → restart, or manually:
cd ComfyUI/custom_nodes
git clone https://github.com/Runware/ComfyUI-Runware
pip install -r ComfyUI-Runware/requirements.txt
Then set your API key via ComfyUI Settings → Runware API key, the RUNWARE_API_KEY env var, or runware auth login. No models to download - everything runs in the cloud.
The honest warnings
First, moderation is a moving target. xAI has loosened and occasionally re-tightened things, and a closed API can change its filter overnight - that's the standing argument against closed models, and it applies here fully. Second, you're paying per generation; the node's title bar shows the cost of each run, which is a useful reality check. And third, because this is an API model, you won't get deterministic reproducibility the way you would with a local checkpoint - treat each run as a fresh draw rather than something to tweak by a seed. For "give me images the other services refuse," it's the node to have around.
Inputs (18)
| Name | Type | Default | Description |
|---|---|---|---|
| positivePrompt | STRING | Text prompt describing elements to include in the generated output. | |
| referenceImagesopt | IMAGE | — | |
| advancedFeatures.watermark.imageopt | IMAGE | — | |
| sizeopt | COMBO | 1K (16:9) | 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. |
| 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. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| image | IMAGE | — |