{ "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": ["diffusers/stable-diffusion-xl-base-1.0"], "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": ["PLUS (high strength)"], "title": "IP-Adapter Loader" }, { "id": 4, "type": "IPAdapterApply", "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, "original", 0.0, 1.0, false], "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 }