canonical_url: https://yycode.net/docs/ja/gpt-image-quickstart
lang: ja
updated_at: 2026-07-04T13:33:48.616Z
source_html: https://yycode.net/docs/ja/gpt-image-quickstart

# GPT-Image-2 利用ガイド

GPT-Image-2 は YYCode が提供する AI 画像生成サービスです。独立した画像インターフェース `gpt.yycode.net` を使って、テキストから画像、画像から画像、非同期タスク照会を行います。

---

## 準備

### 1. API Key を作成

[YYCode トークン管理ページ](https://yycode.net/console/token) にアクセスし、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 に送ります。

```text
このプロジェクトに 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）

生成タスクを送信します。

```bash
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"
  }'
```

成功レスポンス：

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

### タスク結果を照会

`job_1782732290788_3` を、タスク送信時に返された `jobId` に置き換えます。

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

**タスク処理中：**

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

**タスク完了：**

```json
{
  "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 枚アップロード：**

```bash
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 'image=@input.png'
```

**複数の元画像をアップロード：**

```bash
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 'image=@subject.png' \
  -F 'image=@style.png'
```

**画像から画像の注意事項：**

- `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` | 出力形式。`png`、`jpeg`、`webp` に対応 |
| `quality` | 画像品質。`auto`、`low`、`medium`、`high`、`standard`、`hd` に対応 |
| `background` | 背景モード。`auto`、`opaque` に対応 |
| `image` | 画像から画像の元画像ファイルフィールド。繰り返し指定可能 |
| `mask` | 画像から画像のマスクファイルフィールド。部分編集に使用 |

### size 対応

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

| サイズ | 説明 |
|---|---|
| `1024x1024` | 正方形画像 |
| `1536x1024` | 横向き画像 |
| `1024x1536` | 縦向き画像 |
| `1920x1080` | 横長 HD 画像 |
| `1080x1920` | 縦長 HD 画像 |
| `3840x2160` | 4K 横長画像 |
| `2160x3840` | 4K 縦長画像 |

---

## Python 例

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

---

## 画像レスポンス説明

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