import json from urllib import request #This is the ComfyUI api prompt format. #If you want it for a specific workflow you can "enable dev mode options" #in the settings of the UI (gear beside the "Queue Size: ") this will enable #a button on the UI to save workflows in api format. #keep in mind ComfyUI is pre alpha software so this format will change a bit. #this is the one for the default workflow prompt_text = """ { "6": { "inputs": { "text": "a fox moving quickly in a beautiful winter scenery nature trees mountains daytime tracking camera", "clip": [ "38", 0 ] }, "class_type": "CLIPTextEncode", "_meta": { "title": "CLIP Text Encode (Positive Prompt)" } }, "7": { "inputs": { "text": "色调艳丽,过曝,静态,细节模糊不清,字幕,风格,作品,画作,画面,静止,整体发灰,最差质量,低质量,JPEG压缩残留,丑陋的,残缺的,多余的手指,画得不好的手部,画得不好的脸部,畸形的,毁容的,形态畸形的肢体,手指融合,静止不动的画面,杂乱的背景,三条腿,背景人很多,倒着走", "clip": [ "38", 0 ] }, "class_type": "CLIPTextEncode", "_meta": { "title": "CLIP Text Encode (Negative Prompt)" } }, "8": { "inputs": { "samples": [ "58", 0 ], "vae": [ "39", 0 ] }, "class_type": "VAEDecode", "_meta": { "title": "VAE解码" } }, "37": { "inputs": { "unet_name": "wan2.2_t2v_high_noise_14B_fp16.safetensors", "weight_dtype": "default" }, "class_type": "UNETLoader", "_meta": { "title": "UNet加载器" } }, "38": { "inputs": { "clip_name": "umt5_xxl_fp16.safetensors", "type": "wan", "device": "default" }, "class_type": "CLIPLoader", "_meta": { "title": "加载CLIP" } }, "39": { "inputs": { "vae_name": "wan_2.1_vae.safetensors" }, "class_type": "VAELoader", "_meta": { "title": "加载VAE" } }, "28": { "inputs": { "filename_prefix": "ComfyUI", "fps": 16, "lossless": false, "quality": 80, "method": "default", "images": [ "8", 0 ] }, "class_type": "SaveAnimatedWEBP", "_meta": { "title": "保存动画(WEBP)" } }, "54": { "inputs": { "shift": 8.000000000000002, "model": [ "37", 0 ] }, "class_type": "ModelSamplingSD3", "_meta": { "title": "采样算法(SD3)" } }, "55": { "inputs": { "shift": 8, "model": [ "56", 0 ] }, "class_type": "ModelSamplingSD3", "_meta": { "title": "采样算法(SD3)" } }, "56": { "inputs": { "unet_name": "wan2.2_t2v_low_noise_14B_fp16.safetensors", "weight_dtype": "default" }, "class_type": "UNETLoader", "_meta": { "title": "UNet加载器" } }, "57": { "inputs": { "add_noise": "enable", "noise_seed": 738245732574137, "steps": 20, "cfg": 3.5, "sampler_name": "euler", "scheduler": "simple", "start_at_step": 0, "end_at_step": 10, "return_with_leftover_noise": "enable", "model": [ "54", 0 ], "positive": [ "6", 0 ], "negative": [ "7", 0 ], "latent_image": [ "61", 0 ] }, "class_type": "KSamplerAdvanced", "_meta": { "title": "K采样器(高级)" } }, "58": { "inputs": { "add_noise": "disable", "noise_seed": 0, "steps": 20, "cfg": 3.5, "sampler_name": "euler", "scheduler": "simple", "start_at_step": 10, "end_at_step": 10000, "return_with_leftover_noise": "disable", "model": [ "55", 0 ], "positive": [ "6", 0 ], "negative": [ "7", 0 ], "latent_image": [ "57", 0 ] }, "class_type": "KSamplerAdvanced", "_meta": { "title": "K采样器(高级)" } }, "61": { "inputs": { "width": 832, "height": 480, "length": 33, "batch_size": 2 }, "class_type": "EmptyHunyuanLatentVideo", "_meta": { "title": "空Latent视频(混元)" } } } """ def queue_prompt(prompt): p = {"prompt": prompt} # If the workflow contains API nodes, you can add a Comfy API key to the `extra_data`` field of the payload. # p["extra_data"] = { # "api_key_comfy_org": "comfyui-87d01e28d*******************************************************" # replace with real key # } # See: https://docs.comfy.org/tutorials/api-nodes/overview # Generate a key here: https://platform.comfy.org/login data = json.dumps(p).encode('utf-8') req = request.Request("http://127.0.0.1:8188/prompt", data=data) request.urlopen(req) prompt = json.loads(prompt_text) #set the text prompt for our positive CLIPTextEncode #prompt["6"]["inputs"]["text"] = "masterpiece best quality man" #set the seed for our KSampler node #prompt["3"]["inputs"]["seed"] = 5 queue_prompt(prompt)