-
-
Save w-e-w/0f37c04c18e14e4ee1482df5c4eb9f53 to your computer and use it in GitHub Desktop.
| from datetime import datetime | |
| import urllib.request | |
| import base64 | |
| import json | |
| import time | |
| import os | |
| webui_server_url = 'http://127.0.0.1:7860' | |
| out_dir = 'api_out' | |
| out_dir_t2i = os.path.join(out_dir, 'txt2img') | |
| out_dir_i2i = os.path.join(out_dir, 'img2img') | |
| os.makedirs(out_dir_t2i, exist_ok=True) | |
| os.makedirs(out_dir_i2i, exist_ok=True) | |
| def timestamp(): | |
| return datetime.fromtimestamp(time.time()).strftime("%Y%m%d-%H%M%S") | |
| def encode_file_to_base64(path): | |
| with open(path, 'rb') as file: | |
| return base64.b64encode(file.read()).decode('utf-8') | |
| def decode_and_save_base64(base64_str, save_path): | |
| with open(save_path, "wb") as file: | |
| file.write(base64.b64decode(base64_str)) | |
| def call_api(api_endpoint, **payload): | |
| data = json.dumps(payload).encode('utf-8') | |
| request = urllib.request.Request( | |
| f'{webui_server_url}/{api_endpoint}', | |
| headers={'Content-Type': 'application/json'}, | |
| data=data, | |
| ) | |
| response = urllib.request.urlopen(request) | |
| return json.loads(response.read().decode('utf-8')) | |
| def call_txt2img_api(**payload): | |
| response = call_api('sdapi/v1/txt2img', **payload) | |
| for index, image in enumerate(response.get('images')): | |
| save_path = os.path.join(out_dir_t2i, f'txt2img-{timestamp()}-{index}.png') | |
| decode_and_save_base64(image, save_path) | |
| def call_img2img_api(**payload): | |
| response = call_api('sdapi/v1/img2img', **payload) | |
| for index, image in enumerate(response.get('images')): | |
| save_path = os.path.join(out_dir_i2i, f'img2img-{timestamp()}-{index}.png') | |
| decode_and_save_base64(image, save_path) | |
| if __name__ == '__main__': | |
| payload = { | |
| "prompt": "masterpiece, (best quality:1.1), 1girl <lora:lora_model:1>", # extra networks also in prompts | |
| "negative_prompt": "", | |
| "seed": 1, | |
| "steps": 20, | |
| "width": 512, | |
| "height": 512, | |
| "cfg_scale": 7, | |
| "sampler_name": "DPM++ 2M", | |
| "n_iter": 1, | |
| "batch_size": 1, | |
| # example args for x/y/z plot | |
| # "script_name": "x/y/z plot", | |
| # "script_args": [ | |
| # 1, | |
| # "10,20", | |
| # [], | |
| # 0, | |
| # "", | |
| # [], | |
| # 0, | |
| # "", | |
| # [], | |
| # True, | |
| # True, | |
| # False, | |
| # False, | |
| # 0, | |
| # False | |
| # ], | |
| # example args for Refiner and ControlNet | |
| # "alwayson_scripts": { | |
| # "ControlNet": { | |
| # "args": [ | |
| # { | |
| # "batch_images": "", | |
| # "control_mode": "Balanced", | |
| # "enabled": True, | |
| # "guidance_end": 1, | |
| # "guidance_start": 0, | |
| # "image": { | |
| # "image": encode_file_to_base64(r"B:\path\to\control\img.png"), | |
| # "mask": None # base64, None when not need | |
| # }, | |
| # "input_mode": "simple", | |
| # "is_ui": True, | |
| # "loopback": False, | |
| # "low_vram": False, | |
| # "model": "control_v11p_sd15_canny [d14c016b]", | |
| # "module": "canny", | |
| # "output_dir": "", | |
| # "pixel_perfect": False, | |
| # "processor_res": 512, | |
| # "resize_mode": "Crop and Resize", | |
| # "threshold_a": 100, | |
| # "threshold_b": 200, | |
| # "weight": 1 | |
| # } | |
| # ] | |
| # }, | |
| # "Refiner": { | |
| # "args": [ | |
| # True, | |
| # "sd_xl_refiner_1.0", | |
| # 0.5 | |
| # ] | |
| # } | |
| # }, | |
| # "enable_hr": True, | |
| # "hr_upscaler": "R-ESRGAN 4x+ Anime6B", | |
| # "hr_scale": 2, | |
| # "denoising_strength": 0.5, | |
| # "styles": ['style 1', 'style 2'], | |
| # "override_settings": { | |
| # 'sd_model_checkpoint': "sd_xl_base_1.0", # this can use to switch sd model | |
| # }, | |
| } | |
| call_txt2img_api(**payload) | |
| init_images = [ | |
| encode_file_to_base64(r"B:\path\to\img_1.png"), | |
| # encode_file_to_base64(r"B:\path\to\img_2.png"), | |
| # "https://image.can/also/be/a/http/url.png", | |
| ] | |
| batch_size = 2 | |
| payload = { | |
| "prompt": "1girl, blue hair", | |
| "seed": 1, | |
| "steps": 20, | |
| "width": 512, | |
| "height": 512, | |
| "denoising_strength": 0.5, | |
| "n_iter": 1, | |
| "init_images": init_images, | |
| "batch_size": batch_size if len(init_images) == 1 else len(init_images), | |
| # "mask": encode_file_to_base64(r"B:\path\to\mask.png") | |
| } | |
| # if len(init_images) > 1 then batch_size should be == len(init_images) | |
| # else if len(init_images) == 1 then batch_size can be any value int >= 1 | |
| call_img2img_api(**payload) | |
| # there exist a useful extension that allows converting of webui calls to api payload | |
| # particularly useful when you wish setup arguments of extensions and scripts | |
| # https://github.com/huchenlei/sd-webui-api-payload-display |
When I make request at http://127.0.0.1:7860/sdapi/v1/txt2img directly using postman or using the above script (with or without requests module) I am getting 404 error. Anyone know how to fix this?
Did they remove the txt2img & img2img APIs? Please anyone gives us confirmation, thanks.
Did they remove the txt2img & img2img APIs? Please anyone gives us confirmation, thanks.
api works
... HTTP Error 404: Not Found ...
the API error message is not that descripted, we use 404 for lots of things "not found"
txt2img and img2img
- Sampler not found
img2img - Init image not found
interrogate - Image not found
- Model not found
in particular there was some change to the sampler scheduler in 1.9
we did not have the foresight to implement backwards compatibility and result in a 404 if you try to generate an image with a non-existent sampler scheduler
@w-e-w
I created a request using Postman and it says "Not found". Can you tell me what is wrong here?
Moreover, at "http://127.0.0.1:7860/docs#/" I cannot see the description for that above 2 APIs. I installed Automatic1111 v1.9.3
Moreover, at "http://127.0.0.1:7860/docs#/" I cannot see the description for that above 2 APIs. I installed Automatic1111 v1.9.3
that's odd, it's showing on mine

but since you give me practically zero information I can't really help
if I think your experiencing an issue don't ask here make an issue post
Got the same issue: "... HTTP Error 404: Not Found ..."
I searched the http://127.0.0.1:7860/docs#/, no /sdapi/v1/txt2img was found.
restart for several times, still not working.
So I search all the webui process use the following cmd:
ps -ef | grep webui.sh | grep -v grep | gawk '{ print $2 }' and kill all the pids
then I search the 7860 port use the following cmd:
netstat -antlp | grep LISTEN | grep 7860 and kill the pid again.
then I start webui again, and finally the /sdapi/v1/txt2img was shown and the api test code worked.
I don't know why.
if you guys have the same issue, try to clean all the process and restart with --api.
To whom they couldn't find /sdapi/v1/txt2img and /sdapi/v1/img2img endpoint in http://127.0.0.1:7860/docs:
I solved the problem by adding --api to COMMANDLINE_ARGS in webui-user.bat file.
To whom they couldn't find
/sdapi/v1/txt2imgand/sdapi/v1/img2imgendpoint in http://127.0.0.1:7860/docs: I solved the problem by adding--apitoCOMMANDLINE_ARGSin webui-user.bat file.
i want to kiss u
To whom they couldn't find
/sdapi/v1/txt2imgand/sdapi/v1/img2imgendpoint in http://127.0.0.1:7860/docs: I solved the problem by adding--apitoCOMMANDLINE_ARGSin webui-user.bat file.i want to kiss u
Me too.
👀 some prompt 🧠 here! come share the prompts with God Tier Prompts ✨

Hi, this script is not working anymore. Possible updates?