{
  "_comment": "SDXL inpainting: given an image + mask, regenerate the masked region. Upload both: --input-image image=./photo.png --input-image mask_image=./mask.png. White pixels in mask = regenerate; black = preserve.",
  "1": {
    "class_type": "LoadImage",
    "_meta": {"title": "Load Source"},
    "inputs": {"image": "REPLACE_WITH_UPLOADED_FILENAME.png"}
  },
  "2": {
    "class_type": "LoadImageMask",
    "_meta": {"title": "Load Mask"},
    "inputs": {"image": "REPLACE_WITH_UPLOADED_MASK.png", "channel": "red"}
  },
  "3": {
    "class_type": "KSampler",
    "_meta": {"title": "KSampler"},
    "inputs": {
      "seed": 42,
      "steps": 30,
      "cfg": 7.5,
      "sampler_name": "dpmpp_2m",
      "scheduler": "karras",
      "denoise": 1.0,
      "model": ["4", 0],
      "positive": ["6", 0],
      "negative": ["7", 0],
      "latent_image": ["12", 0]
    }
  },
  "4": {
    "class_type": "CheckpointLoaderSimple",
    "_meta": {"title": "Checkpoint"},
    "inputs": {"ckpt_name": "sd_xl_base_1.0.safetensors"}
  },
  "6": {
    "class_type": "CLIPTextEncode",
    "_meta": {"title": "Positive Prompt"},
    "inputs": {"text": "fill with blooming flowers, photorealistic", "clip": ["4", 1]}
  },
  "7": {
    "class_type": "CLIPTextEncode",
    "_meta": {"title": "Negative Prompt"},
    "inputs": {"text": "ugly, blurry, deformed, bad anatomy", "clip": ["4", 1]}
  },
  "8": {
    "class_type": "VAEDecode",
    "_meta": {"title": "VAE Decode"},
    "inputs": {"samples": ["3", 0], "vae": ["4", 2]}
  },
  "9": {
    "class_type": "SaveImage",
    "_meta": {"title": "Save"},
    "inputs": {"filename_prefix": "sdxl_inpaint", "images": ["8", 0]}
  },
  "12": {
    "class_type": "VAEEncodeForInpaint",
    "_meta": {"title": "VAE Encode for Inpaint"},
    "inputs": {"pixels": ["1", 0], "mask": ["2", 0], "vae": ["4", 2], "grow_mask_by": 6}
  }
}
