图片生成
POST /v1/images/generations 与 /v1/images/edits:全部图片模型共用的同步接口,各模型请求协议与响应格式差异、选型对照
POST/v1/images/generations
POST/v1/images/edits
两个端点均为同步:请求会等待生成完成后返回,无需创建任务或轮询。不同模型使用不同请求协议与响应结构,必须按模型解析,不能假设所有图片接口都返回同一种响应体。
| 项 | 值 |
|---|---|
| 模型 | 见模型选型,可用模型以模型列表为准 |
| 模式 | 同步(单次请求等待生成完成,无任务 ID,无轮询) |
| 端点 | POST /v1/images/generations(文生图、参考图生成/编辑);POST /v1/images/edits(gpt-image-2-ext 单图编辑、grok-imagine-1.5-edit) |
| 鉴权 | Authorization: Bearer <your-api-key>,完整规则见身份认证 |
| 计费 | 按识别到的输出张数(gpt-image-2-official、gpt-image-2.6-* 按 token),价格以定价页为准 |
| 媒体保留 | 响应中的图片 URL 为临时地址,请及时转存,见注意事项 |
快速开始
curl https://api.vibelab.me/v1/images/generations \
-H "Authorization: Bearer $LOOPTOKEN_API_KEY" \
-H "Content-Type: application/json" \
-d '{"model": "Doubao-seedream-4.5", "prompt": "白底上的蓝色圆形图标"}'{"created": 1719820800, "data": [{"url": "https://..."}]}响应格式因模型而异,见响应。API Key 应只保存在服务端。请求头统一为:
Authorization: Bearer <your-api-key>
Content-Type: application/json模式选择
POST /v1/images/generations
此端点承载文生图与参考图生成/编辑,可用参数由模型决定。
| 模型 | 用途 | 请求提示词与图片 | 生成参数 | 成功响应中的图片 |
|---|---|---|---|---|
Doubao-seedream-4.0 | 文生图、参考图生成 | 顶层 prompt;参考图使用顶层 image | 顶层图片参数 | data[].url 或 data[].b64_json |
Doubao-seedream-4.5 | 文生图、参考图生成 | 顶层 prompt;参考图使用顶层 image | 顶层图片参数 | data[].url 或 data[].b64_json |
Doubao-Seedream-5.0-lite | 文生图、参考图生成 | 顶层 prompt;参考图使用顶层 image | 顶层图片参数 | data[].url 或 data[].b64_json |
doubao-seedream-5.0-pro | 文生图、参考图生成 | 顶层 prompt;参考图使用 image_urls | size、resolution | data[].url 或 data[].b64_json |
wan2.7-image | 文生图、编辑、序列生成 | 顶层 prompt;参考图使用 image_urls | n、size、resolution | data[].url 或 data[].b64_json |
wan2.7-image-pro | 文生图、编辑、序列生成 | 顶层 prompt;参考图使用 image_urls | n、size、resolution | data[].url 或 data[].b64_json |
gpt-image-2 / gpt-image-2-lite | 文生图、参考图 | 顶层 prompt;参考图使用 image_urls | n、size、resolution | data[](gpt-image-2-lite 为 data[].b64_json) |
gpt-image-2-ext | 文生图 | 顶层 prompt | n=1、size、quality | data[].url 或 data[].b64_json |
gpt-image-2.5-ext | 文生图、参考图 | 顶层 prompt | n=1、size、resolution、version | data[].b64_json |
gpt-image-2-official | 文生图、图生图、局部重绘 | 顶层 prompt;参考图使用 image_urls,遮罩使用 mask_url | n(1-4)、size、resolution、quality、background、output_format | data[].url |
gpt-image-2.6-flare / gpt-image-2.6-sunburst | 文生图、图生图、局部重绘 | 顶层 prompt;参考图使用 image_urls,遮罩使用 mask_url | n(1-4)、size、resolution、quality、complexity | data[].url |
nano-banana-2.1 | 文生图、参考图 | 顶层 prompt;参考图使用 image_urls | n(1-4)、size、resolution | data[].url |
nano-banana-2.1-ext | 文生图、参考图 | 顶层 prompt;参考图使用 image_urls | n=1、size、resolution | data[].url |
Seedream 的 data[] 返回 URL 还是 Base64 取决于请求的响应格式与模型线路。
POST /v1/images/edits
此端点用于 gpt-image-2-ext 单图编辑,使用 multipart 表单。
| 模型 | 参考图 | 输出数量 | 尺寸 | 成功响应中的图片 |
|---|---|---|---|---|
gpt-image-2-ext | 1 张,单数 image 字段 | 固定 1 张 | 支持比例 + 分辨率档位并转换为明确宽高;必须读取实际返回尺寸 | data[].url 或 data[].b64_json |
完整请求结构与示例见 GPT Image。
模型选型
| 需求 | 模型 | 详情 |
|---|---|---|
| 文生图、参考图、组图(OpenAI Images 响应) | Seedream 系列 | Seedream |
| 文生图、编辑、序列生成(扁平协议) | wan2.7-image / wan2.7-image-pro | Wan |
| 按张计费的 GPT Image | gpt-image-2 / -lite / -ext / gpt-image-2.5-ext | GPT Image |
| 按 token 计费、透明背景、局部重绘 | gpt-image-2-official | GPT Image 2 Official |
按 token 计费、complexity 可调 | gpt-image-2.6-flare / gpt-image-2.6-sunburst | GPT Image 2.6 |
| Nano Banana 系列 | nano-banana 等 | Nano Banana |
| Grok Imagine | grok-imagine-1.5 / -edit | Grok Imagine |
| 快速文生图 | z-image-turbo | 其他图片模型 |
请求结构
全部图片模型都使用顶层字段:model 与 prompt 为主要输入,参考图和生成选项位于请求体顶层。GPT Image、Nano Banana、Grok Imagine 和其他 OpenAI Images 扩展模型的具体请求和响应以 GPT Image、Nano Banana、Grok Imagine 和 其他图片模型 页面为准。
请求参数
公共规则(各模型的完整字段见模型页):
| 参数 | 类型 | 必填 | 默认 | 说明 |
|---|---|---|---|---|
model | string | 是 | - | 缺失或为空 → 400 invalid_request;不在 Key 白名单 → 403;平台没有该模型 → 404 |
n | integer | 否 | 1 | 输出张数;预扣按此值,省略或非正数按 1 |
size | string | 否 | 模型默认 | 尺寸;取值因模型而异 |
resolution | string | 否 | 模型默认 | 分辨率档位(1k / 2k / 4k 等),仅部分模型使用 |
image_urls | string[] | 否 | - | 参考图(扁平协议模型),数量上限因模型而异 |
- 请求体最多读取前 20 MiB,超出会被截断,通常因 JSON 不完整返回 400
invalid_request。 - 除上述平台读取的字段外,其余字段原样转发给模型服务校验,越界通常表现为
502 upstream_error。 - 仅
gpt-image-2-ext的/v1/images/edits使用multipart/form-data(单数image文件字段),其余模型一律 JSON。
响应
| 响应族 | 模型 | 图片位置 | 说明 |
|---|---|---|---|
| OpenAI Images | Seedream、Wan 2.7、GPT Image、Nano Banana、Grok Imagine、z-image-turbo | data[].url 或 data[].b64_json | 返回 URL 还是 Base64 因模型而异,以各模型页为准 |
- 成功响应体由模型服务透传,平台不向响应体注入请求 ID;请求 ID 位于响应头
X-Request-Id,排查时请一并保存。 - 响应中的
usage是模型服务用量,不是 credit 金额。
计费
图片按平台识别到的输出张数计费,不同模型单价见定价页。
- 请求前按模型、数量和尺寸预扣;成功后按可识别的实际图片数结算。
- 2xx 响应结构无法识别图片数时,按本地解析的提交数量结算。
- 模型服务非 2xx、没有可处理资源或重试耗尽,全额退款。
- 响应中的
usage是模型服务用量,不是 credit 金额。 - 失败与退款规则以错误码为准。
错误
错误体为统一信封(type 与 code 相同),不应依赖具体 message 文案编写分支:
{
"error": {
"type": "invalid_request",
"code": "invalid_request",
"message": "invalid image generation request",
"request_id": "req_..."
}
}| HTTP | code | 触发场景 | 处理 |
|---|---|---|---|
| 400 | invalid_request | 请求体不是合法 JSON、model 缺失或为空;模型与端点不匹配(如 gpt-image-2-lite、gpt-image-2.5-ext、gpt-image-2-official、gpt-image-2.6-* 只在 /v1/images/generations 提供;grok-imagine-1.5-edit 只在 /v1/images/edits 提供);各模型的参数校验失败(见模型页) | 按 message 修正请求,重试不会改变结果 |
| 400 | 上游 code | 模型服务返回 400 且带可识别的错误码时透传该 code | 按 message 修改请求 |
| 401 | invalid_api_key | API Key 缺失或无效 | 检查 Key |
| 402 | insufficient_credits | 余额不足以预扣本次请求 | 充值后重试 |
| 403 | model_not_allowed | Key 的模型白名单不允许该模型 | 调整白名单 |
| 404 | model_not_found | 未知模型名 | 对照模型列表 |
| 429 | media_concurrency_exceeded | 用户或 Key 的媒体并发超限,响应头带 Retry-After: 5 | 等待后重试 |
| 500 | internal_error | 计费、定价或请求构建异常 | 稍后重试 |
| 502 | upstream_error | 模型服务拒绝参数、素材或内容,或生成失败(模型服务错误不透出) | 视为暂时不可完成,带抖动退避重试;已预扣部分全额退款 |
| 503 | no_available_channel | 当前没有可处理该模型的服务资源;也可能在可重试失败后返回 | 稍后重试,已预扣部分全额退款 |
保留 request_id 便于排查,完整说明见错误码。
注意事项
- 响应中的图片 URL → 临时地址,收到成功响应后应尽快下载并保存到自己的持久存储;当前公开契约不承诺精确有效时长。
data[].b64_json→ 由调用方解码并保存。- 不同模型的响应体 → 结构不同,必须按模型解析,不能假设所有图片接口返回同一种响应体。