本文档提供了 Stable Diffusion Web UI API 使用的请求和响应格式的全面参考。它涵盖了 API 请求的结构、必需参数、响应格式以及如何正确编码和解码图像等数据。有关可用 API 端点的信息,请参阅 API 端点。
Stable Diffusion Web UI 提供了一个 REST API,允许外部应用程序与图像生成管道进行交互。所有通信都通过 HTTP 进行,请求和响应的格式为 JSON。图像以 Base64 编码的字符串形式传输。
来源: modules/api/api.py199-277 modules/api/api.py432-490
通过启动 Web UI 时使用 --api-auth 命令行参数,可以将 API 配置为要求 HTTP Basic 认证。
来源: modules/api/api.py279-284 modules/api/api.py274-277
图像以 Base64 编码的字符串形式通过 API 传递。API 提供了处理编码和解码的实用函数。
| 方向 | 格式 | 备注 |
|---|---|---|
| 输入 API | Base64 字符串 | 可以是原始 Base64 或数据 URL(例如:data:image/png;base64,...) |
| 输出 API | Base64 字符串 | 根据配置的格式(PNG、JPEG、WEBP)进行编码 |
在向 API 发送图像时,有三种主要方式可以提供图像数据
data:image/png;base64,...)api_enable_requests=True)来源: modules/api/api.py77-99 modules/api/api.py102-132
大多数 API 端点接受 JSON 对象,其中包含控制生成过程的特定参数。API 使用 Pydantic 模型来验证传入的请求。
`/sdapi/v1/txt2img` 端点接受具有以下结构的 JSON 请求
| 参数 | 类型 | 描述 |
|---|---|---|
prompt | 字符串 | 图像生成的文本提示 |
negative_prompt | 字符串 | 图像不应表示的文本 |
seed | 整数 | 生成的随机种子 |
subseed | 整数 | 次级种子 |
subseed_strength | 浮点数 | 次级种子的强度 |
width | 整数 | 生成图像的宽度 |
height | 整数 | 生成图像的高度 |
cfg_scale | 浮点数 | CFG 尺度(提示的影响力) |
steps | 整数 | 采样步数 |
sampler_name | 字符串 | 要使用的采样器名称 |
scheduler | 字符串 | 要使用的调度器名称 |
batch_size | 整数 | 批处理中要生成的图像数量 |
n_iter | 整数 | 迭代次数 |
send_images | 布尔值 | 响应中是否返回生成的图像 |
save_images | 布尔值 | 是否保存生成的图像 |
script_name | 字符串 | 用于生成的脚本 |
script_args | array | 脚本的参数 |
alwayson_scripts | 对象 | 常亮脚本的配置 |
请求示例
来源: modules/api/models.py100-113 modules/api/api.py432-490
`/sdapi/v1/txt2img` 的响应包含
| 字段 | 类型 | 描述 |
|---|---|---|
images | 字符串数组 | Base64 编码的图像 |
parameters | 对象 | 请求参数的副本 |
info | 字符串 | 生成信息 |
响应结构示例
来源: modules/api/models.py134-138 modules/api/api.py432-490
`/sdapi/v1/img2img` 端点接受一个 JSON 请求,其参数与文生图类似,并增加了源图像
| 参数 | 类型 | 描述 |
|---|---|---|
init_images | 字符串数组 | Base64 编码的输入图像 |
mask | 字符串 | Base64 编码的掩码(可选) |
denoising_strength | 浮点数 | 添加的噪声量(0.0-1.0) |
prompt | 字符串 | 图像生成的文本提示 |
negative_prompt | 字符串 | 图像不应表示的文本 |
seed | 整数 | 生成的随机种子 |
width | 整数 | 生成图像的宽度 |
height | 整数 | 生成图像的高度 |
cfg_scale | 浮点数 | CFG 尺度(提示的影响力) |
steps | 整数 | 采样步数 |
sampler_name | 字符串 | 要使用的采样器名称 |
include_init_images | 布尔值 | 响应中是否包含输入图像 |
请求示例
来源: modules/api/models.py115-132 modules/api/api.py492-565
`/sdapi/v1/img2img` 的响应与文生图响应类似
| 字段 | 类型 | 描述 |
|---|---|---|
images | 字符串数组 | Base64 编码的生成图像 |
parameters | 对象 | 请求参数的副本(输入图像可能会被省略) |
info | 字符串 | 生成信息 |
来源: modules/api/models.py139-142 modules/api/api.py492-565
`/sdapi/v1/sd-models` 端点返回可用 Stable Diffusion 模型列表
响应格式
来源: modules/api/models.py255-262 modules/api/api.py726-728
卸载当前模型
/sdapi/v1/unload-checkpoint重新加载当前模型
/sdapi/v1/reload-checkpoint`/sdapi/v1/progress` 端点可以轮询以跟踪正在进行的生成任务的进度。
请求格式
响应格式
来源: modules/api/models.py186-195 modules/api/api.py602-628
API 支持可选脚本(通过 script_name 选择)和常亮脚本(通过 alwayson_scripts 配置)。
要使用可选脚本,请指定
要使用常亮脚本
来源: modules/api/api.py335-361 modules/api/api.py460-482
API 错误以一致的 JSON 格式返回
HTTP 状态码用于指示不同的错误
来源: modules/api/api.py335-361 modules/api/api.py460-482 modules/api/api.py530-553
对于长时间运行的操作,您可以使用任务 ID 来跟踪进度
force_task_id/sdapi/v1/progress 端点使用此 ID 来跟踪进度来源: modules/api/api.py433-434 modules/api/api.py465 modules/api/api.py476 modules/api/api.py483