{
  "last_node_id": 15,
  "last_link_id": 20,
  "nodes": [
    {
      "id": 1,
      "type": "CheckpointLoaderSimple",
      "pos": [
        50,
        100
      ],
      "size": {
        "0": 350,
        "1": 100
      },
      "flags": {},
      "order": 0,
      "mode": 0,
      "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
        }
      ],
      "properties": {
        "Node name for S&R": "CheckpointLoaderSimple"
      },
      "widgets_values": [
        "sd_xl_base_1.0.safetensors"
      ],
      "title": "SDXL Base Checkpoint Loader"
    },
    {
      "id": 2,
      "type": "LoadImage",
      "pos": [
        50,
        300
      ],
      "size": [
        315,
        314
      ],
      "flags": {},
      "order": 1,
      "mode": 0,
      "outputs": [
        {
          "name": "IMAGE",
          "type": "IMAGE",
          "links": [
            11
          ],
          "shape": 3
        },
        {
          "name": "MASK",
          "type": "MASK",
          "links": null,
          "shape": 3
        }
      ],
      "properties": {
        "Node name for S&R": "LoadImage"
      },
      "widgets_values": [
        "style_reference.png",
        "image"
      ],
      "title": "API Style Reference Input"
    },
    {
      "id": 3,
      "type": "IPAdapterUnifiedLoader",
      "pos": [
        450,
        100
      ],
      "size": {
        "0": 315,
        "1": 78
      },
      "flags": {},
      "order": 2,
      "mode": 0,
      "inputs": [
        {
          "name": "model",
          "type": "MODEL",
          "link": 1
        },
        {
          "name": "ipadapter",
          "type": "IPADAPTER",
          "link": null
        }
      ],
      "outputs": [
        {
          "name": "model",
          "type": "MODEL",
          "links": [
            12
          ],
          "shape": 3,
          "slot_index": 0
        },
        {
          "name": "ipadapter",
          "type": "IPADAPTER",
          "links": [
            13
          ],
          "shape": 3,
          "slot_index": 1
        }
      ],
      "properties": {
        "Node name for S&R": "IPAdapterUnifiedLoader"
      },
      "widgets_values": [
        "VIT-G (medium strength)"
      ],
      "title": "IP-Adapter Loader"
    },
    {
      "id": 4,
      "type": "IPAdapter",
      "pos": [
        800,
        100
      ],
      "size": {
        "0": 315,
        "1": 258
      },
      "flags": {},
      "order": 3,
      "mode": 0,
      "inputs": [
        {
          "name": "ipadapter",
          "type": "IPADAPTER",
          "link": 13
        },
        {
          "name": "clip_vision",
          "type": "CLIP_VISION",
          "link": null
        },
        {
          "name": "image",
          "type": "IMAGE",
          "link": 11
        },
        {
          "name": "model",
          "type": "MODEL",
          "link": 12
        }
      ],
      "outputs": [
        {
          "name": "MODEL",
          "type": "MODEL",
          "links": [
            14
          ],
          "shape": 3,
          "slot_index": 0
        }
      ],
      "properties": {
        "Node name for S&R": "IPAdapterApply"
      },
      "widgets_values": [
        0.75,
        0.0,
        1.0,
        "style transfer"
      ],
      "title": "Apply IP-Adapter Style"
    },
    {
      "id": 5,
      "type": "CLIPTextEncode",
      "pos": [
        450,
        400
      ],
      "size": {
        "0": 400,
        "1": 200
      },
      "flags": {},
      "order": 4,
      "mode": 0,
      "inputs": [
        {
          "name": "clip",
          "type": "CLIP",
          "link": 2
        }
      ],
      "outputs": [
        {
          "name": "CONDITIONING",
          "type": "CONDITIONING",
          "links": [
            5
          ],
          "slot_index": 0
        }
      ],
      "properties": {
        "Node name for S&R": "CLIPTextEncode"
      },
      "widgets_values": [
        "A portrait of a person, highly detailed, professional photography"
      ],
      "title": "API Positive Prompt"
    },
    {
      "id": 6,
      "type": "CLIPTextEncode",
      "pos": [
        450,
        650
      ],
      "size": {
        "0": 400,
        "1": 200
      },
      "flags": {},
      "order": 5,
      "mode": 0,
      "inputs": [
        {
          "name": "clip",
          "type": "CLIP",
          "link": 3
        }
      ],
      "outputs": [
        {
          "name": "CONDITIONING",
          "type": "CONDITIONING",
          "links": [
            6
          ],
          "slot_index": 0
        }
      ],
      "properties": {
        "Node name for S&R": "CLIPTextEncode"
      },
      "widgets_values": [
        "blurry, low quality, distorted, deformed"
      ],
      "title": "API Negative Prompt"
    },
    {
      "id": 7,
      "type": "EmptyLatentImage",
      "pos": [
        800,
        450
      ],
      "size": {
        "0": 315,
        "1": 106
      },
      "flags": {},
      "order": 6,
      "mode": 0,
      "outputs": [
        {
          "name": "LATENT",
          "type": "LATENT",
          "links": [
            7
          ],
          "slot_index": 0
        }
      ],
      "properties": {
        "Node name for S&R": "EmptyLatentImage"
      },
      "widgets_values": [
        1024,
        1024,
        1
      ],
      "title": "API Latent Image Config"
    },
    {
      "id": 8,
      "type": "KSampler",
      "pos": [
        1170,
        100
      ],
      "size": {
        "0": 315,
        "1": 474
      },
      "flags": {},
      "order": 7,
      "mode": 0,
      "inputs": [
        {
          "name": "model",
          "type": "MODEL",
          "link": 14
        },
        {
          "name": "positive",
          "type": "CONDITIONING",
          "link": 5
        },
        {
          "name": "negative",
          "type": "CONDITIONING",
          "link": 6
        },
        {
          "name": "latent_image",
          "type": "LATENT",
          "link": 7
        }
      ],
      "outputs": [
        {
          "name": "LATENT",
          "type": "LATENT",
          "links": [
            8
          ],
          "slot_index": 0
        }
      ],
      "properties": {
        "Node name for S&R": "KSampler"
      },
      "widgets_values": [
        42,
        "fixed",
        30,
        6.5,
        "dpmpp_2m",
        "karras",
        1
      ],
      "title": "Sampler with Style"
    },
    {
      "id": 9,
      "type": "VAEDecode",
      "pos": [
        1540,
        100
      ],
      "size": {
        "0": 210,
        "1": 46
      },
      "flags": {},
      "order": 8,
      "mode": 0,
      "inputs": [
        {
          "name": "samples",
          "type": "LATENT",
          "link": 8
        },
        {
          "name": "vae",
          "type": "VAE",
          "link": 4
        }
      ],
      "outputs": [
        {
          "name": "IMAGE",
          "type": "IMAGE",
          "links": [
            9,
            10
          ],
          "slot_index": 0
        }
      ],
      "properties": {
        "Node name for S&R": "VAEDecode"
      },
      "title": "VAE Decode"
    },
    {
      "id": 10,
      "type": "PreviewImage",
      "pos": [
        1800,
        100
      ],
      "size": {
        "0": 400,
        "1": 400
      },
      "flags": {},
      "order": 9,
      "mode": 0,
      "inputs": [
        {
          "name": "images",
          "type": "IMAGE",
          "link": 9
        }
      ],
      "properties": {
        "Node name for S&R": "PreviewImage"
      },
      "title": "Preview Output"
    },
    {
      "id": 11,
      "type": "SaveImage",
      "pos": [
        1800,
        550
      ],
      "size": {
        "0": 400,
        "1": 100
      },
      "flags": {},
      "order": 10,
      "mode": 0,
      "inputs": [
        {
          "name": "images",
          "type": "IMAGE",
          "link": 10
        }
      ],
      "properties": {
        "Node name for S&R": "SaveImage"
      },
      "widgets_values": [
        "ipadapter_style_output"
      ],
      "title": "API Image Output"
    }
  ],
  "links": [
    [
      1,
      1,
      0,
      3,
      0,
      "MODEL"
    ],
    [
      2,
      1,
      1,
      5,
      0,
      "CLIP"
    ],
    [
      3,
      1,
      1,
      6,
      0,
      "CLIP"
    ],
    [
      4,
      1,
      2,
      9,
      1,
      "VAE"
    ],
    [
      5,
      5,
      0,
      8,
      1,
      "CONDITIONING"
    ],
    [
      6,
      6,
      0,
      8,
      2,
      "CONDITIONING"
    ],
    [
      7,
      7,
      0,
      8,
      3,
      "LATENT"
    ],
    [
      8,
      8,
      0,
      9,
      0,
      "LATENT"
    ],
    [
      9,
      9,
      0,
      10,
      0,
      "IMAGE"
    ],
    [
      10,
      9,
      0,
      11,
      0,
      "IMAGE"
    ],
    [
      11,
      2,
      0,
      4,
      2,
      "IMAGE"
    ],
    [
      12,
      3,
      0,
      4,
      3,
      "MODEL"
    ],
    [
      13,
      3,
      1,
      4,
      0,
      "IPADAPTER"
    ],
    [
      14,
      4,
      0,
      8,
      0,
      "MODEL"
    ]
  ],
  "groups": [],
  "config": {},
  "extra": {
    "workflow_info": {
      "name": "IP-Adapter Style Transfer Image-to-Image Production",
      "version": "1.0.0",
      "author": "RunPod AI Model Orchestrator",
      "description": "Style transfer using IP-Adapter. Apply the visual style from a reference image to generate new images matching that aesthetic.",
      "category": "image-to-image",
      "tags": [
        "ipadapter",
        "style-transfer",
        "i2i",
        "production",
        "sdxl"
      ],
      "requirements": {
        "models": [
          "stable-diffusion-xl-base-1.0",
          "ip-adapter-plus"
        ],
        "custom_nodes": [
          "ComfyUI_IPAdapter_plus"
        ],
        "vram_min": "16GB",
        "vram_recommended": "24GB"
      },
      "parameters": {
        "style_image": {
          "node_id": 2,
          "widget_index": 0,
          "type": "image",
          "required": true,
          "description": "Reference image for style extraction"
        },
        "prompt": {
          "node_id": 5,
          "widget_index": 0,
          "type": "string",
          "required": true,
          "default": "A portrait of a person",
          "description": "Text description of desired content"
        },
        "negative_prompt": {
          "node_id": 6,
          "widget_index": 0,
          "type": "string",
          "required": false,
          "default": "blurry, low quality",
          "description": "Undesired elements to avoid"
        },
        "style_weight": {
          "node_id": 4,
          "widget_index": 0,
          "type": "float",
          "required": false,
          "default": 0.75,
          "min": 0.0,
          "max": 1.0,
          "description": "Strength of style application (0.75 recommended)"
        },
        "width": {
          "node_id": 7,
          "widget_index": 0,
          "type": "integer",
          "required": false,
          "default": 1024,
          "min": 512,
          "max": 2048,
          "description": "Output image width"
        },
        "height": {
          "node_id": 7,
          "widget_index": 1,
          "type": "integer",
          "required": false,
          "default": 1024,
          "min": 512,
          "max": 2048,
          "description": "Output image height"
        },
        "seed": {
          "node_id": 8,
          "widget_index": 0,
          "type": "integer",
          "required": false,
          "default": 42,
          "min": 0,
          "max": 4294967295,
          "description": "Random seed for reproducibility"
        },
        "steps": {
          "node_id": 8,
          "widget_index": 2,
          "type": "integer",
          "required": false,
          "default": 30,
          "min": 20,
          "max": 50,
          "description": "Number of sampling steps"
        },
        "cfg": {
          "node_id": 8,
          "widget_index": 3,
          "type": "float",
          "required": false,
          "default": 6.5,
          "min": 1.0,
          "max": 15.0,
          "description": "Classifier-free guidance scale"
        }
      },
      "outputs": {
        "image": {
          "node_id": 11,
          "type": "image",
          "format": "PNG",
          "resolution": "1024x1024 (configurable)"
        }
      },
      "performance": {
        "avg_generation_time": "30-40 seconds",
        "vram_usage": "~16-18GB",
        "gpu_utilization": "95-100%"
      },
      "use_cases": [
        "Apply artistic styles to new subjects",
        "Match aesthetic of reference images",
        "Consistent style across generated images",
        "Photography style transfer"
      ]
    }
  },
  "version": 0.4
}