API 参考

图片:异步任务

POST/v1/images/tasks
GET/v1/images/tasks/{task_id}
GET/v1/images/tasks/{task_id}/content

异步图片生成,目录里的图片模型都走这个接口。提交后返回 task_id;轮询状态接口,再从 /content 读取长期有效的结果 URL;也可以注册回调,省去轮询。

#请求参数

  • modelstring必填

    异步图片模型 ID,如 gpt-image-2。同步模型会拒绝该端点。

  • promptstring必填

    要画什么。

  • sizestring可选

    宽高比,如 "16:9",大多数图片模型都用这种写法,可选值见模型卡。部分老模型也接受像素写法 WIDTHxHEIGHT。

  • resolutionstring可选

    输出分辨率档位,如 "1K"、"2K"、"4K",模型卡里有这个参数时才能用;也影响计费档位。

  • qualitystring可选

    厂商质量级别(如 standard / hd)——同样是计费档位维度。

  • ninteger可选

    生成张数(按张数叠加计费)。

  • imagesarray可选

    要修改或参照的图片,填网址或 data URI。每个模型最多收几张,以模型卡为准。

  • maskstring可选

    只重画第一张参考图上的一块区域,见下方「只改图片的一部分」。模型卡里列出 mask 的模型才收这个字段;写成 mask_url 也一样。

  • webhook_urlstring可选

    任务到达终态时回调的 HTTPS 地址——回调契约见视频指南。

  • webhook_secretstring可选

    设置后,回调带 X-Xiaoxiang-Signature: sha256=hex(HMAC-SHA256(body, secret))。

每个模型的参数不一样

每个模型能填哪些字段、取哪些值,以模型卡为准。gpt-image-2.5-ext 的 size 填宽高比,再配 resolution;像 2560x1088 这样的像素尺寸会换成最接近的宽高比和分辨率(21:9、2K)。它不能设置 background:"auto" 会被忽略,其他值会被拒绝。每次只出一张图,也不能选 version:不传,或者传 "flare"。

字段名可能因模型家族而异

任务状态载荷来自上游厂商的原样上报;具体字段以实际响应为准,可依赖的是跨厂商稳定的 task_id、status 和 /content 端点。

#只改图片的一部分

在 images 里放原图,再传一个 mask:只重画蒙版圈出的区域,其他地方保持不变。在 prompt 里写清那块要变成什么。目前 gpt-image-2.5-flare 和 gpt-image-2.5-sunburst 支持;模型卡上显示为 mask 字段。

curl https://www.aisplice.store/v1/images/tasks \
  -H "Authorization: Bearer sk-YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gpt-image-2.5-flare",
    "prompt": "Replace the mug with a glass of orange juice; keep everything else",
    "images": ["https://example.com/desk.png"],
    "mask": "https://example.com/desk-mask.png",
    "resolution": "1K"
  }'

蒙版怎么做

用带透明通道的 PNG:完全透明的像素就是要重画的地方,其余保留。尺寸必须和第一张参考图的像素尺寸完全一样(不是输出尺寸),不超过 4 MB。每次只能传一张蒙版;有多张参考图时,只作用在第一张上。用 gpt-image-2.5 模型时不要传 size,结果会保持原图的比例。
  • 400 invalid_request传了 mask 但没有参考图,或者这个模型不收 mask(gpt-image-2.5-ext 会返回 "mask is not supported on Ext")。

完整错误码表 →

#相关错误码

  • 404 not_found路径不存在、模型名不存在,或 task_id 已过期 / 不属于当前账号。
  • 401Bearer 令牌无效或缺失。这条路径不带 error.code,请按状态码判断。
  • 402 insufficient_user_quota钱包余额不足以覆盖预扣估算。
  • 429密钥级限流。响应体为空,按 Retry-After 等待。若 429 带有 insufficient_user_quota,那是每日消费上限,不是限流。
  • 503 model_not_found模型名不存在,或当前没有健康渠道可以服务它。

完整错误码表 →

#请求示例

# 1. submit
curl https://www.aisplice.store/v1/images/tasks \
  -H "Authorization: Bearer sk-YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model": "gpt-image-2.5-ext", "prompt": "A red paper crane on a desk", "size": "16:9", "resolution": "1K"}'

# 2. poll every 3s until a terminal status
curl https://www.aisplice.store/v1/images/tasks/$TASK_ID -H "Authorization: Bearer sk-YOUR_KEY"

# 3. fetch persistent result URLs
curl https://www.aisplice.store/v1/images/tasks/$TASK_ID/content -H "Authorization: Bearer sk-YOUR_KEY"

#响应

response.json
// POST /v1/images/tasks
{"task_id": "task_xxx", "status": "queued"}

// GET /v1/images/tasks/{task_id}
{"task_id": "task_xxx", "status": "in_progress", "progress": "60%"}

// GET /v1/images/tasks/{task_id}/content — after completion
{"created": 1720000000, "data": [{"url": "https://…"}]}

还是没解决?

把请求 ID 或报错信息发给我们,我们来查。