sdxl / comfy / createVariant
CreateVariant at 1024px, image in and variant out
- model
- image
- vae_model
- loras
- control_nets
- api_config
- images
- errors
- workflow_id
- raw_json
This is the img2img node of the SDXL pair, and it's where the "variant" naming finally makes sense. sdxl / comfy / createVariant takes an image, takes your prompt, and produces a variant of that image - the same hosted-pipeline pattern as the SDXL createImage node, but with the one thing that makes it img2img: a required image input and a denoise_strength slider at 0.75. Wire a LoadImage into the image socket, describe the change, and the orchestration job handles the encode, denoise, and decode on Civitai's fleet. Billed in Buzz, results returned as a native IMAGE tensor.
If you've already read the SD1.5 createVariant article, skip ahead - this is the same design at 1024×1024 instead of 512. That resolution difference is exactly why the SDXL version is worth having: SD1.5 img2img is stuck in the low-res band, while SDXL variants keep the detail modern checkpoints actually produce. For restyling an existing render, recoloring, or "make it a version of this" workflows, this is the more useful variant node in the pack.
The inputs that matter
Required: prompt, model (CIVITAI_AIR socket → wire a Civitai Model Selector), and image (IMAGE → wire a LoadImage or any image output).
- denoise_strength (0.75) - the whole node in one slider. 0.75 restyles while keeping composition; low values give subtle variation; near 1.0 and your input becomes barely more than a color guide. The single most important thing to learn here.
- negative_prompt - still worth filling in.
- steps (30) / cfg_scale (7) - SDXL defaults, same as createImage.
- width / height - 1024×1024 default. Set these to match your input image's aspect ratio - the input gets resized to whatever you choose, and a squashed source is the most common silent quality killer.
- vae_model / loras / control_nets - CIVITAI sockets from the Selector nodes; a hosted SDXL ControlNet pass over your own image is a legitimately slick trick.
- sampler / scheduler, quantity, seed, output_format - standard.
Outputs: images (IMAGE), errors, workflow_id, raw_json.
Install and auth
The pack-wide one-time setup. ComfyUI Manager → Civitai Comfy Nodes, or:
cd ComfyUI/custom_nodes
git clone https://github.com/civitai/civitai-comfy-nodes.git
pip install -r civitai-comfy-nodes/requirements.txt
Authenticate (Civitai account with Buzz): export CIVITAI_API_TOKEN=..., a Civitai Auth node, or the sidebar sign-in.
Where people get burned
The required image socket is the thing that trips up first-time users - ComfyUI won't run the graph until it's wired, which is correct behavior, but if you came from the createImage node expecting to just type a prompt, that's the difference. Second: aspect-ratio mismatch, as mentioned. Third and most honest: you're paying per variant call for a model class you can run locally with the free ComfyUI img2img nodes. This node earns its keep when you're on a machine without SDXL-class VRAM or when you want the exact checkpoint from the Civitai browser wired in with zero file management. Otherwise the local path is free, faster, and private - and the pack itself doesn't pretend otherwise.
Inputs (19)
| 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 | |
| negative_promptopt | STRING | — | |
| 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 | 301–150 | — |
| cfg_scaleopt | FLOAT | 7.000–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 | — |