GPT Image 2
通过异步任务或 OpenAI 兼容图片端点,使用 GPT Image 2 生成和编辑图片。
GPT Image 2 支持文生图和图生图,最多可传 16 张参考图片,并提供 OpenAI Images 兼容端点。
模型信息
| 项目 | 值 |
|---|---|
| 模型 ID | gpt-image-2 |
| 异步任务端点 | POST /v1/router/task/create |
| 兼容端点 | POST /v1/images/generations、POST /v1/images/edits |
| 任务类型 | Txt2Img、Img2Img |
API Key 渠道
gpt-image-2 的 API Key 授权可选官方API 中转或订阅号直供。官方API 中转保持既有生成通道;订阅号直供改用上游原生 OpenAI Images generations / edits 接口,不再经过 LLM 对话和 image_generation 工具编排。调用方持续传入 "model":"gpt-image-2",无需也不应传入内部路由模型 ID;公开端点、请求字段和任务 ID 规则保持不变。其他媒体模型仍固定为官方API 中转。
任务流程
- 准备输入素材。 图生图输入必须是公网可直接访问的 HTTPS URL,最多 16 个。下文的 OpenAI 兼容编辑端点也支持 multipart 上传 png/jpg/webp 文件。本地文件、Base64 / Data URL 或已有远程 URL,可以通过 U-Token 通用币 文件上传 转为公开
fileUrl。不得直接传入asset://、s3://、file://或内网地址。 - 创建异步任务。 将下文说明的
task、model和input字段发送到POST /v1/router/task/create。所有受支持的媒体模型都会立即返回tsk_*格式的平台task_id。GPT Image 2 会忽略兼容旧客户端传入的顶层mode。可选的callback_url会在任务结束时接收签名回调,见媒体任务回调。这个地址不会转发给上游。 - 轮询任务。 保存返回的 ID,并每 3~5 秒调用一次
GET /v1/router/tasks/{task_id},直到任务进入终态。如需停止排队中或处理中的任务,将{"task_id":"tsk_..."}发送到POST /v1/router/task/stop。API Key 只能查询或取消同一买家创建的任务;订阅号直供的 GPT Image 2 任务由网关本地管理,不支持通过停止接口取消。 - 按需使用 OpenAI 兼容端点。 文生图请求发送到
POST /v1/images/generations;上传本地 multipart 图片进行图生图时使用POST /v1/images/edits。两个接口都不预扣:官方API 中转保持既有终态回调流程,订阅号直供直接等待上游原生 Images 响应。图片转存和 Token 结算成功后才返回结果;response_format="url"返回 URL,response_format="b64_json"返回 Base64。任务、转存或结算失败时返回 OpenAI 兼容错误,最长等待 30 分钟。
| 状态 | 含义 |
|---|---|
0 | 排队中——已提交,等待调度 |
1 | 处理中——模型正在生成 |
2 | 已完成——结果 URL 通常位于 results[].urls;cost 是你的积分价格 |
3 | 失败——不记录 Token 费用 |
4 | 已取消——不记录 Token 费用 |
查询异步任务时,失败响应统一为中性错误,不暴露上游详情。请使用 Provider error (request id: aitk-...) 中的 request id 关联服务端日志;不要依赖 error_message、fail_reason 或 message 获取上游诊断。GPT Image 2 的所有入口都只按成功终态的 Token 用量计费;失败或取消不会产生 Token 费用。
所有媒体请求都要求媒体可用余额至少为 1 积分;可用余额已扣除图片挂账。若结算时完整后付费金额超过可用余额,网关会收取当时可用金额(至少 1 积分)并交付结果;若可用余额不足 1 积分,则等待后续重试结算且不会交付结果。
文生图和图生图都使用 model="gpt-image-2"。通用异步任务端点会忽略顶层 mode,并从 input 读取原生图片参数。input.resolution 可省略、设为 auto,或使用 1024x1024 这类像素尺寸;input.quality 支持 low、medium、high、auto,默认 auto。异步任务不支持 input.aspect_ratio,传入会返回 HTTP 400。图生图 images 最多接受 16 个公网 HTTPS URL。
这些字段适用于 POST /v1/router/task/create。下方 OpenAI 兼容端点使用对应的官方字段名,例如
size、quality、background 和 output_format。
任务请求参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
task | string | 是 | 文生图用 Txt2Img,图生图用 Img2Img |
model | string | 是 | 固定为 gpt-image-2 |
mode | string | 否 | 兼容旧客户端;GPT Image 2 会忽略此字段 |
input.prompt | string | 是 | 图片生成或编辑提示词 |
input.images | string[] | 图生图是 | 1–16 个公网 HTTPS 图片 URL |
input.resolution | string | 否 | auto 或 1024x1024 这类像素尺寸,默认 auto |
input.aspect_ratio | string | 否 | 不支持;传入会返回 HTTP 400 |
input.quality | string | 否 | low、medium、high 或 auto,默认 auto |
input.background | string | 否 | auto、opaque 或 transparent |
input.output_format | string | 否 | png、jpg 或 webp;订阅号直供作为原生 Images 参数传递,官方API 中转保持既有输出处理 |
callback_url | string | 否 | 可选的公网 HTTPS 回调地址。见媒体任务回调。 |
异步任务计费
所有 GPT Image 2 请求都只在成功终态后按 Token 用量计费。以下价格单位均为 USD / 1M tokens,当前两个 API Key 渠道相同:
| 渠道 | 文本输入 | 缓存文本输入 | 图片输入 | 缓存图片输入 | 图片输出 |
|---|---|---|---|---|---|
官方API 中转(standard) | $5.000000 | $1.250000 | $8.000000 | $2.000000 | $30.000000 |
订阅号直供(flex) | $5.000000 | $1.250000 | $8.000000 | $2.000000 | $30.000000 |
网关完成 Token 金额计算后,再应用现有平台结算、代理报价和用户价格系数。
异步任务不提供 response_format;任务查询固定返回平台 OSS URL。官方API 中转由回调处理器或后台轮询器在结算前把上游 Base64 转存 OSS;订阅号直供由原生 Images 执行器直接处理响应,并同样在结算前将 URL 或 Base64 结果转存 OSS。完整输入、缓存输入和输出 Token 写入用量记录;任务落库与 GET /v1/router/tasks/{task_id} 使用同一精简结构,只返回 task_id、status、results[].urls 和成功后的 cost。查询只读取已保存结果,不会现场上传 Base64。转存或结算失败时结果不可交付、不可扣费,由查询或后台轮询幂等重试结算。
异步任务请求示例
# 文生图
curl https://u-token.ai/v1/router/task/create \
-H "Authorization: Bearer sk-你的KEY" -H "content-type: application/json" \
-d '{"task":"Txt2Img","model":"gpt-image-2",
"input":{"prompt":"a surreal painting of a banana in space","resolution":"1024x1024","quality":"high","background":"transparent"}}'# 图生图
curl https://u-token.ai/v1/router/task/create \
-H "Authorization: Bearer sk-你的KEY" -H "content-type: application/json" \
-d '{"task":"Img2Img","model":"gpt-image-2",
"input":{"prompt":"换成水彩风格","images":["https://输入图.png"],"resolution":"1024x1024","quality":"medium","background":"transparent"}}'任务创建响应
异步端点会立即返回平台 tsk_* ID。订阅号直供的创建响应如下;官方API 中转仍保留既有上游成功响应字段,并将其中任务 ID 改写为平台 ID:
{
"code": 200,
"message": "success",
"task_id": "tsk_mabc1234_0123456789abcdef01234567"
}保存 task_id,并每 3~5 秒请求 GET /v1/router/tasks/{task_id}。
异步任务尚未完成可交付结果时,results 为空且不返回 cost:
{
"task_id": "tsk_mabc1234_0123456789abcdef01234567",
"status": 1,
"results": []
}异步任务成功并完成 Token 结算后,查询使用以下精简任务结构。cost 是应用平台结算、代理报价和用户价格系数后的实际积分费用:
{
"task_id": "tsk_mabc1234_0123456789abcdef01234567",
"status": 2,
"results": [{ "urls": ["https://assets.example.com/result.png"] }],
"cost": 1.25
}失败和取消任务的状态分别为 3、4,不返回 cost,results 通常为空;失败响应统一为中性错误,不暴露上游详情。请使用 Provider error (request id: aitk-...) 中的 request id 关联服务端日志。
OpenAI 兼容端点
POST /v1/images/generations 接受现有 OpenAI Images 文生图请求字段。POST /v1/images/edits 支持 multipart 图生图请求,也支持 JSON 请求中的 images 数组:每项为 {"image_url":"https://..."},可传 1–16 张公网 HTTP(S) 图片并按数组顺序作为参考图。multipart 的 image / image[] 字段仍支持本地 png/jpg/webp 文件,本地图片会先临时上传后再用于生成。订阅号直供执行 edits 时,网关会安全下载这些公网或 OSS URL,并在校验重定向、地址、图片格式和 30MB 限制后按上游协议提交。
两个接口均不预扣。官方API 中转保持既有任务回调流程;订阅号直供则分别调用上游原生 images/generations 和 images/edits,直接等待其响应,不再经过 LLM 对话或图片工具。成功响应的顶层 size、quality、background、output_format 和 usage 等字段会保留,data[] 中的图片先转存 OSS,完成 Token 结算后才交付;响应不增加平台 task_id、status 或 cost 字段。失败时仍返回 OpenAI 兼容 error 对象。
model 填 gpt-image-2。size 可为 "auto"、"1024x1024"、"1536x1024" 或其他 5 个值。
size 表示生成图片的尺寸。支持使用任意 WIDTHxHEIGHT 格式的分辨率,例如 1536x864。宽度和高度都必须能被 16 整除,请求的宽高比必须在 1:3 到 3:1 之间。高于 2560x1440 的分辨率属于实验性能力,最大支持分辨率为 3840x2160。请求尺寸还必须满足模型当前的总像素数和边长限制。GPT 图片模型支持的标准尺寸包括 1024x1024、1536x1024 和 1024x1536。
| 参数 | 生成 | 编辑 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|---|
model | JSON 字段 | multipart 字段 | 否 | gpt-image-2 | 只支持 gpt-image-2 |
prompt | JSON 字段 | multipart 字段 | 是 | - | 非空图片生成或编辑提示词 |
size | JSON 字段 | multipart 字段 | 否 | auto | "auto"、GPT 图片标准尺寸,或满足上述整除、宽高比、总像素数和边长限制的任意 WIDTHxHEIGHT 值 |
quality | JSON 字段 | multipart 字段 | 否 | 省略 | 订阅号直供作为原生参数透传;最终仍按实际 usage Token 计费 |
background | JSON 字段 | multipart 字段 | 否 | 省略 | auto、opaque 或 transparent;订阅号直供作为原生参数透传 |
output_format | JSON 字段 | multipart 字段 | 否 | 省略 | 订阅号直供作为 OpenAI Images 原生字段透传;官方API 中转保持既有输出处理 |
n | JSON 字段 | multipart 字段 | 否 | 1 | 当前只支持 1 |
response_format | JSON 字段 | multipart 字段 | 否 | url | url 返回图片链接;订阅号直供会先将所有上游图片转存 OSS,b64_json 返回转存图片的标准 Base64;转存失败不交付结果 |
images | - | JSON 字段 | 编辑必填(二选一) | - | 1–16 项 {"image_url":"https://..."},仅允许公网 HTTP(S) URL,按数组顺序作为参考图 |
image / image[] | - | 文件字段 | 编辑必填(二选一) | - | 1–16 个 png / jpg / webp 文件,每个不超过 30MB |
mask | - | - | - | - | 当前不支持,传入会返回 HTTP 400 |
兼容端点 Token 计费
POST /v1/images/generations 与 POST /v1/images/edits 均不预扣。官方API 中转从成功终态回调的 result.usage 结算,订阅号直供从原生 Images 响应的 usage 结算;文本输入、图片输入和图片输出分别使用上方对应 Token 单价,编排 LLM Token 固定为 0。网关按 $1 = 100 credits 换算官方美元金额,再应用现有平台结算、代理报价和用户价格系数。usage 缺失、分项不一致、含非零文本输出 Token、转存失败、可用余额不足 1 积分或用量入账失败时不会交付成功结果。
每次调用都会按实际小数积分精确写入用量。兼容图片接口的未结算消费累计达到至少 10 credits 后,多条用量会合并为一个整数积分钱包账单;小数尾数保留在最早一条尚未结清的记录中,并结转到下一批。控制台「用量」页的「已结算」列显示每条记录已进入成功钱包账单的金额;结算前为 0,一批中的最后一条记录可能只结算部分金额。
官方API 中转最长等待 30 分钟的可入账终态回调;等待超时时返回 HTTP 504,任务继续运行并可通过 GET /v1/router/tasks/{task_id} 查询,后续成功回调仍会扣费。订阅号直供最长等待 30 分钟的原生 Images 响应;上游非 2xx 或超时返回 HTTP 424 的 OpenAI 兼容错误,对应异步任务进入失败终态。对于由兼容端点创建的任务,查询读取已落库的 URL 形态结果,不会重复执行同步响应的 b64_json 转换。
# 文生图生成
curl https://u-token.ai/v1/images/generations \
-H "Authorization: Bearer sk-你的KEY" -H "content-type: application/json" \
-d '{"model":"gpt-image-2","prompt":"a surreal painting of a banana in space","background":"transparent"}'# 文生图:直接读取图片响应
import requests
result = requests.post(
"https://u-token.ai/v1/images/generations",
headers={"Authorization": "Bearer sk-你的KEY"},
json={"model": "gpt-image-2", "prompt": "a red apple", "size": "1024x1024", "background": "transparent"},
timeout=31 * 60,
).json()
print(result["data"][0]["url"], result["usage"])JSON 或 multipart 请求都可将 response_format 设为 b64_json,以直接取得图片原始字节的 Base64。订阅号直供会先将每张上游图片转存 OSS,再从同一份已校验字节返回无 Data URL 前缀、无换行的标准 Base64;任一图片下载、解码或转存失败时不会提前交付。网关的图片转存不产生额外计费。
默认或 response_format="url" 时,兼容接口返回 URL 形态的图片响应;订阅号直供的 URL 始终指向平台 OSS:
{
"background": "opaque",
"created": 1785408333,
"output_format": "png",
"quality": "medium",
"size": "1672x941",
"data": [
{
"url": "https://assets.example.com/result.png"
}
],
"usage": {
"input_tokens": 15,
"input_tokens_details": {
"cached_tokens": 0,
"image_tokens": 0,
"text_tokens": 15
},
"output_tokens": 196,
"output_tokens_details": {
"image_tokens": 196,
"text_tokens": 0
},
"total_tokens": 211
}
}# 图生图 edits;image 最多重复传 16 个。
curl https://u-token.ai/v1/images/edits \
-H "Authorization: Bearer sk-你的KEY" \
-F image=@input.png -F prompt="换成水彩风格" -F size=1024x1024 \
-F background=transparent# 图生图:JSON 多图 URL,按 images 数组顺序作为参考图。
curl https://u-token.ai/v1/images/edits \
-H "Authorization: Bearer sk-你的KEY" \
-H "content-type: application/json" \
-d '{"model":"gpt-image-2","images":[{"image_url":"https://example.com/subject.png"},{"image_url":"https://example.com/style.jpg"}],"prompt":"保留主体,并应用参考图的风格","size":"1024x1024"}'# 图生图 edits:直接读取图片响应
import requests
with open("input.png", "rb") as image:
result = requests.post(
"https://u-token.ai/v1/images/edits",
headers={"Authorization": "Bearer sk-你的KEY"},
data={
"model": "gpt-image-2",
"prompt": "换成水彩风格",
"size": "1024x1024",
"background": "transparent",
},
files={"image": ("input.png", image, "image/png")},
timeout=31 * 60,
).json()
print(result["data"][0]["url"], result["usage"])