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 = """ { "3": { "inputs": { "seed": 26754464254711, "steps": 20, "cfg": 6, "sampler_name": "uni_pc", "scheduler": "simple", "denoise": 1, "model": [ "48", 0 ], "positive": [ "6", 0 ], "negative": [ "7", 0 ], "latent_image": [ "40", 0 ] }, "class_type": "KSampler", "_meta": { "title": "KSampler" } }, "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": [ "3", 0 ], "vae": [ "39", 0 ] }, "class_type": "VAEDecode", "_meta": { "title": "VAE Decode" } }, "28": { "inputs": { "filename_prefix": "ComfyUI", "fps": 16, "lossless": false, "quality": 90, "method": "default", "images": [ "8", 0 ] }, "class_type": "SaveAnimatedWEBP", "_meta": { "title": "SaveAnimatedWEBP" } }, "37": { "inputs": { "unet_name": "wan2.1_t2v_14B_bf16.safetensors", "weight_dtype": "default" }, "class_type": "UNETLoader", "_meta": { "title": "Load Diffusion Model" } }, "38": { "inputs": { "clip_name": "umt5_xxl_fp16.safetensors", "type": "wan", "device": "default" }, "class_type": "CLIPLoader", "_meta": { "title": "Load CLIP" } }, "39": { "inputs": { "vae_name": "wan_2.1_vae.safetensors" }, "class_type": "VAELoader", "_meta": { "title": "Load VAE" } }, "40": { "inputs": { "width": 832, "height": 480, "length": 33, "batch_size": 2 }, "class_type": "EmptyHunyuanLatentVideo", "_meta": { "title": "EmptyHunyuanLatentVideo" } }, "48": { "inputs": { "shift": 8, "model": [ "37", 0 ] }, "class_type": "ModelSamplingSD3", "_meta": { "title": "ModelSamplingSD3" } } } """ 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)