跳转到主要内容

gpt-image-2-all API 接入文档

APIYI.com · 2026-04
gpt-image-2-all 是 APIYI 平台上线的一款 GPT 图像生成官逆模型。定价 $0.03/张,按次计费,约 30 秒出图,支持 文生图 / 多图编辑 / 自然语言改图,文字还原度高、内容限制少。 本文介绍如何通过 APIYI 的 HTTP API 调用这个模型。

一、模型概览

维度参数
模型名gpt-image-2-all
性质官方逆向(官逆)
定价$0.03 / 张,按次计费
速度约 30 秒
输出分辨率无显式 size 参数,由模型自适应
默认响应格式url(R2 CDN 加速链接),可自定义改为 b64_json
中文提示词✅ 支持
支持能力文生图、单图编辑、多图融合编辑、自然语言改图

二、认证

所有请求使用 Bearer Token 鉴权:
Authorization: Bearer <你的 APIYI 令牌>
令牌在 APIYI 控制台创建。本模型兼容所有常规类型的令牌。

三、端点一览

端点用途Content-Type推荐度
POST https://api.apiyi.com/v1/chat/completions对话式(文生图/改图/多轮/参考图)application/json主推
POST https://api.apiyi.com/v1/images/generations文生图(OpenAI Images 兼容)application/json备用
POST https://api.apiyi.com/v1/images/edits图片编辑(单图/多图)multipart/form-data备用
你也可以把 api.apiyi.com 替换为 b.apiyi.com / vip.apiyi.com 等平台提供的其他网关域名,响应行为一致。
推荐使用 /v1/chat/completions:请求结构简洁(文生图与带图编辑都用同一个端点),天然支持多轮对话与 Vision 格式的参考图。Images 系列端点主要服务于需要严格遵循 OpenAI Images API 契约的场景。

四、对话式端点 /v1/chat/completions主推

一个端点同时支持文生图、带参考图改图、多轮对话。结构与 OpenAI Chat/Vision 完全一致,零学习成本。

4.1 请求参数

参数类型必填说明
modelstring固定填 gpt-image-2-all
messagesarray标准 OpenAI messages 结构,见下方示例
⚠️ 不支持 streamtemperature 等文本模型专属参数(传了也不生效)。

4.2 请求示例(带参考图改图)

这是官方给出的完整例子——横版 16:9 背景改沙滩、主体保持不变
curl -X POST "https://api.apiyi.com/v1/chat/completions" \
     -H "Authorization: Bearer <你的令牌>" \
     -H "Content-Type: application/json" \
     -d '{
       "model": "gpt-image-2-all",
       "messages": [
         {
           "role": "user",
           "content": [
             {
               "type": "text",
               "text": "横屏 16:9,背景改成沙滩,主体动物不变"
             },
             {
               "type": "image_url",
               "image_url": {
                 "url": "https://r2cdn.copilotbase.com/r2cdn2/63dc13c6-58b6-48ae-b342-d67538405a2b.png"
               }
             }
           ]
         }
       ]
     }'

4.3 请求示例(纯文生图)

content 可以是字符串,也可以是单元素数组。两种写法等价:
# 写法 A:content 是字符串
-d '{"model":"gpt-image-2-all","messages":[{"role":"user","content":"横版 16:9 日落海边的老灯塔"}]}'

# 写法 B:content 是数组
-d '{"model":"gpt-image-2-all","messages":[{"role":"user","content":[{"type":"text","text":"横版 16:9 日落海边的老灯塔"}]}]}'

4.4 响应格式

生成的图片以 markdown 图片语法 嵌在 choices[0].message.content 里:
{
    "id": "chatcmpl-a7ebe118-b417-4159-9b0a-b2171190d2ff",
    "object": "chat.completion",
    "created": 1776832476,
    "model": "gpt-image-2-all",
    "choices": [
        {
            "index": 0,
            "message": {
                "role": "assistant",
                "content": "![image](https://r2cdn.copilotbase.com/r2cdn2/43cf960a-fbc2-42a8-b2cf-e87c19ed1e7d.png)\n\n"
            },
            "finish_reason": "stop"
        }
    ],
    "usage": {
        "prompt_tokens": 789,
        "completion_tokens": 1157,
        "total_tokens": 1946
    }
}
客户端处理建议:用正则 /!\[.*?\]\((https?:\/\/[^)]+)\)/ 抽取 URL,或直接让 markdown 渲染器处理。

4.5 多图融合

content 数组里追加多个 image_url 对象即可:
{
    "model": "gpt-image-2-all",
    "messages": [{
        "role": "user",
        "content": [
            { "type": "text", "text": "把图1的人物放进图2的场景,参考图3的画风" },
            { "type": "image_url", "image_url": { "url": "https://.../ref1.png" } },
            { "type": "image_url", "image_url": { "url": "https://.../ref2.png" } },
            { "type": "image_url", "image_url": { "url": "https://.../ref3.png" } }
        ]
    }]
}
image_url.url 支持两种形式:
  • HTTPS URL:https://...
  • Data URL:data:image/png;base64,...

五、文生图 /v1/images/generations(备用端点)

💡 建议优先用 §四 的 chat/completions。这条端点仅为需要严格遵循 OpenAI Images API 契约的客户端保留。

5.1 请求参数

参数类型必填说明
modelstring固定填 gpt-image-2-all
promptstring提示词,尺寸/比例/风格请在此描述
response_formatenumurl(默认,返回 R2 CDN 链接)或 b64_json
⚠️ 本模型 不接受 sizenqualityaspect_ratio 等字段。尺寸请写进 prompt

5.2 请求示例

curl -X POST 'https://api.apiyi.com/v1/images/generations' \
  -H 'Content-Type: application/json' \
  -H 'Authorization: Bearer <你的令牌>' \
  -d '{
    "prompt": "模型:gpt-image-2-all/给我生成一张一位女士直播截图在卖api",
    "model": "gpt-image-2-all"
  }'
想要指定比例或分辨率,直接写进 prompt,例如:
横版 16:9 电影画幅,黄昏时的海边老灯塔
竖版 9:16 手机壁纸,赛博朋克城市雨夜
1024×1024 方形 LOGO,极简猫咪线条

5.3 响应示例

url 模式(默认,R2 CDN 全球加速):
{
    "data": [
        {
            "url": "https://r2cdn.copilotbase.com/r2cdn2/00aaa9fb-756c-4119-a4a0-4a44fc75152b.png"
        }
    ]
}
b64_json 模式(需显式 "response_format": "b64_json"):
{
    "data": [
        {
            "b64_json": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAA..."
        }
    ]
}
⚠️ 兼容性提示b64_json 字段本身已经包含 data:image/png;base64, 前缀,可直接赋给 HTML <img src> 或写入文件;无需再手动拼接 data:image/...;base64,。与部分旧版 OpenAI 兼容模型不同,请留意。

六、图片编辑 /v1/images/edits(备用端点)

💡 同样建议优先用 §四 的 chat/completions。本端点使用 multipart/form-data,适合文件直传场景。

6.1 请求字段

字段类型必填说明
modeltextgpt-image-2-all
prompttext改图/融合的自然语言描述
image[]file参考图,可重复多次(数组字段)
response_formattexturl(默认)或 b64_json

6.2 单图编辑

curl -X POST 'https://api.apiyi.com/v1/images/edits' \
  -H 'Authorization: Bearer <你的令牌>' \
  -F 'model=gpt-image-2-all' \
  -F 'prompt=把背景换成海边黄昏' \
  -F 'response_format=url' \
  -F 'image[]=@./photo.png'

6.3 多图融合

curl -X POST 'https://api.apiyi.com/v1/images/edits' \
  -H 'Authorization: Bearer <你的令牌>' \
  -F 'model=gpt-image-2-all' \
  -F 'prompt=把图1的人物放进图2的场景,参考图3的画风' \
  -F 'response_format=b64_json' \
  -F 'image[]=@./ref1.png' \
  -F 'image[]=@./ref2.png' \
  -F 'image[]=@./ref3.png'
响应格式与 §五 /v1/images/generations 相同。

七、代码示例

本节优先给出 /v1/chat/completions(主推) 的示例。最后的 §7.5 给出 Images API 备用端点用法。

7.1 Python(主推:chat/completions)

import re, requests

resp = requests.post(
    "https://api.apiyi.com/v1/chat/completions",
    headers={"Authorization": "Bearer <你的令牌>"},
    json={
        "model": "gpt-image-2-all",
        "messages": [{
            "role": "user",
            "content": [
                {"type": "text", "text": "横屏 16:9,背景改成沙滩,主体动物不变"},
                {"type": "image_url", "image_url": {
                    "url": "https://r2cdn.copilotbase.com/r2cdn2/63dc13c6-58b6-48ae-b342-d67538405a2b.png"
                }}
            ]
        }]
    },
    timeout=300  # 保守值,吸收长尾 + 图片上传/下载耗时
)
content = resp.json()["choices"][0]["message"]["content"]
# 响应里图片 URL 嵌在 markdown 里,正则抽出来
m = re.search(r'!\[.*?\]\((https?://[^)]+)\)', content)
print(m.group(1) if m else content)

7.2 OpenAI SDK(推荐:零改动直连)

from openai import OpenAI

client = OpenAI(
    api_key="<你的令牌>",
    base_url="https://api.apiyi.com/v1"
)

resp = client.chat.completions.create(
    model="gpt-image-2-all",
    messages=[{
        "role": "user",
        "content": [
            {"type": "text", "text": "横版 16:9 国画风水墨山水"},
            # 可选:附参考图
            # {"type": "image_url", "image_url": {"url": "https://..."}}
        ]
    }]
)
# content 形如 "![image](https://r2cdn.copilotbase.com/.../xxx.png)\n\n"
print(resp.choices[0].message.content)

7.3 Node.js(主推:chat/completions)

const resp = await fetch('https://api.apiyi.com/v1/chat/completions', {
    method: 'POST',
    headers: {
        'Content-Type': 'application/json',
        'Authorization': 'Bearer <你的令牌>'
    },
    body: JSON.stringify({
        model: 'gpt-image-2-all',
        messages: [{
            role: 'user',
            content: [
                { type: 'text', text: '把背景换成太空,保留主体' },
                { type: 'image_url', image_url: { url: 'https://.../photo.png' } }
            ]
        }]
    })
});
const data = await resp.json();
const content = data.choices[0].message.content;
const imgUrl = (content.match(/!\[.*?\]\((https?:\/\/[^)]+)\)/) || [])[1];
console.log(imgUrl);

7.4 浏览器 JavaScript(主推:chat/completions)

// 纯文生图
const resp = await fetch('https://api.apiyi.com/v1/chat/completions', {
    method: 'POST',
    headers: {
        'Content-Type': 'application/json',
        'Authorization': 'Bearer <你的令牌>'
    },
    body: JSON.stringify({
        model: 'gpt-image-2-all',
        messages: [{ role: 'user', content: '1024x1024 方形 LOGO,极简猫咪线条' }]
    })
});
const { choices } = await resp.json();
const imgUrl = (choices[0].message.content.match(/!\[.*?\]\((https?:\/\/[^)]+)\)/) || [])[1];
document.getElementById('result').src = imgUrl;
上传本地文件(转 base64 dataURL 后作为 image_url):
const file = document.getElementById('fileInput').files[0];
const dataUrl = await new Promise(r => {
    const reader = new FileReader();
    reader.onload = () => r(reader.result);
    reader.readAsDataURL(file);
});

const resp = await fetch('https://api.apiyi.com/v1/chat/completions', {
    method: 'POST',
    headers: {
        'Content-Type': 'application/json',
        'Authorization': 'Bearer <你的令牌>'
    },
    body: JSON.stringify({
        model: 'gpt-image-2-all',
        messages: [{
            role: 'user',
            content: [
                { type: 'text', text: '把这张图改成水彩风' },
                { type: 'image_url', image_url: { url: dataUrl } }
            ]
        }]
    })
});

7.5 备用:Images API 端点

若因架构原因必须走 OpenAI Images 契约: Python 文生图:
resp = requests.post(
    "https://api.apiyi.com/v1/images/generations",
    headers={"Authorization": "Bearer <你的令牌>"},
    json={
        "model": "gpt-image-2-all",
        "prompt": "横版 16:9 日落海边的老灯塔",
        "response_format": "url"
    },
    timeout=300  # 保守值,吸收长尾 + 图片上传/下载耗时
)
print(resp.json()["data"][0]["url"])
Python 多图编辑(multipart):
with open("ref1.png", "rb") as f1, open("ref2.png", "rb") as f2:
    resp = requests.post(
        "https://api.apiyi.com/v1/images/edits",
        headers={"Authorization": "Bearer <你的令牌>"},
        data={"model": "gpt-image-2-all", "prompt": "把图1的人物换成图2的画风"},
        files=[("image[]", ("ref1.png", f1, "image/png")),
               ("image[]", ("ref2.png", f2, "image/png"))],
        timeout=300  # 保守值,吸收长尾 + 图片上传/下载耗时
    )
print(resp.json()["data"][0]["url"])

八、尺寸与比例控制建议

本模型没有 size 参数,尺寸通过 prompt 描述。以下写法经验证较稳定:
需求推荐写法
方形1024×1024 方图 / 1:1 方形构图
横版横版 16:9 / 宽屏 16:9 电影画幅
竖版竖版 9:16 / 手机海报 9:16
超宽横幅横幅 21:9 超宽银幕
经典印刷4:3 标准画幅 / 3:2 经典画幅
技巧:在 prompt 开头 描述尺寸/构图,模型遵循度更高。

九、错误码与重试

模型走 APIYI 标准错误体系,常见:
状态码含义建议
401令牌无效检查 Bearer Token
429限流/额度不足指数退避重试
5xx网关/后端临时错误重试 1–2 次
超时官逆高峰偶发 + 图片上传/下载长尾客户端设置 ≥ 300s 超时(保守值)
建议客户端
  • 请求超时 300 秒 起步(保守值;官方典型 30s,但叠加图片上传 / 下载、官逆高峰长尾后波动大)
  • 对 5xx 与超时做 指数退避重试(建议 2–3 次)
  • 记录 request-id(响应头)方便排查

十、最佳实践

  1. 默认走 chat/completions:结构最简洁,一个端点通吃文生图和带图改图。
  2. 尺寸写在 prompt 开头:模型遵循度更高。
  3. 文字/招牌类场景:该模型文字还原度是主要卖点,大胆使用中英文标注。
  4. 多图融合:多张 image_url 在 messages 里的顺序有意义,prompt 里可用「图1/图2/图3」指代。
  5. 图片 URL 提取:chat 端点响应里 URL 以 markdown ![image](url) 形式嵌入,用正则 /!\[.*?\]\((https?:\/\/[^)]+)\)/ 提取,或直接交给 markdown 渲染器。
  6. 超时配置:SDK 默认超时通常不足,请手动设为 300 秒(保守值,吸收图片上传 / 下载长尾)。
  7. 不要传无用字段sizenqualityaspect_ratiostreamtemperature 不会生效,传了可能触发参数校验错误。

十一、常见问题 FAQ

Q1:应该用哪个端点? A:默认选 /v1/chat/completions(§四)。一个端点通吃文生图和带图改图,结构跟 OpenAI Chat/Vision 完全一致,OpenAI SDK 直接跑。除非你的应用强依赖 OpenAI Images API 契约(如 client.images.generate()),才需要走 Images API 备用端点(§五、§六)。 Q2:chat 端点的响应怎么提取图片 URL? A:URL 嵌在 choices[0].message.content 的 markdown 图片语法里,形如 "![image](https://r2cdn.copilotbase.com/.../xxx.png)\n\n"。用正则 /!\[.*?\]\((https?:\/\/[^)]+)\)/ 提取即可。也可以直接把 content 交给 markdown 渲染器显示。 Q3:能同时生成多张图吗? A:本模型单次返回 1 张。如需 N 张,请客户端并行调用 N 次。 Q4:Images API 端点的 b64_json 前缀要不要自己加 data:image/png;base64, A:不要。本模型返回的 b64_json 字段已经带前缀,直接用即可。如果你的代码沿用了”先拼前缀”的老逻辑,会产出损坏的 data URL,请先做 startsWith('data:') 检测。 Q5:为什么提示词里写了 1024x1024 还是拿到别的尺寸? A:自适应模型对尺寸描述是”参考”不是”强制”。提升遵循度的写法:把尺寸/画幅词放在 prompt 最前面,并配合画幅风格词(如 电影画幅手机海报方形构图)。 Q6:参考图最大多大?格式要求? A:推荐 单张 ≤ 10MB,格式 png / jpg / webp。过大的图可能触发网关限制。chat 端点下参考图通过 image_url.url 传 HTTPS URL 或 base64 data URL 都可以。 Q7:能流式返回吗? A:本模型为一次性出图,不支持 stream 输出。即便传了 "stream": true 也会一次性返回完整内容。如果对响应延迟敏感,建议客户端显示”生成中”进度提示,并合理配置 300s 超时(保守值)。 Q8:能用 OpenAI 的官方 SDK 直连吗? A:可以。把 base_url 指向 https://api.apiyi.com/v1api_key 设为你的 APIYI 令牌即可。推荐用 client.chat.completions.create()(见 §7.2),而不是 client.images.generate()——因为后者会自动带上 size/n 参数,本模型不接受 size。

十二、技术支持

  • 控制台:https://api.apiyi.com
  • 文档反馈 / 问题排查:联系 APIYI 客服,附带请求 request-id

附:变更日志

  • 2026-04 首次发布 gpt-image-2-all 模型,定价 $0.03/张。