# Python 3.10+: pip install comfy-sdk==0.4.0
import os
from comfy_sdk import Comfy
api_key = os.environ.get("COMFY_API_KEY", "").strip()
if not api_key: raise RuntimeError("Set COMFY_API_KEY")
os.environ.setdefault("COMFY_BASE_URL", "https://cloud.comfy.org")
client = Comfy(api_key=api_key)
workflow = client.workflows.from_json({
"5": {
"class_type": "SaveImage",
"inputs": {
"filename_prefix": "ComfyUI-light_migration",
"images": [
"471:118",
0
]
},
"_meta": {
"title": "Save Image"
}
},
"6": {
"class_type": "LoadImage",
"inputs": {
"image": "a7e2d3406be6190f8099c606d3936d61bdc06010c14f634c236cebb7809fd28c.png"
},
"_meta": {
"title": "Load Lighting Image"
}
},
"7": {
"class_type": "LoadImage",
"inputs": {
"image": "b4ca9aac7cc22d41886f3257b3efe2394ff31af127ba22173d0615a845b91e88.PNG"
},
"_meta": {
"title": "Load Subject Image"
}
},
"471:110": {
"class_type": "CFGNorm",
"inputs": {
"model": [
"471:115",
0
],
"pre_cfg": False,
"strength": 1
},
"_meta": {
"title": "CFGNorm"
}
},
"471:111": {
"class_type": "VAELoader",
"inputs": {
"vae_name": "qwen_image_vae.safetensors"
},
"_meta": {
"title": "Load VAE"
}
},
"471:112": {
"class_type": "CLIPLoader",
"inputs": {
"clip_name": "qwen_2.5_vl_7b_fp8_scaled.safetensors",
"device": "default",
"type": "qwen_image"
},
"_meta": {
"title": "Load CLIP"
}
},
"471:113": {
"class_type": "UNETLoader",
"inputs": {
"unet_name": "qwen_image_edit_2509_fp8_e4m3fn.safetensors",
"weight_dtype": "default"
},
"_meta": {
"title": "Load Diffusion Model"
}
},
"471:114": {
"class_type": "TextEncodeQwenImageEditPlus",
"inputs": {
"clip": [
"471:112",
0
],
"image1": [
"471:120",
0
],
"image3": [
"6",
0
],
"prompt": "",
"vae": [
"471:111",
0
]
},
"_meta": {
"title": "Text Encode Qwen Image Edit Plus"
}
},
"471:115": {
"class_type": "ModelSamplingAuraFlow",
"inputs": {
"model": [
"471:440",
0
],
"sampling": "flow",
"shift": 3.1
},
"_meta": {
"title": "ModelSamplingAuraFlow"
}
},
"471:116": {
"class_type": "TextEncodeQwenImageEditPlus",
"inputs": {
"clip": [
"471:112",
0
],
"image1": [
"471:120",
0
],
"image3": [
"6",
0
],
"prompt": "参考色调,移除图1原有的光照并参考图2的光照和色调对图1重新照明, maintain canny edge of interior glass orb.",
"vae": [
"471:111",
0
]
},
"_meta": {
"title": "Text Encode Qwen Image Edit Plus"
}
},
"471:117": {
"class_type": "VAEEncode",
"inputs": {
"pixels": [
"471:120",
0
],
"vae": [
"471:111",
0
]
},
"_meta": {
"title": "VAE Encode"
}
},
"471:118": {
"class_type": "VAEDecode",
"inputs": {
"samples": [
"471:121",
0
],
"vae": [
"471:111",
0
]
},
"_meta": {
"title": "VAE Decode"
}
},
"471:119": {
"class_type": "LoraLoaderModelOnly",
"inputs": {
"lora_name": "Qwen-Image-Edit-2509-Lightning-4steps-V1.0-bf16.safetensors",
"model": [
"471:472",
0
],
"strength_model": 1
},
"_meta": {
"title": "Load LoRA"
}
},
"471:120": {
"class_type": "FluxKontextImageScale",
"inputs": {
"image": [
"7",
0
]
},
"_meta": {
"title": "FluxKontextImageScale"
}
},
"471:121": {
"class_type": "KSampler",
"inputs": {
"cfg": [
"471:442",
0
],
"denoise": 1,
"latent_image": [
"471:117",
0
],
"model": [
"471:110",
0
],
"negative": [
"471:114",
0
],
"positive": [
"471:116",
0
],
"sampler_name": "euler",
"scheduler": "simple",
"seed": 1066483521452192,
"steps": [
"471:441",
0
]
},
"_meta": {
"title": "KSampler"
}
},
"471:436": {
"class_type": "PrimitiveInt",
"inputs": {
"value": 4
},
"_meta": {
"title": "Stpes"
}
},
"471:437": {
"class_type": "PrimitiveFloat",
"inputs": {
"value": 1
},
"_meta": {
"title": "CFG"
}
},
"471:438": {
"class_type": "PrimitiveInt",
"inputs": {
"value": 20
},
"_meta": {
"title": "Steps"
}
},
"471:439": {
"class_type": "PrimitiveFloat",
"inputs": {
"value": 4
},
"_meta": {
"title": "CFG"
}
},
"471:440": {
"class_type": "ComfySwitchNode",
"inputs": {
"on_false": [
"471:473",
0
],
"on_true": [
"471:119",
0
],
"switch": [
"471:443",
0
]
},
"_meta": {
"title": "Switch (Model)"
}
},
"471:441": {
"class_type": "ComfySwitchNode",
"inputs": {
"on_false": [
"471:438",
0
],
"on_true": [
"471:436",
0
],
"switch": [
"471:443",
0
]
},
"_meta": {
"title": "Switch (Steps)"
}
},
"471:442": {
"class_type": "ComfySwitchNode",
"inputs": {
"on_false": [
"471:439",
0
],
"on_true": [
"471:437",
0
],
"switch": [
"471:443",
0
]
},
"_meta": {
"title": "Switch (CFG)"
}
},
"471:443": {
"class_type": "PrimitiveBoolean",
"inputs": {
"value": False
},
"_meta": {
"title": "Enable Lightning LoRA"
}
},
"471:472": {
"class_type": "LoraLoaderModelOnly",
"inputs": {
"lora_name": "Qwen-Image-Edit-2509-Light-Migration.safetensors",
"model": [
"471:113",
0
],
"strength_model": 1
},
"_meta": {
"title": "Load LoRA"
}
},
"471:473": {
"class_type": "LoraLoaderModelOnly",
"inputs": {
"lora_name": "ltx-2.3-22b-ic-lora-refocus.safetensors",
"model": [
"471:472",
0
],
"strength_model": 1
},
"_meta": {
"title": "Load LoRA"
}
}
})
# run() also passes api_key to the partner nodes in this workflow.
job = client.run(workflow, api_key=api_key)