{
  "last_node_id": 19,
  "last_link_id": 27,
  "nodes": [
    {
      "id": 1,
      "type": "CheckpointLoaderSimple",
      "pos": [
        50,
        100
      ],
      "widgets_values": [
        "sd_xl_base_1.0.safetensors"
      ],
      "title": "SDXL Checkpoint Loader",
      "flags": {},
      "order": 0,
      "mode": 0,
      "properties": {
        "Node name for S&R": "CheckpointLoaderSimple"
      },
      "size": {
        "0": 350,
        "1": 100
      },
      "outputs": [
        {
          "name": "MODEL",
          "type": "MODEL",
          "links": [
            1,
            3
          ],
          "slot_index": 0
        },
        {
          "name": "CLIP",
          "type": "CLIP",
          "links": [
            12,
            13
          ],
          "slot_index": 1
        },
        {
          "name": "VAE",
          "type": "VAE",
          "links": [
            19
          ],
          "slot_index": 2
        }
      ]
    },
    {
      "id": 2,
      "type": "LoadImage",
      "pos": [
        50,
        300
      ],
      "widgets_values": [
        "composition_ref1.png",
        "image"
      ],
      "title": "API Composition Ref 1",
      "flags": {},
      "order": 1,
      "mode": 0,
      "properties": {
        "Node name for S&R": "LoadImage"
      },
      "size": {
        "0": 350,
        "1": 100
      },
      "outputs": [
        {
          "name": "IMAGE",
          "type": "IMAGE",
          "links": [
            5
          ],
          "slot_index": 0
        },
        {
          "name": "MASK",
          "type": "MASK",
          "links": [],
          "slot_index": 1
        }
      ]
    },
    {
      "id": 3,
      "type": "LoadImage",
      "pos": [
        50,
        650
      ],
      "widgets_values": [
        "composition_ref2.png",
        "image"
      ],
      "title": "API Composition Ref 2",
      "flags": {},
      "order": 2,
      "mode": 0,
      "properties": {
        "Node name for S&R": "LoadImage"
      },
      "size": {
        "0": 350,
        "1": 100
      },
      "outputs": [
        {
          "name": "IMAGE",
          "type": "IMAGE",
          "links": [
            8
          ],
          "slot_index": 0
        },
        {
          "name": "MASK",
          "type": "MASK",
          "links": [],
          "slot_index": 1
        }
      ]
    },
    {
      "id": 4,
      "type": "IPAdapterUnifiedLoader",
      "pos": [
        450,
        100
      ],
      "widgets_values": [
        "VIT-G (medium strength)"
      ],
      "title": "IP-Adapter Loader 1",
      "flags": {},
      "order": 3,
      "mode": 0,
      "properties": {
        "Node name for S&R": "IPAdapterUnifiedLoader"
      },
      "size": {
        "0": 350,
        "1": 100
      },
      "inputs": [
        {
          "name": "model",
          "type": "MODEL",
          "link": 1
        }
      ],
      "outputs": [
        {
          "name": "MODEL",
          "type": "MODEL",
          "links": [
            6
          ],
          "slot_index": 0
        },
        {
          "name": "IPADAPTER",
          "type": "IPADAPTER",
          "links": [
            7
          ],
          "slot_index": 1
        }
      ]
    },
    {
      "id": 5,
      "type": "IPAdapterUnifiedLoader",
      "pos": [
        450,
        250
      ],
      "widgets_values": [
        "VIT-G (medium strength)"
      ],
      "title": "IP-Adapter Loader 2",
      "flags": {},
      "order": 4,
      "mode": 0,
      "properties": {
        "Node name for S&R": "IPAdapterUnifiedLoader"
      },
      "size": {
        "0": 350,
        "1": 100
      },
      "inputs": [
        {
          "name": "model",
          "type": "MODEL",
          "link": 3
        }
      ],
      "outputs": [
        {
          "name": "MODEL",
          "type": "MODEL",
          "links": [],
          "slot_index": 0
        },
        {
          "name": "IPADAPTER",
          "type": "IPADAPTER",
          "links": [
            10
          ],
          "slot_index": 1
        }
      ]
    },
    {
      "id": 6,
      "type": "IPAdapterAdvanced",
      "pos": [
        800,
        100
      ],
      "widgets_values": [
        0.6,
        "ease in-out",
        "average",
        0.0,
        1.0,
        "V only"
      ],
      "title": "Apply IP-Adapter 1",
      "flags": {},
      "order": 5,
      "mode": 0,
      "properties": {
        "Node name for S&R": "IPAdapterAdvanced"
      },
      "size": {
        "0": 315,
        "1": 258
      },
      "inputs": [
        {
          "name": "model",
          "type": "MODEL",
          "link": 6
        },
        {
          "name": "ipadapter",
          "type": "IPADAPTER",
          "link": 7
        },
        {
          "name": "image",
          "type": "IMAGE",
          "link": 5
        },
        {
          "name": "clip_vision",
          "type": "CLIP_VISION",
          "link": 25
        }
      ],
      "outputs": [
        {
          "name": "MODEL",
          "type": "MODEL",
          "links": [
            11
          ],
          "slot_index": 0
        }
      ]
    },
    {
      "id": 7,
      "type": "IPAdapterAdvanced",
      "pos": [
        1100,
        100
      ],
      "widgets_values": [
        0.5,
        "ease in-out",
        "average",
        0.0,
        1.0,
        "V only"
      ],
      "title": "Apply IP-Adapter 2",
      "flags": {},
      "order": 6,
      "mode": 0,
      "properties": {
        "Node name for S&R": "IPAdapterAdvanced"
      },
      "size": {
        "0": 315,
        "1": 258
      },
      "inputs": [
        {
          "name": "model",
          "type": "MODEL",
          "link": 11
        },
        {
          "name": "ipadapter",
          "type": "IPADAPTER",
          "link": 10
        },
        {
          "name": "image",
          "type": "IMAGE",
          "link": 8
        },
        {
          "name": "clip_vision",
          "type": "CLIP_VISION",
          "link": 26
        }
      ],
      "outputs": [
        {
          "name": "MODEL",
          "type": "MODEL",
          "links": [
            14
          ],
          "slot_index": 0
        }
      ]
    },
    {
      "id": 8,
      "type": "CLIPTextEncode",
      "pos": [
        450,
        500
      ],
      "widgets_values": [
        "Complex scene composition, detailed, professional"
      ],
      "title": "API Positive Prompt",
      "flags": {},
      "order": 7,
      "mode": 0,
      "properties": {
        "Node name for S&R": "CLIPTextEncode"
      },
      "size": {
        "0": 400,
        "1": 200
      },
      "inputs": [
        {
          "name": "clip",
          "type": "CLIP",
          "link": 12
        }
      ],
      "outputs": [
        {
          "name": "CONDITIONING",
          "type": "CONDITIONING",
          "links": [
            15
          ],
          "slot_index": 0
        }
      ]
    },
    {
      "id": 9,
      "type": "CLIPTextEncode",
      "pos": [
        450,
        750
      ],
      "widgets_values": [
        "blurry, low quality"
      ],
      "title": "API Negative Prompt",
      "flags": {},
      "order": 8,
      "mode": 0,
      "properties": {
        "Node name for S&R": "CLIPTextEncode"
      },
      "size": {
        "0": 400,
        "1": 200
      },
      "inputs": [
        {
          "name": "clip",
          "type": "CLIP",
          "link": 13
        }
      ],
      "outputs": [
        {
          "name": "CONDITIONING",
          "type": "CONDITIONING",
          "links": [
            16
          ],
          "slot_index": 0
        }
      ]
    },
    {
      "id": 10,
      "type": "EmptyLatentImage",
      "pos": [
        800,
        500
      ],
      "widgets_values": [
        1024,
        1024,
        1
      ],
      "title": "API Latent Config",
      "flags": {},
      "order": 9,
      "mode": 0,
      "properties": {
        "Node name for S&R": "EmptyLatentImage"
      },
      "size": {
        "0": 315,
        "1": 100
      },
      "outputs": [
        {
          "name": "LATENT",
          "type": "LATENT",
          "links": [
            17
          ],
          "slot_index": 0
        }
      ]
    },
    {
      "id": 11,
      "type": "KSampler",
      "pos": [
        1400,
        100
      ],
      "widgets_values": [
        42,
        "fixed",
        35,
        7.0,
        "dpmpp_2m",
        "karras",
        1
      ],
      "title": "Multi-Composition Sampler",
      "flags": {},
      "order": 10,
      "mode": 0,
      "properties": {
        "Node name for S&R": "KSampler"
      },
      "size": {
        "0": 315,
        "1": 474
      },
      "inputs": [
        {
          "name": "model",
          "type": "MODEL",
          "link": 14
        },
        {
          "name": "positive",
          "type": "CONDITIONING",
          "link": 15
        },
        {
          "name": "negative",
          "type": "CONDITIONING",
          "link": 16
        },
        {
          "name": "latent_image",
          "type": "LATENT",
          "link": 17
        }
      ],
      "outputs": [
        {
          "name": "LATENT",
          "type": "LATENT",
          "links": [
            18
          ],
          "slot_index": 0
        }
      ]
    },
    {
      "id": 12,
      "type": "VAEDecode",
      "pos": [
        1750,
        100
      ],
      "title": "VAE Decode",
      "flags": {},
      "order": 11,
      "mode": 0,
      "properties": {
        "Node name for S&R": "VAEDecode"
      },
      "size": {
        "0": 315,
        "1": 100
      },
      "inputs": [
        {
          "name": "samples",
          "type": "LATENT",
          "link": 18
        },
        {
          "name": "vae",
          "type": "VAE",
          "link": 19
        }
      ],
      "outputs": [
        {
          "name": "IMAGE",
          "type": "IMAGE",
          "links": [
            20,
            21
          ],
          "slot_index": 0
        }
      ]
    },
    {
      "id": 13,
      "type": "PreviewImage",
      "pos": [
        2000,
        100
      ],
      "title": "Preview Output",
      "flags": {},
      "order": 12,
      "mode": 0,
      "properties": {
        "Node name for S&R": "PreviewImage"
      },
      "size": {
        "0": 315,
        "1": 100
      },
      "inputs": [
        {
          "name": "images",
          "type": "IMAGE",
          "link": 20
        }
      ]
    },
    {
      "id": 14,
      "type": "SaveImage",
      "pos": [
        2000,
        550
      ],
      "widgets_values": [
        "ipadapter_composition_output"
      ],
      "title": "API Image Output",
      "flags": {},
      "order": 13,
      "mode": 0,
      "properties": {
        "Node name for S&R": "SaveImage"
      },
      "size": {
        "0": 315,
        "1": 100
      },
      "inputs": [
        {
          "name": "images",
          "type": "IMAGE",
          "link": 21
        }
      ]
    },
    {
      "id": 15,
      "type": "CLIPVisionLoader",
      "pos": [
        450,
        250
      ],
      "size": {
        "0": 315,
        "1": 58
      },
      "widgets_values": [
        "CLIP-ViT-bigG-14-laion2B-39B-b160k.safetensors"
      ],
      "title": "CLIP Vision Loader",
      "flags": {},
      "order": 0,
      "mode": 0,
      "properties": {
        "Node name for S&R": "CLIPVisionLoader"
      },
      "outputs": [
        {
          "name": "CLIP_VISION",
          "type": "CLIP_VISION",
          "links": [
            25,
            26
          ],
          "slot_index": 0
        }
      ]
    }
  ],
  "links": [
    [
      1,
      1,
      0,
      4,
      0,
      "MODEL"
    ],
    [
      3,
      1,
      0,
      5,
      0,
      "MODEL"
    ],
    [
      5,
      2,
      0,
      6,
      2,
      "IMAGE"
    ],
    [
      6,
      4,
      0,
      6,
      0,
      "MODEL"
    ],
    [
      7,
      4,
      1,
      6,
      1,
      "IPADAPTER"
    ],
    [
      8,
      3,
      0,
      7,
      2,
      "IMAGE"
    ],
    [
      10,
      5,
      1,
      7,
      1,
      "IPADAPTER"
    ],
    [
      11,
      6,
      0,
      7,
      0,
      "MODEL"
    ],
    [
      12,
      1,
      1,
      8,
      0,
      "CLIP"
    ],
    [
      13,
      1,
      1,
      9,
      0,
      "CLIP"
    ],
    [
      14,
      7,
      0,
      11,
      0,
      "MODEL"
    ],
    [
      15,
      8,
      0,
      11,
      1,
      "CONDITIONING"
    ],
    [
      16,
      9,
      0,
      11,
      2,
      "CONDITIONING"
    ],
    [
      17,
      10,
      0,
      11,
      3,
      "LATENT"
    ],
    [
      18,
      11,
      0,
      12,
      0,
      "LATENT"
    ],
    [
      19,
      1,
      2,
      12,
      1,
      "VAE"
    ],
    [
      20,
      12,
      0,
      13,
      0,
      "IMAGE"
    ],
    [
      21,
      12,
      0,
      14,
      0,
      "IMAGE"
    ],
    [
      25,
      15,
      0,
      6,
      3,
      "CLIP_VISION"
    ],
    [
      26,
      15,
      0,
      7,
      3,
      "CLIP_VISION"
    ]
  ],
  "extra": {
    "workflow_info": {
      "name": "IP-Adapter Multi-Composition Image-to-Image Production",
      "version": "1.0.0",
      "description": "Complex scene composition using multiple IP-Adapter references. Combine visual elements from multiple source images.",
      "category": "image-to-image",
      "tags": [
        "ipadapter",
        "composition",
        "multi-reference",
        "i2i",
        "production"
      ],
      "requirements": {
        "models": [
          "stable-diffusion-xl-base-1.0",
          "ip-adapter-plus"
        ],
        "custom_nodes": [
          "ComfyUI_IPAdapter_plus"
        ],
        "vram_min": "18GB"
      },
      "parameters": {
        "ref_image_1": {
          "node_id": 2,
          "type": "image",
          "required": true,
          "description": "First composition reference"
        },
        "ref_image_2": {
          "node_id": 3,
          "type": "image",
          "required": true,
          "description": "Second composition reference"
        },
        "weight_1": {
          "node_id": 6,
          "type": "float",
          "default": 0.6,
          "description": "Weight for first reference"
        },
        "weight_2": {
          "node_id": 7,
          "type": "float",
          "default": 0.5,
          "description": "Weight for second reference"
        }
      },
      "use_cases": [
        "Multi-source scene composition",
        "Blend multiple visual concepts",
        "Complex artistic compositions",
        "Style mixing"
      ]
    }
  },
  "version": 0.4
}