图片生成

POST /v1/images/generations

OpenAI 兼容的图片生成接口,当前主力模型为 gpt-image-2。支持同步异步两种模式:

  • 同步:一次请求阻塞到出图,直接返回图片(适合低并发、即时场景)。
  • 异步:提交后立即拿到任务 ID,再轮询取结果(适合大批量、避免长连接超时)。

同步:POST /v1/images/generations

请求参数

参数 类型 必填 说明
model string 模型 ID,如 gpt-image-2
prompt string 图片描述提示词。
n integer 生成数量,当前仅支持 1(默认 1)。
size string 图片尺寸,如 1024x10241536x1024(gpt-image-2 支持;部分模型不支持)。
quality string 画质参数(gpt-image-2 支持;部分模型不支持)。

注意:gpt-image-2 不接受 response_format 参数,网关会自动忽略它,无需传入。

请求示例

cURL

curl https://api.openbili.com/v1/images/generations \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -d '{
    "model": "gpt-image-2",
    "prompt": "a red fox running in snow, studio lighting",
    "n": 1
  }'

Python

import openai
 
client = openai.OpenAI(
    api_key="YOUR_API_KEY",
    base_url="https://api.openbili.com/v1",
)
 
resp = client.images.generate(
    model="gpt-image-2",
    prompt="a red fox running in snow, studio lighting",
    n=1,
)
b64 = resp.data[0].b64_json   # base64 编码的 PNG

响应

返回 base64 内联的图片:

{
  "created": 1730000000,
  "data": [
    {
      "b64_json": "iVBORw0KGgoAAAANSUhEUgAA...",
      "revised_prompt": "..."
    }
  ]
}

前端展示时加前缀:data:image/png;base64,<b64_json>


异步:POST /v1/images/generations/async

请求体与同步完全一致(model / prompt / n / size / quality),但立即返回任务 ID,不阻塞出图。适合批量生成或客户端不希望长连接等待的场景。

1. 提交任务

curl https://api.openbili.com/v1/images/generations/async \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -d '{
    "model": "gpt-image-2",
    "prompt": "a red fox running in snow",
    "n": 1
  }'

返回 202 Accepted:

{
  "id": "nximg_xxxxxxxx",
  "status": "queued",
  "created": 1730000000,
  "object": "image.generation.async"
}

2. 轮询结果:GET /v1/images/generations/async/{job_id}

curl https://api.openbili.com/v1/images/generations/async/nximg_xxxxxxxx \
  -H "Authorization: Bearer YOUR_API_KEY"

status 取值:queuedprocessingsucceeded(或 failed)。建议每 1–2 秒轮询一次,通常数秒到数十秒完成。

进行中:

{ "id": "nximg_xxxxxxxx", "status": "processing", "created": 1730000000 }

完成:

{
  "id": "nximg_xxxxxxxx",
  "status": "succeeded",
  "created": 1730000000,
  "data": [
    {
      "url": "https://<bucket>.r2.cloudflarestorage.com/...&X-Amz-Signature=...",
      "revised_prompt": "..."
    }
  ]
}

失败:

{
  "id": "nximg_xxxxxxxx",
  "status": "failed",
  "created": 1730000000,
  "error": { "type": "upstream_error", "message": "generation failed", "code": "..." }
}

关于 url:与同步返回内联 base64 不同,异步成功时返回一个带签名的下载链接(有效期约 2 小时)。请在有效期内下载/转存,过期需重新生成。失败任务不计费。

参数说明

字段 说明
id 任务 ID(nximg_ 前缀),用于轮询。与你的 API Key 所属组织绑定,他人无法访问。
status queued / processing / succeeded / failed
data[].url 成功时的图片下载链接(presigned,约 2h 有效)。
data[].revised_prompt 模型改写后的提示词(可能为空)。