{
  "last_node_id": 14,
  "last_link_id": 18,
  "nodes": [
    {
      "id": 1,
      "type": "CheckpointLoaderSimple",
      "pos": [50, 100],
      "size": {"0": 350, "1": 100},
      "flags": {},
      "order": 0,
      "mode": 0,
      "properties": {"Node name for S&R": "CheckpointLoaderSimple"},
      "widgets_values": ["sd_xl_base_1.0.safetensors"],
      "title": "SDXL Base Loader",
      "outputs": [
        {"name": "MODEL", "type": "MODEL", "links": [1], "slot_index": 0},
        {"name": "CLIP", "type": "CLIP", "links": [2, 3], "slot_index": 1},
        {"name": "VAE", "type": "VAE", "links": [4], "slot_index": 2}
      ]
    },
    {
      "id": 2,
      "type": "CLIPTextEncode",
      "pos": [450, 100],
      "size": {"0": 400, "1": 200},
      "flags": {},
      "order": 1,
      "mode": 0,
      "properties": {"Node name for S&R": "CLIPTextEncode"},
      "widgets_values": ["A futuristic city with precise architecture"],
      "title": "API Positive Prompt",
      "inputs": [
        {"name": "clip", "type": "CLIP", "link": 2}
      ],
      "outputs": [
        {"name": "CONDITIONING", "type": "CONDITIONING", "links": [9], "slot_index": 0}
      ]
    },
    {
      "id": 3,
      "type": "CLIPTextEncode",
      "pos": [450, 350],
      "size": {"0": 400, "1": 200},
      "flags": {},
      "order": 2,
      "mode": 0,
      "properties": {"Node name for S&R": "CLIPTextEncode"},
      "widgets_values": ["blurry, low quality, distorted"],
      "title": "API Negative Prompt",
      "inputs": [
        {"name": "clip", "type": "CLIP", "link": 3}
      ],
      "outputs": [
        {"name": "CONDITIONING", "type": "CONDITIONING", "links": [10], "slot_index": 0}
      ]
    },
    {
      "id": 4,
      "type": "ControlNetLoader",
      "pos": [50, 300],
      "size": {"0": 350, "1": 100},
      "flags": {},
      "order": 3,
      "mode": 0,
      "properties": {"Node name for S&R": "ControlNetLoader"},
      "widgets_values": ["controlnet-depth-sdxl-1.0.safetensors"],
      "title": "Load Depth ControlNet",
      "outputs": [
        {"name": "CONTROL_NET", "type": "CONTROL_NET", "links": [7], "slot_index": 0}
      ]
    },
    {
      "id": 5,
      "type": "LoadImage",
      "pos": [50, 450],
      "size": {"0": 350, "1": 100},
      "flags": {},
      "order": 4,
      "mode": 0,
      "properties": {"Node name for S&R": "LoadImage"},
      "widgets_values": ["examples/control_depth.png"],
      "title": "API Depth Image",
      "outputs": [
        {"name": "IMAGE", "type": "IMAGE", "links": [5], "slot_index": 0},
        {"name": "MASK", "type": "MASK", "links": null, "slot_index": 1}
      ]
    },
    {
      "id": 6,
      "type": "ControlNetApplyAdvanced",
      "pos": [900, 100],
      "size": {"0": 315, "1": 186},
      "flags": {},
      "order": 5,
      "mode": 0,
      "properties": {"Node name for S&R": "ControlNetApplyAdvanced"},
      "widgets_values": [0.8, 0.0, 1.0],
      "title": "Apply Depth Control",
      "inputs": [
        {"name": "positive", "type": "CONDITIONING", "link": 9},
        {"name": "negative", "type": "CONDITIONING", "link": 10},
        {"name": "control_net", "type": "CONTROL_NET", "link": 7},
        {"name": "image", "type": "IMAGE", "link": 5}
      ],
      "outputs": [
        {"name": "positive", "type": "CONDITIONING", "links": [11], "slot_index": 0},
        {"name": "negative", "type": "CONDITIONING", "links": [12], "slot_index": 1}
      ]
    },
    {
      "id": 7,
      "type": "ControlNetLoader",
      "pos": [50, 600],
      "size": {"0": 350, "1": 100},
      "flags": {},
      "order": 6,
      "mode": 0,
      "properties": {"Node name for S&R": "ControlNetLoader"},
      "widgets_values": ["controlnet-canny-sdxl-1.0.safetensors"],
      "title": "Load Canny ControlNet",
      "outputs": [
        {"name": "CONTROL_NET", "type": "CONTROL_NET", "links": [8], "slot_index": 0}
      ]
    },
    {
      "id": 8,
      "type": "LoadImage",
      "pos": [50, 750],
      "size": {"0": 350, "1": 100},
      "flags": {},
      "order": 7,
      "mode": 0,
      "properties": {"Node name for S&R": "LoadImage"},
      "widgets_values": ["examples/control_canny.png"],
      "title": "API Canny Image",
      "outputs": [
        {"name": "IMAGE", "type": "IMAGE", "links": [6], "slot_index": 0},
        {"name": "MASK", "type": "MASK", "links": null, "slot_index": 1}
      ]
    },
    {
      "id": 9,
      "type": "ControlNetApplyAdvanced",
      "pos": [900, 400],
      "size": {"0": 315, "1": 186},
      "flags": {},
      "order": 8,
      "mode": 0,
      "properties": {"Node name for S&R": "ControlNetApplyAdvanced"},
      "widgets_values": [0.6, 0.0, 1.0],
      "title": "Apply Canny Control",
      "inputs": [
        {"name": "positive", "type": "CONDITIONING", "link": 11},
        {"name": "negative", "type": "CONDITIONING", "link": 12},
        {"name": "control_net", "type": "CONTROL_NET", "link": 8},
        {"name": "image", "type": "IMAGE", "link": 6}
      ],
      "outputs": [
        {"name": "positive", "type": "CONDITIONING", "links": [13], "slot_index": 0},
        {"name": "negative", "type": "CONDITIONING", "links": [14], "slot_index": 1}
      ]
    },
    {
      "id": 10,
      "type": "EmptyLatentImage",
      "pos": [450, 600],
      "size": {"0": 315, "1": 106},
      "flags": {},
      "order": 9,
      "mode": 0,
      "properties": {"Node name for S&R": "EmptyLatentImage"},
      "widgets_values": [1024, 1024, 1],
      "title": "API Latent Config",
      "outputs": [
        {"name": "LATENT", "type": "LATENT", "links": [15], "slot_index": 0}
      ]
    },
    {
      "id": 11,
      "type": "KSampler",
      "pos": [1270, 100],
      "size": {"0": 315, "1": 474},
      "flags": {},
      "order": 10,
      "mode": 0,
      "properties": {"Node name for S&R": "KSampler"},
      "widgets_values": [42, "fixed", 30, 7.0, "euler", "normal", 1],
      "title": "ControlNet Sampler",
      "inputs": [
        {"name": "model", "type": "MODEL", "link": 1},
        {"name": "positive", "type": "CONDITIONING", "link": 13},
        {"name": "negative", "type": "CONDITIONING", "link": 14},
        {"name": "latent_image", "type": "LATENT", "link": 15}
      ],
      "outputs": [
        {"name": "LATENT", "type": "LATENT", "links": [16], "slot_index": 0}
      ]
    },
    {
      "id": 12,
      "type": "VAEDecode",
      "pos": [1640, 100],
      "size": {"0": 210, "1": 46},
      "flags": {},
      "order": 11,
      "mode": 0,
      "properties": {"Node name for S&R": "VAEDecode"},
      "title": "VAE Decode",
      "inputs": [
        {"name": "samples", "type": "LATENT", "link": 16},
        {"name": "vae", "type": "VAE", "link": 4}
      ],
      "outputs": [
        {"name": "IMAGE", "type": "IMAGE", "links": [17, 18], "slot_index": 0}
      ]
    },
    {
      "id": 13,
      "type": "PreviewImage",
      "pos": [1900, 100],
      "size": {"0": 400, "1": 400},
      "flags": {},
      "order": 12,
      "mode": 0,
      "properties": {"Node name for S&R": "PreviewImage"},
      "title": "Preview Result",
      "inputs": [
        {"name": "images", "type": "IMAGE", "link": 17}
      ]
    },
    {
      "id": 14,
      "type": "SaveImage",
      "pos": [1900, 550],
      "size": {"0": 400, "1": 100},
      "flags": {},
      "order": 13,
      "mode": 0,
      "properties": {"Node name for S&R": "SaveImage"},
      "widgets_values": ["controlnet_output"],
      "title": "API Save Image",
      "inputs": [
        {"name": "images", "type": "IMAGE", "link": 18}
      ]
    }
  ],
  "links": [
    [1, 1, 0, 11, 0, "MODEL"],
    [2, 1, 1, 2, 0, "CLIP"],
    [3, 1, 1, 3, 0, "CLIP"],
    [4, 1, 2, 12, 1, "VAE"],
    [5, 5, 0, 6, 3, "IMAGE"],
    [6, 8, 0, 9, 3, "IMAGE"],
    [7, 4, 0, 6, 2, "CONTROL_NET"],
    [8, 7, 0, 9, 2, "CONTROL_NET"],
    [9, 2, 0, 6, 0, "CONDITIONING"],
    [10, 3, 0, 6, 1, "CONDITIONING"],
    [11, 6, 0, 9, 0, "CONDITIONING"],
    [12, 6, 1, 9, 1, "CONDITIONING"],
    [13, 9, 0, 11, 1, "CONDITIONING"],
    [14, 9, 1, 11, 2, "CONDITIONING"],
    [15, 10, 0, 11, 3, "LATENT"],
    [16, 11, 0, 12, 0, "LATENT"],
    [17, 12, 0, 13, 0, "IMAGE"],
    [18, 12, 0, 14, 0, "IMAGE"]
  ],
  "groups": [],
  "config": {},
  "extra": {
    "workflow_info": {
      "name": "ControlNet Fusion Production",
      "version": "1.0.0",
      "description": "Multi-ControlNet workflow combining depth and canny edge control for precise composition. Chain multiple control methods for maximum control over generation.",
      "category": "advanced",
      "tags": [
        "controlnet",
        "multi-control",
        "depth",
        "canny",
        "advanced",
        "production",
        "sdxl"
      ],
      "requirements": {
        "models": [
          "stable-diffusion-xl-base-1.0",
          "controlnet-depth-sdxl-1.0",
          "controlnet-canny-sdxl-1.0"
        ],
        "custom_nodes": [],
        "vram_min": "16GB",
        "vram_recommended": "24GB"
      },
      "parameters": {
        "prompt": {
          "node_id": 2,
          "widget_index": 0,
          "type": "string",
          "required": true,
          "default": "A futuristic city with precise architecture",
          "description": "Text description of desired image"
        },
        "negative_prompt": {
          "node_id": 3,
          "widget_index": 0,
          "type": "string",
          "required": false,
          "default": "blurry, low quality, distorted",
          "description": "Undesired elements to avoid"
        },
        "depth_image": {
          "node_id": 5,
          "widget_index": 0,
          "type": "string",
          "required": true,
          "default": "examples/control_depth.png",
          "description": "Depth map image for spatial control"
        },
        "canny_image": {
          "node_id": 8,
          "widget_index": 0,
          "type": "string",
          "required": true,
          "default": "examples/control_canny.png",
          "description": "Canny edge image for structure control"
        },
        "depth_strength": {
          "node_id": 6,
          "widget_index": 0,
          "type": "float",
          "required": false,
          "default": 0.8,
          "min": 0.0,
          "max": 2.0,
          "description": "Strength of depth control (0.0-2.0)"
        },
        "canny_strength": {
          "node_id": 9,
          "widget_index": 0,
          "type": "float",
          "required": false,
          "default": 0.6,
          "min": 0.0,
          "max": 2.0,
          "description": "Strength of canny edge control (0.0-2.0)"
        },
        "steps": {
          "node_id": 11,
          "widget_index": 2,
          "type": "integer",
          "required": false,
          "default": 30,
          "min": 20,
          "max": 50,
          "description": "Number of sampling steps (30-40 recommended for ControlNet)"
        },
        "seed": {
          "node_id": 11,
          "widget_index": 0,
          "type": "integer",
          "required": false,
          "default": 42,
          "min": 0,
          "max": 4294967295,
          "description": "Random seed for reproducibility"
        }
      },
      "outputs": {
        "images": {
          "node_id": 14,
          "type": "image",
          "format": "PNG",
          "count": 1,
          "resolution": "1024x1024 (configurable)"
        }
      },
      "performance": {
        "avg_generation_time": "50-70 seconds (30 steps)",
        "vram_usage": "~18-22GB (dual ControlNet + SDXL)",
        "gpu_utilization": "95-100%"
      },
      "use_cases": [
        "Architectural visualization with precise control",
        "Product renders with exact composition",
        "Character poses with depth and edge guidance",
        "Complex scene generation with multiple constraints"
      ],
      "notes": [
        "Example control images provided in examples/ directory",
        "Depth map: Grayscale image where brightness = distance from camera",
        "Canny edges: White edges on black background",
        "Adjust control strengths to balance control vs. creativity",
        "Higher steps (30-40) recommended for best quality with ControlNet"
      ]
    }
  },
  "version": 0.4
}
