菜单

请求与响应格式

相关源文件

本文档提供了 Stable Diffusion Web UI API 使用的请求和响应格式的全面参考。它涵盖了 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 提供了处理编码和解码的实用函数。

方向格式备注
输入 APIBase64 字符串可以是原始 Base64 或数据 URL(例如:data:image/png;base64,...
输出 APIBase64 字符串根据配置的格式(PNG、JPEG、WEBP)进行编码

在向 API 发送图像时,有三种主要方式可以提供图像数据

  1. 原始 Base64 编码的图像数据
  2. 带有 Base64 编码的数据 URL(例如:data:image/png;base64,...
  3. 图像的 URL(需要 api_enable_requests=True

来源: modules/api/api.py77-99 modules/api/api.py102-132

请求参数

大多数 API 端点接受 JSON 对象,其中包含控制生成过程的特定参数。API 使用 Pydantic 模型来验证传入的请求。

文生图 API

请求格式

`/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_argsarray脚本的参数
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

图生图 API

请求格式

`/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

模型管理 API 格式

获取模型列表请求/响应

`/sdapi/v1/sd-models` 端点返回可用 Stable Diffusion 模型列表

响应格式

来源: modules/api/models.py255-262 modules/api/api.py726-728

模型切换格式

卸载当前模型

  • 端点:/sdapi/v1/unload-checkpoint
  • 方法:POST
  • 空的请求体

重新加载当前模型

  • 端点:/sdapi/v1/reload-checkpoint
  • 方法:POST
  • 空的请求体

来源: modules/api/api.py654-662

进度跟踪

`/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 状态码用于指示不同的错误

  • 400:错误请求(参数无效)
  • 401:未经授权(身份验证失败)
  • 404:未找到
  • 422:无法处理的实体(验证错误)
  • 500:服务器错误

来源: modules/api/api.py167-196

高级请求示例

使用 X/Y/Z Plot 脚本的文生图

使用 Loopback 脚本和 GFPGAN 的图生图

来源: modules/api/api.py335-361 modules/api/api.py460-482 modules/api/api.py530-553

任务 ID 系统

对于长时间运行的操作,您可以使用任务 ID 来跟踪进度

  1. 您可以在请求中选择性地提供一个 force_task_id
  2. 如果未提供,API 会生成一个唯一的任务 ID
  3. 您可以通过 /sdapi/v1/progress 端点使用此 ID 来跟踪进度

来源: modules/api/api.py433-434 modules/api/api.py465 modules/api/api.py476 modules/api/api.py483