Replace a character in a video
Replace the performer in a video with your character while following the source movement.
下载工作流在 Cloud 中试用 API 文档
00:00
查看工作流内部
源模板的只读预览。在 Cloud 中打开,即可查看节点并进行修改。
Loading the graph
Open full-size workflow preview- 作者
- ComfyUI
从代码中调用该模型
以下请求使用与体验区相同的预设图和设置。每次提交都可能开始一次付费运行;如果提交结果未知,请勿自动重试。
1 获取 API 密钥 ↗
What you need
- Runs on
- Comfy Cloud
- 密钥
- COMFY_API_KEY
- 你的文件
- 由代码根据链接上传
需要付费的 Cloud 方案和额度。
# 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({
"30": {
"class_type": "LoadImage",
"inputs": {
"image": "UPLOADED_image_FILENAME"
},
"_meta": {
"title": "Load Image"
}
},
"155": {
"class_type": "LoadVideo",
"inputs": {
"file": "UPLOADED_video_FILENAME"
},
"_meta": {
"title": "Load Video"
}
},
"201": {
"class_type": "CreateVideo",
"inputs": {
"audio": [
"215",
1
],
"bit_depth": 8,
"codec": "none",
"color_space": "sRGB",
"fps": [
"215",
2
],
"images": [
"213:6",
0
]
},
"_meta": {
"title": "Create Video"
}
},
"202": {
"class_type": "SaveVideo",
"inputs": {
"filename_prefix": "video/ComfyUI",
"format": "auto",
"format.codec": "auto",
"video": [
"201",
0
]
},
"_meta": {
"title": "Save Video (First Segement)"
}
},
"215": {
"class_type": "GetVideoComponents",
"inputs": {
"video": [
"155",
0
]
},
"_meta": {
"title": "Get Video Components"
}
},
"263": {
"class_type": "GetImageSize",
"inputs": {
"image": [
"215",
0
]
},
"_meta": {
"title": "Get Image Size"
}
},
"264": {
"class_type": "ComfyMathExpression",
"inputs": {
"expression": "ceil(a / (81 - 5))",
"values.a": [
"263",
2
]
},
"_meta": {
"title": "Math Expression"
}
},
"265": {
"class_type": "PreviewAny",
"inputs": {
"source": [
"264",
1
]
},
"_meta": {
"title": "Preview as Text ()"
}
},
"269": {
"class_type": "BatchImagesNode",
"inputs": {
"images.image0": [
"213:6",
0
],
"images.image1": [
"262:252",
0
]
},
"_meta": {
"title": "Batch Images"
}
},
"270": {
"class_type": "CreateVideo",
"inputs": {
"audio": [
"215",
1
],
"bit_depth": 8,
"codec": "none",
"color_space": "sRGB",
"fps": [
"215",
2
],
"images": [
"269",
0
]
},
"_meta": {
"title": "Create Video"
}
},
"271": {
"class_type": "SaveVideo",
"inputs": {
"filename_prefix": "video/SCAIL2",
"format": "auto",
"format.codec": "auto",
"video": [
"270",
0
]
},
"_meta": {
"title": "Save Video (Final output)"
}
},
"213:11": {
"class_type": "LoraLoaderModelOnly",
"inputs": {
"lora_name": "lightx2v_I2V_14B_480p_cfg_step_distill_rank64_bf16.safetensors",
"model": [
"213:318",
0
],
"strength_model": 0.8
},
"_meta": {
"title": "Load LoRA"
}
},
"213:114": {
"class_type": "WanSCAILToVideo",
"inputs": {
"batch_size": 1,
"clip_vision_output": [
"213:76",
0
],
"height": [
"213:163",
1
],
"length": [
"213:163",
2
],
"negative": [
"213:4",
0
],
"pose_end": 1,
"pose_start": 0,
"pose_strength": 1,
"pose_video": [
"213:156",
0
],
"pose_video_mask": [
"213:197",
0
],
"positive": [
"213:3",
0
],
"previous_frame_count": 5,
"reference_image": [
"30",
0
],
"reference_image_mask": [
"213:197",
1
],
"replacement_mode": [
"213:203",
0
],
"vae": [
"213:7",
0
],
"video_frame_offset": 0,
"width": [
"213:163",
0
]
},
"_meta": {
"title": "WanSCAILToVideo"
}
},
"213:154": {
"class_type": "UNETLoader",
"inputs": {
"unet_name": "wan2.1_14B_SCAIL_2_fp16.safetensors",
"weight_dtype": "default"
},
"_meta": {
"title": "Load Diffusion Model"
}
},
"213:156": {
"class_type": "ResizeImageMaskNode",
"inputs": {
"input": [
"213:177",
0
],
"resize_type": "scale dimensions",
"resize_type.crop": "center",
"resize_type.height": [
"213:182",
1
],
"resize_type.width": [
"213:180",
1
],
"scale_method": "area"
},
"_meta": {
"title": "Resize Image/Mask"
}
},
"213:157": {
"class_type": "GetVideoComponents",
"inputs": {
"video": [
"155",
0
]
},
"_meta": {
"title": "Get Video Components"
}
},
"213:163": {
"class_type": "GetImageSize",
"inputs": {
"image": [
"213:156",
0
]
},
"_meta": {
"title": "Get Image Size"
}
},
"213:165": {
"class_type": "PrimitiveInt",
"inputs": {
"value": 40
},
"_meta": {
"title": "Int (Steps)"
}
},
"213:166": {
"class_type": "PrimitiveFloat",
"inputs": {
"value": 5
},
"_meta": {
"title": "Float (CFG)"
}
},
"213:167": {
"class_type": "PrimitiveFloat",
"inputs": {
"value": 1
},
"_meta": {
"title": "Float (CFG)"
}
},
"213:168": {
"class_type": "PrimitiveInt",
"inputs": {
"value": 6
},
"_meta": {
"title": "Int (Steps)"
}
},
"213:169": {
"class_type": "ComfySwitchNode",
"inputs": {
"on_false": [
"213:318",
0
],
"on_true": [
"213:11",
0
],
"switch": [
"213:172",
0
]
},
"_meta": {
"title": "Switch (Model)"
}
},
"213:170": {
"class_type": "ComfySwitchNode",
"inputs": {
"on_false": [
"213:165",
0
],
"on_true": [
"213:168",
0
],
"switch": [
"213:172",
0
]
},
"_meta": {
"title": "Switch (Steps)"
}
},
"213:171": {
"class_type": "ComfySwitchNode",
"inputs": {
"on_false": [
"213:166",
0
],
"on_true": [
"213:167",
0
],
"switch": [
"213:172",
0
]
},
"_meta": {
"title": "Switch (Steps)"
}
},
"213:172": {
"class_type": "PrimitiveBoolean",
"inputs": {
"value": True
},
"_meta": {
"title": "Boolean (Enable Distill LoRA?)"
}
},
"213:177": {
"class_type": "ImageFromBatch",
"inputs": {
"batch_index": [
"213:184",
1
],
"image": [
"213:157",
0
],
"length": 81
},
"_meta": {
"title": "Get Image from Batch"
}
},
"213:178": {
"class_type": "PrimitiveInt",
"inputs": {
"value": 896
},
"_meta": {
"title": "Int (Width)"
}
},
"213:179": {
"class_type": "PrimitiveInt",
"inputs": {
"value": 512
},
"_meta": {
"title": "Int (Height)"
}
},
"213:18": {
"class_type": "BasicScheduler",
"inputs": {
"denoise": 1,
"model": [
"213:11",
0
],
"scheduler": "simple",
"steps": [
"213:170",
0
]
},
"_meta": {
"title": "BasicScheduler"
}
},
"213:180": {
"class_type": "ComfyMathExpression",
"inputs": {
"expression": "(a // 32) * 32",
"values.a": [
"213:178",
0
]
},
"_meta": {
"title": "Math Expression"
}
},
"213:182": {
"class_type": "ComfyMathExpression",
"inputs": {
"expression": "(a // 32) * 32",
"values.a": [
"213:179",
0
]
},
"_meta": {
"title": "Math Expression"
}
},
"213:183": {
"class_type": "PrimitiveInt",
"inputs": {
"value": 1
},
"_meta": {
"title": "Int (segment index)"
}
},
"213:184": {
"class_type": "ComfyMathExpression",
"inputs": {
"expression": "(b - c) * (a - 1)",
"values.a": [
"213:183",
0
],
"values.b": 81,
"values.c": 5
},
"_meta": {
"title": "Math Expression"
}
},
"213:19": {
"class_type": "SamplerCustom",
"inputs": {
"add_noise": True,
"cfg": [
"213:171",
0
],
"latent_image": [
"213:114",
2
],
"model": [
"213:95",
0
],
"negative": [
"213:114",
1
],
"noise_seed": 1,
"positive": [
"213:114",
0
],
"sampler": [
"213:27",
0
],
"sigmas": [
"213:18",
0
]
},
"_meta": {
"title": "SamplerCustom"
}
},
"213:191": {
"class_type": "CLIPTextEncode",
"inputs": {
"clip": [
"213:193",
1
],
"text": "human"
},
"_meta": {
"title": "CLIP Text Encode (Prompt)"
}
},
"213:193": {
"class_type": "CheckpointLoaderSimple",
"inputs": {
"ckpt_name": "sam3.1_multiplex_fp16.safetensors"
},
"_meta": {
"title": "Load Checkpoint"
}
},
"213:196": {
"class_type": "SAM3_VideoTrack",
"inputs": {
"conditioning": [
"213:191",
0
],
"detect_interval": 1,
"detection_threshold": 0.5,
"images": [
"213:156",
0
],
"max_objects": 4,
"model": [
"213:193",
0
]
},
"_meta": {
"title": "Run SAM3 Video Track"
}
},
"213:197": {
"class_type": "SCAIL2ColoredMask",
"inputs": {
"driving_track_data": [
"213:196",
0
],
"object_indices": "",
"ref_track_data": [
"213:198",
0
],
"replacement_mode": [
"213:203",
0
],
"sort_by": "left_to_right"
},
"_meta": {
"title": "Create SCAIL-2 Colored Mask"
}
},
"213:198": {
"class_type": "SAM3_VideoTrack",
"inputs": {
"conditioning": [
"213:212",
0
],
"detect_interval": 1,
"detection_threshold": 0.5,
"images": [
"30",
0
],
"max_objects": 4,
"model": [
"213:193",
0
]
},
"_meta": {
"title": "Run SAM3 Video Track"
}
},
"213:203": {
"class_type": "PrimitiveBoolean",
"inputs": {
"value": True
},
"_meta": {
"title": "Boolean (Replace Mode)"
}
},
"213:212": {
"class_type": "CLIPTextEncode",
"inputs": {
"clip": [
"213:193",
1
],
"text": "human"
},
"_meta": {
"title": "CLIP Text Encode (Prompt)"
}
},
"213:27": {
"class_type": "KSamplerSelect",
"inputs": {
"sampler_name": "euler"
},
"_meta": {
"title": "KSamplerSelect"
}
},
"213:3": {
"class_type": "CLIPTextEncode",
"inputs": {
"clip": [
"213:9",
0
],
"text": "A young woman with dark hair tied in a neat high bun, with a few loose strands framing her face, is dancing outdoors on a sunny coastal hillside. She has a normal-sized head and a slim face, with no hat, no headwear, and no oversized hair volume. She wears a fitted black long-sleeve crop top with a shoulder cutout, extremely baggy black cargo pants with straps and pockets, and chunky black combat boots. She performs energetic dance moves with one leg lifted and arms extended, moving naturally in front of a large tree, a small white stone house with a terracotta roof, and a bright blue sea under a clear sky with light clouds."
},
"_meta": {
"title": "CLIP Text Encode (Prompt)"
}
},
"213:318": {
"class_type": "LoraLoaderModelOnly",
"inputs": {
"lora_name": "wan2.1_SCAIL_2_DPO_lora_bf16.safetensors",
"model": [
"213:154",
0
],
"strength_model": 1
},
"_meta": {
"title": "Load LoRA"
}
},
"213:4": {
"class_type": "CLIPTextEncode",
"inputs": {
"clip": [
"213:9",
0
],
"text": ""
},
"_meta": {
"title": "CLIP Text Encode (Prompt)"
}
},
"213:6": {
"class_type": "VAEDecode",
"inputs": {
"samples": [
"213:19",
1
],
"vae": [
"213:7",
0
]
},
"_meta": {
"title": "VAE Decode"
}
},
"213:7": {
"class_type": "VAELoader",
"inputs": {
"vae_name": "Wan2_1_VAE_bf16.safetensors"
},
"_meta": {
"title": "Load VAE"
}
},
"213:75": {
"class_type": "CLIPVisionLoader",
"inputs": {
"clip_name": "clip_vision_h.safetensors"
},
"_meta": {
"title": "Load CLIP Vision"
}
},
"213:76": {
"class_type": "CLIPVisionEncode",
"inputs": {
"clip_vision": [
"213:75",
0
],
"crop": "none",
"image": [
"30",
0
]
},
"_meta": {
"title": "CLIP Vision Encode"
}
},
"213:9": {
"class_type": "CLIPLoader",
"inputs": {
"clip_name": "umt5_xxl_fp8_e4m3fn_scaled.safetensors",
"device": "default",
"type": "wan"
},
"_meta": {
"title": "Load CLIP"
}
},
"213:95": {
"class_type": "ModelSamplingSD3",
"inputs": {
"model": [
"213:169",
0
],
"shift": 5
},
"_meta": {
"title": "ModelSamplingSD3"
}
},
"262:216": {
"class_type": "LoraLoaderModelOnly",
"inputs": {
"lora_name": "lightx2v_I2V_14B_480p_cfg_step_distill_rank64_bf16.safetensors",
"model": [
"262:319",
0
],
"strength_model": 0.8
},
"_meta": {
"title": "Load LoRA"
}
},
"262:217": {
"class_type": "VAELoader",
"inputs": {
"vae_name": "Wan2_1_VAE_bf16.safetensors"
},
"_meta": {
"title": "Load VAE"
}
},
"262:218": {
"class_type": "ResizeImageMaskNode",
"inputs": {
"input": [
"262:235",
0
],
"resize_type": "scale dimensions",
"resize_type.crop": "center",
"resize_type.height": [
"262:239",
1
],
"resize_type.width": [
"262:238",
1
],
"scale_method": "area"
},
"_meta": {
"title": "Resize Image/Mask"
}
},
"262:219": {
"class_type": "GetVideoComponents",
"inputs": {
"video": [
"155",
0
]
},
"_meta": {
"title": "Get Video Components"
}
},
"262:220": {
"class_type": "GetImageSize",
"inputs": {
"image": [
"262:218",
0
]
},
"_meta": {
"title": "Get Image Size"
}
},
"262:221": {
"class_type": "CLIPLoader",
"inputs": {
"clip_name": "umt5_xxl_fp8_e4m3fn_scaled.safetensors",
"device": "default",
"type": "wan"
},
"_meta": {
"title": "Load CLIP"
}
},
"262:222": {
"class_type": "CLIPVisionLoader",
"inputs": {
"clip_name": "clip_vision_h.safetensors"
},
"_meta": {
"title": "Load CLIP Vision"
}
},
"262:223": {
"class_type": "UNETLoader",
"inputs": {
"unet_name": "wan2.1_14B_SCAIL_2_fp16.safetensors",
"weight_dtype": "default"
},
"_meta": {
"title": "Load Diffusion Model"
}
},
"262:224": {
"class_type": "ModelSamplingSD3",
"inputs": {
"model": [
"262:232",
0
],
"shift": 5
},
"_meta": {
"title": "ModelSamplingSD3"
}
},
"262:225": {
"class_type": "KSamplerSelect",
"inputs": {
"sampler_name": "euler"
},
"_meta": {
"title": "KSamplerSelect"
}
},
"262:226": {
"class_type": "BasicScheduler",
"inputs": {
"denoise": 1,
"model": [
"262:216",
0
],
"scheduler": "simple",
"steps": [
"262:233",
0
]
},
"_meta": {
"title": "BasicScheduler"
}
},
"262:227": {
"class_type": "SamplerCustom",
"inputs": {
"add_noise": True,
"cfg": [
"262:234",
0
],
"latent_image": [
"262:259",
2
],
"model": [
"262:224",
0
],
"negative": [
"262:259",
1
],
"noise_seed": 1,
"positive": [
"262:259",
0
],
"sampler": [
"262:225",
0
],
"sigmas": [
"262:226",
0
]
},
"_meta": {
"title": "SamplerCustom"
}
},
"262:228": {
"class_type": "PrimitiveInt",
"inputs": {
"value": 6
},
"_meta": {
"title": "Int (Steps)"
}
},
"262:229": {
"class_type": "PrimitiveFloat",
"inputs": {
"value": 1
},
"_meta": {
"title": "Float (CFG)"
}
},
"262:230": {
"class_type": "PrimitiveInt",
"inputs": {
"value": 40
},
"_meta": {
"title": "Int (Steps)"
}
},
"262:231": {
"class_type": "PrimitiveFloat",
"inputs": {
"value": 5
},
"_meta": {
"title": "Float (CFG)"
}
},
"262:232": {
"class_type": "ComfySwitchNode",
"inputs": {
"on_false": [
"262:319",
0
],
"on_true": [
"262:216",
0
],
"switch": [
"262:255",
0
]
},
"_meta": {
"title": "Switch (Model)"
}
},
"262:233": {
"class_type": "ComfySwitchNode",
"inputs": {
"on_false": [
"262:230",
0
],
"on_true": [
"262:228",
0
],
"switch": [
"262:255",
0
]
},
"_meta": {
"title": "Switch (Steps)"
}
},
"262:234": {
"class_type": "ComfySwitchNode",
"inputs": {
"on_false": [
"262:231",
0
],
"on_true": [
"262:229",
0
],
"switch": [
"262:255",
0
]
},
"_meta": {
"title": "Switch (Steps)"
}
},
"262:235": {
"class_type": "ImageFromBatch",
"inputs": {
"batch_index": [
"262:241",
1
],
"image": [
"262:219",
0
],
"length": 81
},
"_meta": {
"title": "Get Image from Batch"
}
},
"262:236": {
"class_type": "PrimitiveInt",
"inputs": {
"value": 896
},
"_meta": {
"title": "Int (Width)"
}
},
"262:237": {
"class_type": "PrimitiveInt",
"inputs": {
"value": 512
},
"_meta": {
"title": "Int (Height)"
}
},
"262:238": {
"class_type": "ComfyMathExpression",
"inputs": {
"expression": "(a // 32) * 32",
"values.a": [
"262:236",
0
]
},
"_meta": {
"title": "Math Expression"
}
},
"262:239": {
"class_type": "ComfyMathExpression",
"inputs": {
"expression": "(a // 32) * 32",
"values.a": [
"262:237",
0
]
},
"_meta": {
"title": "Math Expression"
}
},
"262:240": {
"class_type": "PrimitiveInt",
"inputs": {
"value": 2
},
"_meta": {
"title": "Int (segment index)"
}
},
"262:241": {
"class_type": "ComfyMathExpression",
"inputs": {
"expression": "(b - c) * (a - 1)",
"values.a": [
"262:240",
0
],
"values.b": 81,
"values.c": 5
},
"_meta": {
"title": "Math Expression"
}
},
"262:242": {
"class_type": "CLIPTextEncode",
"inputs": {
"clip": [
"262:243",
1
],
"text": "human"
},
"_meta": {
"title": "CLIP Text Encode (Prompt)"
}
},
"262:243": {
"class_type": "CheckpointLoaderSimple",
"inputs": {
"ckpt_name": "sam3.1_multiplex_fp16.safetensors"
},
"_meta": {
"title": "Load Checkpoint"
}
},
"262:244": {
"class_type": "SAM3_VideoTrack",
"inputs": {
"conditioning": [
"262:242",
0
],
"detect_interval": 1,
"detection_threshold": 0.5,
"images": [
"262:218",
0
],
"max_objects": 4,
"model": [
"262:243",
0
]
},
"_meta": {
"title": "Run SAM3 Video Track"
}
},
"262:245": {
"class_type": "SCAIL2ColoredMask",
"inputs": {
"driving_track_data": [
"262:244",
0
],
"object_indices": "",
"ref_track_data": [
"262:246",
0
],
"replacement_mode": [
"262:247",
0
],
"sort_by": "left_to_right"
},
"_meta": {
"title": "Create SCAIL-2 Colored Mask"
}
},
"262:246": {
"class_type": "SAM3_VideoTrack",
"inputs": {
"conditioning": [
"262:261",
0
],
"detect_interval": 1,
"detection_threshold": 0.5,
"images": [
"30",
0
],
"max_objects": 4,
"model": [
"262:243",
0
]
},
"_meta": {
"title": "Run SAM3 Video Track"
}
},
"262:247": {
"class_type": "PrimitiveBoolean",
"inputs": {
"value": True
},
"_meta": {
"title": "Boolean (Replace Mode)"
}
},
"262:250": {
"class_type": "VAEDecode",
"inputs": {
"samples": [
"262:227",
1
],
"vae": [
"262:217",
0
]
},
"_meta": {
"title": "VAE Decode"
}
},
"262:251": {
"class_type": "ImageFromBatch",
"inputs": {
"batch_index": 5,
"image": [
"262:250",
0
],
"length": 4096
},
"_meta": {
"title": "Get Image from Batch"
}
},
"262:252": {
"class_type": "ColorTransfer",
"inputs": {
"image_ref": [
"262:253",
0
],
"image_target": [
"262:251",
0
],
"method": "reinhard_lab",
"source_stats": "per_frame",
"strength": 1
},
"_meta": {
"title": "Transfer Color"
}
},
"262:253": {
"class_type": "ImageFromBatch",
"inputs": {
"batch_index": -1,
"image": [
"213:6",
0
],
"length": 1
},
"_meta": {
"title": "Get Image from Batch"
}
},
"262:255": {
"class_type": "PrimitiveBoolean",
"inputs": {
"value": True
},
"_meta": {
"title": "Boolean (Enable Distill LoRA?)"
}
},
"262:256": {
"class_type": "CLIPVisionEncode",
"inputs": {
"clip_vision": [
"262:222",
0
],
"crop": "none",
"image": [
"30",
0
]
},
"_meta": {
"title": "CLIP Vision Encode"
}
},
"262:257": {
"class_type": "CLIPTextEncode",
"inputs": {
"clip": [
"262:221",
0
],
"text": ""
},
"_meta": {
"title": "CLIP Text Encode (Prompt)"
}
},
"262:258": {
"class_type": "CLIPTextEncode",
"inputs": {
"clip": [
"262:221",
0
],
"text": "A young woman with dark hair tied in a neat high bun, with a few loose strands framing her face, is dancing outdoors on a sunny coastal hillside. She has a normal-sized head and a slim face, with no hat, no headwear, and no oversized hair volume. She wears a fitted black long-sleeve crop top with a shoulder cutout, extremely baggy black cargo pants with straps and pockets, and chunky black combat boots. She performs energetic dance moves with one leg lifted and arms extended, moving naturally in front of a large tree, a small white stone house with a terracotta roof, and a bright blue sea under a clear sky with light clouds."
},
"_meta": {
"title": "CLIP Text Encode (Prompt)"
}
},
"262:259": {
"class_type": "WanSCAILToVideo",
"inputs": {
"batch_size": 1,
"clip_vision_output": [
"262:256",
0
],
"height": [
"262:220",
1
],
"length": [
"262:220",
2
],
"negative": [
"262:257",
0
],
"pose_end": 1,
"pose_start": 0,
"pose_strength": 1,
"pose_video": [
"262:218",
0
],
"pose_video_mask": [
"262:245",
0
],
"positive": [
"262:258",
0
],
"previous_frame_count": 5,
"previous_frames": [
"213:6",
0
],
"reference_image": [
"30",
0
],
"reference_image_mask": [
"262:245",
1
],
"replacement_mode": [
"262:247",
0
],
"vae": [
"262:217",
0
],
"video_frame_offset": 0,
"width": [
"262:220",
0
]
},
"_meta": {
"title": "WanSCAILToVideo"
}
},
"262:261": {
"class_type": "CLIPTextEncode",
"inputs": {
"clip": [
"262:243",
1
],
"text": "human"
},
"_meta": {
"title": "CLIP Text Encode (Prompt)"
}
},
"262:319": {
"class_type": "LoraLoaderModelOnly",
"inputs": {
"lora_name": "wan2.1_SCAIL_2_DPO_lora_bf16.safetensors",
"model": [
"262:223",
0
],
"strength_model": 1
},
"_meta": {
"title": "Load LoRA"
}
}
})
workflow.set_input("30", "image", client.assets.from_url("https://cdn.jsdelivr.net/gh/Comfy-Org/workflow_templates@90c71fb78b3726392d010ff62a8e79e92d7296ad/input/reference_streetwear_character.png"))
workflow.set_input("155", "file", client.assets.from_url("https://cdn.jsdelivr.net/gh/Comfy-Org/workflow_templates@90c71fb78b3726392d010ff62a8e79e92d7296ad/input/driving_outdoor_dance.mp4"))
# run() also passes api_key to the partner nodes in this workflow.
job = client.run(workflow, api_key=api_key)
for output in job.get_outputs("271"):
output.to_file(output.name)