Skip to content

SDXL ControlNet Union · Image to Image

Integrate

Model id sdxl-controlnet-union/image-to-image
# Run the model; wait up to 20 s for the finished result in the same call
curl -X POST "https://api.doitong.com/v1/run/sdxl-controlnet-union/image-to-image?wait=20" \
  -H "Authorization: Bearer $DOITONG_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "prompt": "A red fox trots through fresh snow at sunrise, soft golden light, shallow depth of field",
    "image": "https://content.doitong.com/images/showcase/v3/gen_fox_cartoon.jpg"
  }'

# Still "queued" or "running"? Poll with the id from the response:
curl "https://api.doitong.com/v1/requests/REQUEST_ID?wait=20" \
  -H "Authorization: Bearer $DOITONG_API_KEY"

This request: ≈$0.048 48 API credits Run it on this page

Get API key
Stability AI Image Editing #diffusion#controlnet#composition

SDXL image-to-image with multi-ControlNet guidance from pose, depth, edge, normal or segmentation control images

Stability AI · Image

Your first result goes here

Build a request below and run it with your API key. Outputs are copied to our storage, kept forever or 7 days for free.

Build a request

Controls are generated from the model schema. The code and the price update as you change them.

•required

Describe the image you want generated, using as much detail as possible to get the best results.

•required image_url
Drop a file, or

Starting image for generation, supplied by URL.

image_size

Output dimensions, determined automatically from the control image when no size is supplied.

num_images default 1

Image count requested for generation.

Advanced negative_prompt · openpose_image_url · depth_image_url · teed_image_url · canny_image_url · normal_image_url · segmentation_image_url · safety_checker_version · format · request_id · controlnet_conditioning_scale · num_inference_steps · guidance_scale · strength · seed · enable_safety_checker · expand_prompt · preserve_aspect_ratio · crop_output · openpose_preprocess · depth_preprocess · teed_preprocess · canny_preprocess · normal_preprocess · segmentation_preprocess · loras · embeddings
default

Negative prompt specifying unwanted image details. It can exclude colors, objects, scenery, or finer features and qualities, such as a moustache, blur, or low resolution.

Drop a file, or

URL pointing to the control image.

Drop a file, or

URL pointing to the control image.

Drop a file, or

URL pointing to the control image.

Drop a file, or

URL pointing to the control image.

Drop a file, or

URL pointing to the control image.

Drop a file, or

URL pointing to the control image.

safety_checker_version default v1

Choose between a custom ViT safety checker (`v2`) and the CompVis checker (`v1`, the default).

format default jpeg

File format for the resulting image.

default

Request identifier for correlating a response with the request that produced it.

default 0.5

Strength of conditioning applied by ControlNet.

default 35

Count of inference steps to run.

default 7.5

Prompt-adherence strength for image selection, expressed as CFG (Classifier Free Guidance).

default 0.95

Degree of resemblance between the generated image and the initial image.

Seed for reproducing images in Stable Diffusion. An image can be reproduced exactly on every run by keeping the model version, prompt, and seed unchanged.

default []

LoRA weights selected for use, provided as a list.

default []

Embeddings selected for use, provided as a list.

POST /run/sdxl-controlnet-union/image-to-image?wait=20 quote → $0.048
# Run the model; wait up to 20 s for the finished result in the same call
curl -X POST "https://api.doitong.com/v1/run/sdxl-controlnet-union/image-to-image?wait=20" \
  -H "Authorization: Bearer $DOITONG_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "prompt": "A red fox trots through fresh snow at sunrise, soft golden light, shallow depth of field",
    "image": "https://content.doitong.com/images/showcase/v3/gen_fox_cartoon.jpg"
  }'

# Still "queued" or "running"? Poll with the id from the response:
curl "https://api.doitong.com/v1/requests/REQUEST_ID?wait=20" \
  -H "Authorization: Bearer $DOITONG_API_KEY"

Run this request

Your key stays in this browser: it is sent only to the Doitong API and saved (localStorage) only if you tick Remember. Get an API key

About SDXL ControlNet Union · Image to Image

Transforms a starting image using an SDXL base guided by a prompt and optional control images for openpose, depth, teed, canny, normal and segmentation. Each control input has its own preprocess toggle. `strength` runs 0.05 to 1, `num_inference_steps` 1 to 70, and up to 8 images can be returned per call. LoRAs and embeddings can be supplied, and output is jpeg or png.

Parameters

Send either the canonical name or the native name, not both. Canonical names

NameType DefaultAllowed Description
promptrequired
Typestring
Describe the image you want generated, using as much detail as possible to get the best results.
controlnet_conditioning_scaleoptional
Typenumber
Default0.5
0 – 1
Strength of conditioning applied by ControlNet.
image_urlrequired image
Typeurl · image
Starting image for generation, supplied by URL.
negative_promptoptional
Typestring
Default
Negative prompt specifying unwanted image details. It can exclude colors, objects, scenery, or finer features and qualities, such as a moustache, blur, or low resolution.
image_sizeoptional
Typeobject
square_hdsquareportrait_4_3portrait_16_9landscape_4_3landscape_16_9
Output dimensions, determined automatically from the control image when no size is supplied.
num_inference_stepsoptional
Typeinteger
Default35
1 – 70
Count of inference steps to run.
guidance_scaleoptional
Typenumber
Default7.5
0 – 20
Prompt-adherence strength for image selection, expressed as CFG (Classifier Free Guidance).
strengthoptional
Typenumber
Default0.95
0.05 – 1
Degree of resemblance between the generated image and the initial image.
seedoptional
Typeinteger | null
Seed for reproducing images in Stable Diffusion. An image can be reproduced exactly on every run by keeping the model version, prompt, and seed unchanged.
num_imagesoptional num_outputs
Typeinteger
Default1
1 – 8
Image count requested for generation.
lorasoptional
Typeobject[]
Default[]
LoRA weights selected for use, provided as a list.
loras[].forceoptional
Typeboolean
Defaultfalse
Whether embedding use is mandatory: true makes it compulsory.
loras[].pathrequired
Typestring
LoRA weight source, supplied as an HF model identifier resolving to safetensors weights or as a safetensors file located by URL or path.
loras[].scaleoptional
Typenumber
Default1
0 – 1
Multiplier applied to the LoRA weight before it is merged into the base model.
embeddingsoptional
Typeobject[]
Default[]
Embeddings selected for use, provided as a list.
embeddings[].pathrequired
Typestring
Embedding weights specified by URL or file path.
embeddings[].tokensoptional
Typestring[]
Embedding token list, with automatic naming available when omitted: each vector in the embedding file receives a token from the sequence <s0>, <s1>, ... .
enable_safety_checkeroptional
Typeboolean
Defaulttrue
Safety checker activation; true enables checking.
safety_checker_versionoptional
Typeenum
Defaultv1
v1v2
Choose between a custom ViT safety checker (`v2`) and the CompVis checker (`v1`, the default).
expand_promptoptional
Typeboolean
Defaultfalse
Prompt expansion with additional prompts, enabled when true.
formatoptional
Typeenum
Defaultjpeg
jpegpng
File format for the resulting image.
request_idoptional
Typestring
Default
Request identifier for correlating a response with the request that produced it.
preserve_aspect_ratiooptional
Typeboolean
Defaultfalse
Set to true to retain the generated image's aspect ratio even when its size exceeds the limit. To obtain the correct proportions through cropping after generation, set crop_output to True. Width or height values not divisible by 32 are still rounded to the closest multiple of 32, and this resizing does not retain the aspect ratio by default.
crop_outputoptional
Typeboolean
Defaultfalse
Crop the generated output to the correct aspect ratio when true.
openpose_image_urloptional
Typeurl · image
URL pointing to the control image.
openpose_preprocessoptional
Typeboolean
Defaulttrue
Controls preprocessing of the openpose image.
depth_image_urloptional
Typeurl · image
URL pointing to the control image.
depth_preprocessoptional
Typeboolean
Defaulttrue
Controls preprocessing of the depth image.
teed_image_urloptional
Typeurl · image
URL pointing to the control image.
teed_preprocessoptional
Typeboolean
Defaulttrue
Controls preprocessing of the teed image.
canny_image_urloptional
Typeurl · image
URL pointing to the control image.
canny_preprocessoptional
Typeboolean
Defaulttrue
Controls preprocessing of the canny image.
normal_image_urloptional
Typeurl · image
URL pointing to the control image.
normal_preprocessoptional
Typeboolean
Defaulttrue
Controls preprocessing of the normal image.
segmentation_image_urloptional
Typeurl · image
URL pointing to the control image.
segmentation_preprocessoptional
Typeboolean
Defaulttrue
Controls preprocessing of the segmentation image.
required Canonical name, also accepted

File parameters take a public https:// URL, a data: URI up to 10 MB, or the file_url of an upload. Files

Output

GET /requests/req_8k2m4q7x1z9c3v5b6n0p2r4t
{
  "id": "req_8k2m4q7x1z9c3v5b6n0p2r4t",
  "object": "request",
  "model": "sdxl-controlnet-union/image-to-image",
  "status": "succeeded",
  "created_at": "2026-10-20T12:00:00Z",
  "started_at": "2026-10-20T12:00:02Z",
  "completed_at": "2026-10-20T12:00:09Z",
  "queue_position": null,
  "cost": {
    "credits": 48,
    "usd": "0.048",
    "charged": 48,
    "refunded": 0
  },
  "input": {
    "image_url": "https://content.doitong.com/images/showcase/v3/gen_fox_cartoon.jpg",
    "prompt": "A red fox trots through fresh snow at sunrise, soft golden light, shallow depth of field"
  },
  "output": {
    "images": [
      {
        "url": "https://content.doitong.com/dev-api/2026/10/20/req_8k2m4q7x1z9c3v5b6n0p2r4t/0-output.jpeg",
        "width": 1024,
        "height": 768,
        "content_type": "image/jpeg"
      }
    ],
    "timings": {},
    "seed": 42,
    "has_nsfw_concepts": [
      false
    ],
    "prompt": "string"
  },
  "outputs": [
    {
      "type": "image",
      "url": "https://content.doitong.com/dev-api/2026/10/20/req_8k2m4q7x1z9c3v5b6n0p2r4t/0-output.jpeg",
      "content_type": "image/jpeg",
      "file_size": 1843200,
      "width": 1024,
      "height": 768,
      "stored": true
    }
  ],
  "error": null,
  "metrics": {
    "inference_seconds": 6.8
  },
  "urls": {
    "self": "https://api.doitong.com/v1/requests/req_8k2m4q7x1z9c3v5b6n0p2r4t",
    "cancel": "https://api.doitong.com/v1/requests/req_8k2m4q7x1z9c3v5b6n0p2r4t/cancel"
  }
}
Your files, your choiceEvery outputs[].url is a copy on our storage: kept forever (paid per GB-month) or 7 days for free, by your account setting or ?storage=.
Same shape on every modeltype, url, content_type, width, height and duration, for images, video and audio alike. output is the model’s own result object.
Fields of output
images
array of object {url, width, height, content_type}File information for the generated images.
timings
object
seed
integerImage-generation seed, including the randomly chosen value if the input omitted a seed; otherwise, it repeats the supplied value.
has_nsfw_concepts
array of booleanIndicates whether NSFW concepts appear in the generated images.
prompt
stringPrompt used during image generation.

More models: Image Editing

For AI agents: this page as Markdown is at https://doitong.com/developers/models/sdxl-controlnet-union/image-to-image.md. All models and guides: https://doitong.com/developers/llms.txt