OpenAI Images API
通过 OpenAI 兼容的 Images API 使用 gpt-image-2 生成和编辑图片。
Base URL: https://api.unigateway.ai/v1
文生图
curl -sS -X POST "https://api.unigateway.ai/v1/images/generations" \
-H "Authorization: Bearer $UNIGATEWAY_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-image-2",
"prompt": "A clean product hero image for an AI gateway dashboard."
}' > response.json
Python
from openai import OpenAI; import base64
client = OpenAI(api_key="<YOUR_UNIGATEWAY_API_KEY>", base_url="https://api.unigateway.ai/v1")
r = client.images.generate(model="gpt-image-2", prompt="A hero image.")
with open("out.png","wb") as f: f.write(base64.b64decode(r.data[0].b64_json))
TypeScript
import OpenAI from "openai"; import fs from "fs";
const c = new OpenAI({ apiKey: process.env.UNIGATEWAY_API_KEY, baseURL: "https://api.unigateway.ai/v1" });
const r = await c.images.generate({ model: "gpt-image-2", prompt: "A hero image." });
fs.writeFileSync("out.png", Buffer.from(r.data[0].b64_json, "base64"));
多图生成
curl -sS -X POST "https://api.unigateway.ai/v1/images/generations" \
-H "Authorization: Bearer $UNIGATEWAY_API_KEY" \
-H "Content-Type: application/json" \
-d '{"model":"gpt-image-2","prompt":"Four icons: chat, image, video, search.","n":4,"size":"1024x1024","quality":"medium","output_format":"png"}' > batch.json
参数
| 参数 | 必填 | 取值 | 说明 |
|---|---|---|---|
model | 是 | gpt-image-2 | |
prompt | 是 | 文本 | |
size | 否 | 1024x1024、1536x1024、2048x2048、auto 等 | W×H,16 的倍数,最大 3840,比例 ≤ 3:1 |
quality | 否 | low / medium / high / auto | 默认 auto |
n | 否 | 1–10 | |
output_format | 否 | png / jpeg / webp | 默认 png |
output_compression | 否 | 0–100 | 仅 jpeg/webp |
background | 否 | opaque / auto | |
moderation | 否 | auto / low | |
stream | 否 | true | SSE 流式 |
partial_images | 否 | 0–3 | 流式中间图片数 |
user | 否 | string | 终端用户标识 |
流式生成
curl -sS -X POST "https://api.unigateway.ai/v1/images/generations" \
-H "Authorization: Bearer $UNIGATEWAY_API_KEY" \
-H "Content-Type: application/json" \
-d '{"model":"gpt-image-2","prompt":"A winter landscape.","stream":true,"partial_images":2}'
保存返回
jq -r '.data[0].b64_json' response.json | base64 -D > output.png # macOS
jq -r '.data[0].b64_json' response.json | base64 --decode > output.png # Linux
编辑 / 合成 / 重绘
均使用 POST /v1/images/edits,multipart/form-data。
单图编辑:
curl -sS -X POST "https://api.unigateway.ai/v1/images/edits" \
-H "Authorization: Bearer $UNIGATEWAY_API_KEY" \
-F "model=gpt-image-2" -F "image[]=@room.png" \
-F "prompt=将沙发改为米白色,其余保持不变。" \
-F "quality=high" -F "size=1024x1024" -F "output_format=png" > edit.json
多参考图合成:
curl -sS -X POST "https://api.unigateway.ai/v1/images/edits" \
-H "Authorization: Bearer $UNIGATEWAY_API_KEY" \
-F "model=gpt-image-2" \
-F "image[]=@item1.png" -F "image[]=@item2.png" -F "image[]=@item3.png" \
-F "prompt=将全部物品合成一张白底产品照。" \
-F "quality=high" -F "output_format=png" > composite.json
局部重绘:
curl -sS -X POST "https://api.unigateway.ai/v1/images/edits" \
-H "Authorization: Bearer $UNIGATEWAY_API_KEY" \
-F "model=gpt-image-2" -F "mask=@mask.png" -F "image[]=@src.png" \
-F "prompt=在 mask 区域画一只粉色火烈鸟。" > inpaint.json
Mask 要求:尺寸一致、格式相同、≤ 50 MB、含 alpha 通道。
响应格式
{ "created": 1710000000, "data": [{ "b64_json": "..." }] }
常见错误
| 状态码 | 原因 | 处理 |
|---|---|---|
400 | 参数错误 | 检查 prompt、size、mask |
401 | API Key 无效 | 检查 Authorization |
404 | 模型不可用 | 通过 GET /v1/models 确认 |
429 | 触发限流 | 退避重试 |
5xx | 服务异常 | 指数退避 |