優雲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 フィールドで画像ファイルを送信します。

元画像を 1 枚アップロード:

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 生成画像数。範囲は 1 から 10
size 出力画像サイズ。形式は <width>x<height>
output_format 出力形式。pngjpegwebp に対応
quality 画像品質。autolowmediumhighstandardhd に対応
background 背景モード。autoopaque に対応
image 画像から画像の元画像ファイルフィールド。繰り返し指定可能
mask 画像から画像のマスクファイルフィールド。部分編集に使用

size 対応

size は実ピクセルサイズを使用します。幅と高さはいずれも 16 の倍数で、最長辺は 3840 以下、総ピクセル数は 3840x2160 以下です。

サイズ 説明
1024x1024 正方形画像
1536x1024 横向き画像
1024x1536 縦向き画像
1920x1080 横長 HD 画像
1080x1920 縦長 HD 画像
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",
}

# ステップ 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}")

# ステップ 2: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":
        # ステップ 3: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 が返ると、バックグラウンドタスクが作成されたことを意味します
  • タスク状態が succeededimages が返れば、今回の画像生成は完了です
  • タスク状態が failed の場合、レスポンスにエラー情報が返ります
  • アカウント利用記録は YYCode バックエンドに表示されます

画像レスポンス説明

YYCode 画像インターフェースは標準化された images 配列を返します。各画像には b64mimeType フィールドが含まれます。接続側は b64 をデコードしてファイル保存するか、data:${mimeType};base64,${b64} を組み立ててフロントエンドで表示します。

ページ全体をコピーしました