flux1 / comfy / createVariant
FLUX.1 variants from an existing image — img2img without the local model
- model
- image
- vae_model
- loras
- control_nets
- api_config
- images
- errors
- workflow_id
- raw_json
This is the img2img sibling in the pack's FLUX.1 family. Where createImage dreams from a prompt, createVariant takes an image you already have and re-renders it - same structure, different mood, new seed. It's the "what if this were..." node: restyle a portrait, re-pose a composition, explore a sketch.
What it is
A recipe node under Civitai/Image/flux1/comfy, sharing the ecosystem-first naming with its parent. Required inputs: prompt, model (a CIVITAI_AIR socket from a Model Selector), and image - the source. The tooltip for image says it accepts "a URL, a DataURL or a Base64 string," but on the canvas it's an IMAGE socket, so you just wire in a LoadImage or a prior generation.
The one extra knob that defines this node: denoise_strength (default 0.75, 0–1). That's how much of the source image gets replaced. High denoise (0.7+) reimagines heavily - which is the default and the point of a variant node. Low denoise (0.3 or under) barely changes anything, which is how people get burned expecting a new image and getting a smudge.
Everything else mirrors createImage: steps (20), cfg_scale (3.5), seed, quantity (1–12), width/height, sampler/scheduler, loras, vae_model, control_nets, output_format, image_metadata, and api_config. Outputs are the standard four: images, errors, workflow_id, raw_json.
How it works
Under the hood it's the same imageGen recipe with operation: createVariant in the discriminator - the job runs on Civitai's fleet, and your source image rides along in the request. Locally, nothing is downloaded; the pack just converts the input tensor, submits, polls, and converts the returned blob back into a native IMAGE in your graph.
Install & gotchas
Standard pack install: ComfyUI Manager → Civitai Comfy Nodes (publisher civitai), or comfy node registry-install civitai-comfy-nodes, or git clone + pip install -r requirements.txt. Auth via CIVITAI_API_TOKEN, OAuth, or a wired Civitai Auth node.
The three traps:
denoise_strengthis the whole game. Start at the 0.75 default, but know the range: too high and you've basically generated something unrelated to your source; too low and nothing visibly changed. Dial it like the KB's ControlNet guidance - match the dial to how much change you actually want.- Your source image is uploaded to Civitai's fleet. For anything private or licensed, that's the real cost, not the Buzz.
- Every variant is a billed call.
quantitymultiplies it. If you're doing a variant sweep - same prompt, five seeds - you're paying for five generations;raw_jsonwill show you the cost per run.
Honest take: if FLUX.1-ecosystem variants are a once-in-a-while thing and you're GPU-less, this is a clean way to do it. If you iterate on variants all day, a local img2img (or better, Flux 2's native editing) will be cheaper per iteration - this node is convenience, not economics.
Inputs (18)
| Name | Type | Default | Description |
|---|---|---|---|
| prompt | STRING | — | |
| model | CIVITAI_AIR | — | |
| image | IMAGE | Either A URL, A DataURL or a Base64 string | |
| output_formatopt | COMBO | 4 options: , jpeg, png, webP | |
| image_metadataopt | STRING | External metadata that will be stored with the image | |
| sampleropt | COMBO | 32 options: , euler, euler_ancestral, euler_cfg_pp, euler_ancestral_cfg_pp, heun, +26 | |
| scheduleropt | COMBO | 8 options: , normal, karras, exponential, sgm_uniform, simple, +2 | |
| stepsopt | INT | 201–150 | — |
| cfg_scaleopt | FLOAT | 3.500–30 | — |
| seedopt | INT | 00–4294967295 | — |
| quantityopt | INT | 11–12 | — |
| vae_modelopt | CIVITAI_AIR | — | |
| lorasopt | CIVITAI_LORAS | — | |
| control_netsopt | CIVITAI_CONTROLNETS | — | |
| widthopt | INT | 102464–2048 | — |
| heightopt | INT | 102464–2048 | — |
| denoise_strengthopt | FLOAT | 0.750–1 | — |
| api_configopt | CIVITAI_CONFIG | Optional Civitai Auth connection; defaults to CIVITAI_API_TOKEN or stored OAuth login. |
Outputs (4)
| Name | Type | Description |
|---|---|---|
| images | IMAGE | — |
| errors | STRING | — |
| workflow_id | STRING | — |
| raw_json | STRING | — |