优云API 优云API 文档

GPT-Image-2 使用指南

GPT-Image-2 是 YYCode 提供的 AI 图片生成服务,使用 gpt.yycode.net 独立图片接口完成文生图、图生图和异步任务查询。


准备工作

1. 创建 API Key

前往 YYCode 令牌管理页面,创建或复制 API Key。

创建完成后请妥善保存,后续所有请求都需要在 Header 中携带此 Key。

2. 接口地址

GPT-Image-2 使用独立 Base URL:

https://gpt.yycode.net

所有图片请求同时携带 YYCode 中转站地址:

x-demo-base-url: https://yycode.net

AI Agent 一键接入

使用 Claude Code、Codex 等支持 Skills 的 AI 编码工具时,直接将以下内容发送给 AI:

请为这个项目接入 YYCode GPT-Image-2 图片生成服务。

Base URL:
https://gpt.yycode.net

文生图:
POST /api/images/generate

图生图:
POST /api/images/edit

查询任务:
GET /api/jobs/{jobId}

请求 Header:
x-demo-base-url: https://yycode.net
x-demo-api-key: YOUR_API_KEY
x-demo-async: 1

文生图使用 JSON 请求体;图生图使用 multipart/form-data,并用 image 字段上传原图。
提交任务返回 jobId 后,每 6 秒查询 /api/jobs/{jobId}。
返回 status=succeeded 后读取 images[].b64 和 images[].mimeType,将 base64 保存为图片文件。

AI Agent 会按照上述接口、Header、轮询方式和图片保存方式完成客户端代码接入。


API 详细说明

文生图(Text to Image)

提交生成任务:

curl 'https://gpt.yycode.net/api/images/generate' \
  -H 'Content-Type: application/json' \
  -H 'x-demo-base-url: https://yycode.net' \
  -H 'x-demo-api-key: YOUR_API_KEY' \
  -H 'x-demo-async: 1' \
  -d '{
    "model": "gpt-image-2",
    "prompt": "一只可爱的猫咪在阳光下打盹",
    "n": 1,
    "size": "1024x1024"
  }'

成功响应:

{
  "ok": true,
  "pending": true,
  "jobId": "job_1782732290788_3",
  "meta": {
    "requestId": "req_1782732290788_1"
  }
}

查询任务结果

job_1782732290788_3 替换为提交任务时返回的 jobId

curl 'https://gpt.yycode.net/api/jobs/job_1782732290788_3'

任务处理中:

{
  "ok": true,
  "pending": true,
  "jobId": "job_1782732290788_3",
  "status": "running",
  "meta": {
    "requestId": "req_1782732290788_1"
  }
}

任务完成:

{
  "ok": true,
  "images": [
    {
      "b64": "iVBORw0KGgo...",
      "filename": null,
      "mimeType": "image/png"
    }
  ],
  "usage": null,
  "raw": {},
  "meta": {
    "requestId": "req_1782732290788_1"
  },
  "jobId": "job_1782732290788_3",
  "status": "succeeded"
}

最终图片数据为 images[0].b64,图片格式为 images[0].mimeType。前端展示时使用 data:${mimeType};base64,${b64},下载时将 base64 解码为图片文件。


图生图(Image to Image)

图生图使用 multipart/form-data 上传原图,并通过 image 字段提交图片文件。

上传一张原图:

curl 'https://gpt.yycode.net/api/images/edit' \
  -H 'x-demo-base-url: https://yycode.net' \
  -H 'x-demo-api-key: YOUR_API_KEY' \
  -H 'x-demo-async: 1' \
  -F 'model=gpt-image-2' \
  -F 'prompt=把这张图改成水彩风格' \
  -F 'n=1' \
  -F 'size=1024x1024' \
  -F '[email protected]'

上传多张原图:

curl 'https://gpt.yycode.net/api/images/edit' \
  -H 'x-demo-base-url: https://yycode.net' \
  -H 'x-demo-api-key: YOUR_API_KEY' \
  -H 'x-demo-async: 1' \
  -F 'model=gpt-image-2' \
  -F 'prompt=参考这些图片生成统一的赛博朋克风格海报' \
  -F 'n=1' \
  -F 'size=1536x1024' \
  -F '[email protected]' \
  -F '[email protected]'

图生图注意事项:

  • image 为图片文件字段,上传多张图片时重复传入 image
  • mask 为图片蒙版字段,用于局部编辑
  • 请求头不手动设置 Content-Type,由 curl 或 SDK 自动生成 multipart boundary
  • 图生图任务同样返回 jobId,并通过 GET /api/jobs/{jobId} 查询结果

参数说明

参数 说明
model 固定填写 gpt-image-2
prompt 图片生成或图片编辑提示词
n 生成图片数量,范围 110
size 输出图片尺寸,格式为 <width>x<height>
output_format 输出格式,支持 pngjpegwebp
quality 图片质量,支持 autolowmediumhighstandardhd
background 背景模式,支持 autoopaque
image 图生图原图文件字段,支持重复传入
mask 图生图蒙版文件字段,用于局部编辑

size 支持

size 使用真实像素尺寸,宽高均为 16 的倍数,最长边不超过 3840,总像素不超过 3840x2160

尺寸 说明
1024x1024 正方形图片
1536x1024 横向图片
1024x1536 竖向图片
1920x1080 横屏高清图片
1080x1920 竖屏高清图片
3840x2160 4K 横屏图片
2160x3840 4K 竖屏图片

Python 示例

import base64
import time

import requests


# 替换为你的 YYCode API Key
base_url = "https://gpt.yycode.net"
api_key = "YOUR_API_KEY"

headers = {
    "Content-Type": "application/json",
    "x-demo-base-url": "https://yycode.net",
    "x-demo-api-key": api_key,
    "x-demo-async": "1",
}

# 步骤一:提交文生图任务
submit = requests.post(
    f"{base_url}/api/images/generate",
    headers=headers,
    json={
        "model": "gpt-image-2",
        "prompt": "一只可爱的猫咪在阳光下打盹",
        "n": 1,
        "size": "1024x1024",
    },
    timeout=30,
)

submit.raise_for_status()
job_id = submit.json()["jobId"]
print(f"任务已提交: {job_id}")

# 步骤二:每 6 秒轮询查询任务状态
while True:
    result = requests.get(
        f"{base_url}/api/jobs/{job_id}",
        timeout=30,
    )
    result.raise_for_status()

    data = result.json()

    if data.get("pending"):
        print("任务处理中...")
        time.sleep(6)
        continue

    if data.get("status") == "succeeded":
        # 步骤三:将 base64 图片保存为本地文件
        image = data["images"][0]
        mime_type = image.get("mimeType") or "image/png"
        suffix = mime_type.split("/")[-1].replace("jpeg", "jpg")
        filename = f"{job_id}.{suffix}"

        with open(filename, "wb") as file:
            file.write(base64.b64decode(image["b64"]))

        print(f"图片生成完成: {filename}")
        break

    raise RuntimeError(data.get("error", {}).get("message", "任务失败"))

计费说明

  • 图片生成消耗 x-demo-api-key 所属 YYCode 账户额度
  • 提交任务返回 jobId 表示后台任务已创建
  • 任务状态为 succeeded 且返回 images 后,本次图片生成完成
  • 任务状态为 failed 时,响应中返回错误信息
  • 账户用量记录在 YYCode 后台展示

图片返回说明

YYCode 图片接口返回标准化 images 数组。每张图片包含 b64mimeType 字段,接入方使用 b64 解码保存文件,或拼接 data:${mimeType};base64,${b64} 在前端展示。

整篇文档已复制