画像生成

POST /v1/images/generations

OpenAI 互換の画像生成 API です。主力モデルは gpt-image-2同期非同期の 2 つのモードに対応しています:

  • 同期 — 画像が生成されるまでリクエストがブロックし、結果を直接返します(低並列・即時用途向け)。
  • 非同期 — 送信後すぐにジョブ ID を受け取り、ポーリングで結果を取得します(大量処理・長時間接続を避けたい場合向け)。

利用可能なモデル

モデル 解像度ティア 説明
gpt-image-2 1K / 2K / 4K 主力モデル。汎用の生成と編集に対応。
gpt-image-2.5 1K 1K ティアのみ。
gpt-image-2.5-flare 1K / 2K / 4K 日常的な生成向け。生成が速い。
gpt-image-2.5-sunburst 1K / 2K / 4K 精密編集向け。指示に忠実な修正が得意。

上記のモデルはいずれも次の 2 つの使い方に対応しています:

  • テキストから画像POST /v1/images/generations(同期)または POST /v1/images/generations/async(非同期)。
  • 画像から画像POST /v1/images/edits(同期)または POST /v1/images/edits/async(非同期)。imageprompt を multipart で送信します。サイズ/解像度のパラメータはテキストから画像の場合とまったく同じです。

互換性について: モデル名 gpt-image-2-2K / gpt-image-2-4K は既存の連携がそのまま動くよう引き続き受け付けます。これらは gpt-image-2resolution = 2K / 4K を指定した場合と等価です。新規の連携では gpt-image-2 + パラメータの形をご利用ください。

解像度ティアの選び方

gpt-image-21 つのモデル名のまま、パラメータで 1K / 2K / 4K の 3 つの解像度ティアを選べます(モデルの切り替えは不要)。等価な 2 通りの書き方があります:

  • resolution(推奨): ティアを 1K / 2K / 4K で直接指定します。画角比率は size で指定するか、省略(既定は 1:1 の正方形)します。
  • size: そのティアのピクセルサイズ(下表参照)を渡すと、ゲートウェイがティアと比率の両方を判定します。
目的 リクエストボディ
1K(既定) サイズ系パラメータを省略、または "resolution": "1K"
2K 正方形 "resolution": "2K"、または "size": "2048x2048"
2K 16:9 横長 "resolution": "2K", "size": "2560x1440"、または "size": "2560x1440" のみ
4K 正方形 "resolution": "4K"、または "size": "2880x2880"
4K 16:9 横長 "resolution": "4K", "size": "3840x2160"、または "size": "3840x2160" のみ

gpt-image-2.5-flare / gpt-image-2.5-sunburst も使い方は同じです。gpt-image-2.5 は 1K のみ対応です。

同期: POST /v1/images/generations

リクエストパラメータ

パラメータ 必須 説明
model string はい モデル ID(例: gpt-image-2)。
prompt string はい 画像を説明するプロンプト。
n integer いいえ 生成枚数。現在は 1 のみ対応(デフォルト 1)。
size string いいえ 画像サイズ。幅x高さ 形式(例: 1024x10242560x14403840x2160)、または autoアスペクト比解像度ティアの両方を決定します(下のティア表を参照)。ティア表にないサイズはピクセル面積で分類されます: 2,000,000 以下は 1K、5,000,000 以下は 2K、9,000,000 以下は 4K。それより大きい場合は 400 を返します。
resolution string いいえ 解像度ティア。1K / 2K / 4K(大文字小文字は区別しません。別名として image_size も受け付けます)。size から決まるティアより優先されます。size と併用すると、アスペクト比を固定したままティアだけを指定できます。モデルが対応していないティアを指定した場合は 400 を返します。
quality string いいえ 画質レベル。gpt-image-2.5 系は low / medium / high / xhigh / max / autogpt-image-2 では任意指定で、現時点では出力に影響しません。解像度ティアには影響しません。
response_format string いいえ 返却形式:b64_json(既定。画像を base64 で JSON にインライン)または url(約 2 時間有効なダウンロードリンク。下記「レスポンス」参照)。その他の値は 400 を返します。

ティアの優先順位: resolution > size から決まるティア > デフォルトの 1K。

ヒント: 画像が大きい(2K/4K)場合や並列数が多い場合は "response_format": "url" を指定してください。レスポンスは数百バイトになり、クライアントは必要なときに画像をダウンロードできます。

解像度ティア表

アスペクト比 1K 2K 4K
1:1 1024×1024 2048×2048 2880×2880
16:9 1280×720 2560×1440 3840×2160
9:16 720×1280 1440×2560 2160×3840
3:2 1248×832 2496×1664 3504×2336
2:3 832×1248 1664×2496 2336×3504
4:3 1152×864 2304×1728 3264×2448
3:4 864×1152 1728×2304 2448×3264
5:4 1120×896 2240×1792 3200×2560
4:5 896×1120 1792×2240 2560×3200
21:9 1456×624 3024×1296 3696×1584

モデルは選択されたティアとアスペクト比のネイティブ解像度で描画するため、返される画像の実際のピクセルサイズはリクエストした size とわずかに異なる場合があります。

課金について

画像生成の課金単位と単価は、ご利用のサイトの「料金説明」および Portal の料金ページに準じます。レスポンスの usage は今回の生成のトークン使用量を示し、照合の参考としてご利用いただけます。上位ティアほど生成される画像が大きく、料金も高くなります。

cURL

curl https://api.aiin1.ai/v1/images/generations \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -d '{
    "model": "gpt-image-2",
    "prompt": "a red fox running in snow, studio lighting",
    "n": 1
  }'

cURL(size で 16:9 の 2K を指定)

curl https://api.aiin1.ai/v1/images/generations \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -d '{
    "model": "gpt-image-2",
    "prompt": "a red fox running in snow, studio lighting",
    "size": "2560x1440",
    "n": 1
  }'

cURL(resolution でティアを指定)

curl https://api.aiin1.ai/v1/images/generations \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -d '{
    "model": "gpt-image-2.5-flare",
    "prompt": "a red fox running in snow, studio lighting",
    "size": "1024x1024",
    "resolution": "2K",
    "n": 1
  }'

Python

import openai
 
client = openai.OpenAI(
    api_key="YOUR_API_KEY",
    base_url="https://api.aiin1.ai/v1",
)
 
resp = client.images.generate(
    model="gpt-image-2",
    prompt="a red fox running in snow, studio lighting",
    n=1,
)
b64 = resp.data[0].b64_json   # base64 エンコードの PNG

OpenAI SDK には resolution に対応するネイティブのフィールドがないため、extra_body で渡します:

resp = client.images.generate(
    model="gpt-image-2",
    prompt="a red fox running in snow, studio lighting",
    size="1024x1024",
    n=1,
    extra_body={"resolution": "2K"},
)

画像から画像: POST /v1/images/edits

元画像とプロンプトを multipart/form-data で送信します。レスポンスの形式は同期のテキストから画像と同じです(base64 インライン)。

パラメータ 必須 説明
image file はい 入力画像。PNG / JPEG / WEBP、1 枚あたり 25 MB まで、リクエスト全体で 32 MB まで。複数の参照画像は image[](または image)を繰り返して送信し、最大 8 枚です。
prompt string はい 編集指示(どう変更するか)。
model string はい モデル ID。例: gpt-image-2gpt-image-2.5-sunburst(指示どおりの編集が得意)。
n integer いいえ 生成枚数。現在は 1 のみ対応
size / resolution / quality string いいえ テキストから画像と同じ意味です。上記のパラメータ表とティア対応表を参照してください。

mask(マスク)パラメータは現在未対応で、送信するとエラーになります。変更したい領域は prompt で指示してください。

画像から画像は通常 1 回あたり 1〜3 分かかり、混雑時はさらに長くなることがあります。クライアントの読み取りタイムアウトは 15 分以上に設定してください。短いと生成完了前に接続が切れる可能性があります。ページ末尾の非同期エンドポイントを使う方法もあります。

参照画像は画像リンクや data URL で直接渡すこともできます(JSON 形式、ファイルのアップロード不要)。同期・非同期どちらのエンドポイントでも使えます。詳しくはページ末尾の「リンクで参照画像を渡す」の節を参照してください。

cURL(1 枚)

curl https://api.aiin1.ai/v1/images/edits \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -F image=@input.png \
  -F model=gpt-image-2.5-sunburst \
  -F prompt="turn the sky into a starry night, keep the fox unchanged" \
  -F resolution=2K

cURL(複数の参照画像、16:9 横長)

curl https://api.aiin1.ai/v1/images/edits \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -F "image[]=@product.png" \
  -F "image[]=@background.jpg" \
  -F model=gpt-image-2 \
  -F prompt="place the product from the first image onto the scene in the second image" \
  -F size=2560x1440

Python

import base64
import openai
 
client = openai.OpenAI(
    api_key="YOUR_API_KEY",
    base_url="https://api.aiin1.ai/v1",
    timeout=900,   # 画像から画像は時間がかかるため、読み取りタイムアウトは 15 分以上
)
 
with open("input.png", "rb") as f:
    resp = client.images.edit(
        model="gpt-image-2.5-sunburst",
        image=f,                      # 複数の参照画像はリストで: image=[f1, f2]
        prompt="turn the sky into a starry night, keep the fox unchanged",
        extra_body={"resolution": "2K"},
    )
 
with open("output.png", "wb") as out:
    out.write(base64.b64decode(resp.data[0].b64_json))

レスポンス

画像は base64 でインライン返却されます:

{
  "created": 1730000000,
  "data": [
    {
      "b64_json": "iVBORw0KGgoAAAANSUhEUgAA...",
      "revised_prompt": "..."
    }
  ],
  "usage": {
    "input_tokens": 18,
    "input_tokens_details": {
      "image_tokens": 0,
      "text_tokens": 18
    },
    "output_tokens": 7024,
    "output_tokens_details": {
      "image_tokens": 7024,
      "text_tokens": 0
    },
    "total_tokens": 7042
  }
}

ブラウザ表示時は data:image/png;base64,<b64_json> のように接頭辞を付けます。

"response_format": "url" を指定すると、base64 の代わりにダウンロードリンクを返します:

{
  "created": 1730000000,
  "data": [
    {
      "url": "https://<bucket>.r2.cloudflarestorage.com/...&X-Amz-Signature=...",
      "revised_prompt": "..."
    }
  ],
  "usage": { "...": "上と同じ" }
}

リンクは約 2 時間有効です。有効期限内にダウンロードまたは再保存してください。画像は 48 時間後に削除されます。画像は生成できたもののリンクを作成できなかった場合(まれ)、502 を返し課金されません。そのまま再試行してください。


非同期: POST /v1/images/generations/async

リクエストボディは同期のテキストから画像と同一(model / prompt / n / size / resolution / quality。意味も上記と同じ)ですが、生成を待たずにジョブ ID を即座に返します。バッチ生成や、クライアントが長時間接続を保持したくない場合に使います。

この節は非同期のテキストから画像です。非同期の画像から画像はページ末尾の「非同期の画像から画像」の節を参照してください。

1. 送信

curl https://api.aiin1.ai/v1/images/generations/async \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -d '{
    "model": "gpt-image-2",
    "prompt": "a red fox running in snow",
    "size": "2560x1440",
    "n": 1
  }'

202 Accepted を返します:

{
  "id": "nximg_xxxxxxxx",
  "status": "queued",
  "created": 1730000000,
  "object": "image.generation.async"
}

2. ポーリング: GET /v1/images/generations/async/{job_id}

curl https://api.aiin1.ai/v1/images/generations/async/nximg_xxxxxxxx \
  -H "Authorization: Bearer YOUR_API_KEY"

status の遷移: queuedprocessingsucceeded(または failed)。1〜2 秒ごとにポーリングしてください。通常は数秒〜数十秒で完了します。

処理中:

{ "id": "nximg_xxxxxxxx", "status": "processing", "created": 1730000000 }

完了:

{
  "id": "nximg_xxxxxxxx",
  "status": "succeeded",
  "created": 1730000000,
  "data": [
    {
      "url": "https://<bucket>.r2.cloudflarestorage.com/...&X-Amz-Signature=...",
      "revised_prompt": "..."
    }
  ],
  "usage": {
    "input_tokens": 18,
    "input_tokens_details": {
      "image_tokens": 0,
      "text_tokens": 18
    },
    "output_tokens": 7024,
    "output_tokens_details": {
      "image_tokens": 7024,
      "text_tokens": 0
    },
    "total_tokens": 7042
  }
}

失敗:

{
  "id": "nximg_xxxxxxxx",
  "status": "failed",
  "created": 1730000000,
  "error": { "type": "upstream_error", "message": "generation failed", "code": "..." }
}

url について: 同期(インライン base64)と異なり、非同期では成功時に署名付きダウンロード URL(有効期限 約 2 時間)を返します。有効期限内にダウンロード/再保存してください。期限切れの場合は再生成が必要です。失敗したジョブは課金されません。

フィールド一覧

フィールド 説明
id ジョブ ID(nximg_ 接頭辞)。ポーリングに使用。API キーの組織に紐づき、他者はアクセスできません。
status queued / processing / succeeded / failed
data[].url 成功時の署名付き画像ダウンロード URL(約 2 時間有効)。
data[].revised_prompt モデルが修正したプロンプト(空の場合あり)。
usage 成功時に返却。構造は同期と同じです。

非同期の画像から画像: POST /v1/images/edits/async

POST /v1/images/edits の非同期版です。リクエスト形式はまったく同じ(multipart/form-data でのファイルアップロード、または画像リンクを渡す JSON 形式。パラメータは上記「画像から画像」の節を参照)ですが、ジョブ ID を即座に返し、生成完了後にポーリングで結果を取得します。画像から画像は時間がかかる(通常 1〜3 分)ため、バッチ処理や長時間接続を保持したくない場合に推奨します。

同期の画像から画像との違い:

  • 入力画像は最大 8 枚、1 枚あたり 25 MB まで、リクエスト全体で 32 MB まで。
  • mask には対応しておらず、送信すると 400 を返します。
  • 成功時はインライン base64 ではなく、署名付きダウンロード URL(約 2 時間有効)を返します。

1. ジョブの送信

curl https://api.aiin1.ai/v1/images/edits/async \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -F image=@input.png \
  -F model=gpt-image-2 \
  -F prompt="turn the sky into a starry night, keep the fox unchanged" \
  -F resolution=2K

複数の参照画像は、同期と同じく image[](または image)を繰り返して送信します。

202 Accepted を返します:

{
  "id": "nximg_xxxxxxxx",
  "status": "queued",
  "created": 1730000000,
  "object": "image.edit.async"
}

2. 結果のポーリング: GET /v1/images/edits/async/{job_id}

curl https://api.aiin1.ai/v1/images/edits/async/nximg_xxxxxxxx \
  -H "Authorization: Bearer YOUR_API_KEY"

レスポンス形式は非同期のテキストから画像とまったく同じです(queuedprocessingsucceeded / failed。成功時は data[].url がダウンロードリンクで、usage も含まれます)。2〜5 秒ごとのポーリングを推奨します。ジョブ ID は 2 つの非同期エンドポイントで共通のため、GET /v1/images/generations/async/{job_id} でも照会できます。

Python の例

import time
import requests
 
API = "https://api.aiin1.ai/v1"
HEADERS = {"Authorization": "Bearer YOUR_API_KEY"}
 
# 1. 送信(複数の参照画像: files=[("image[]", f1), ("image[]", f2)])
with open("input.png", "rb") as f:
    job = requests.post(
        f"{API}/images/edits/async",
        headers=HEADERS,
        files=[("image", ("input.png", f, "image/png"))],
        data={
            "model": "gpt-image-2",
            "prompt": "turn the sky into a starry night, keep the fox unchanged",
            "resolution": "2K",
        },
        timeout=120,
    ).json()
 
# 2. ポーリング
while True:
    r = requests.get(f"{API}/images/edits/async/{job['id']}", headers=HEADERS, timeout=30).json()
    if r["status"] in ("succeeded", "failed"):
        break
    time.sleep(3)
 
if r["status"] == "succeeded":
    img = requests.get(r["data"][0]["url"], timeout=120).content   # URL は約 2 時間有効
    open("output.png", "wb").write(img)
else:
    print(r["error"])

リンクで参照画像を渡す(JSON 形式)

POST /v1/images/edits(同期)と POST /v1/images/edits/async(非同期)で使えます。画像がすでにオブジェクトストレージ、CDN、画像ホスティングにある場合、いったんダウンロードしてアップロードし直す必要はありません。JSON のリクエストボディにリンクをそのまま入れてください。

仕組み: ゲートウェイはまずすべての参照画像をダウンロードして検証し、すべて合格してから生成を開始します。1 枚でも問題があれば生成前に 400 を返し、課金されません。「リンク切れなのに参照画像と無関係な画像が生成され、課金される」ことを防ぐためです。

リクエスト形式

  • リクエストヘッダー: Content-Type: application/json(multipart との併用は不可。1 回のリクエストではどちらか一方の形式のみ)。
  • リクエストボディのパラメータ:
パラメータ 必須 説明
model string はい モデル ID。例: gpt-image-2
prompt string はい 編集指示。参照画像が複数ある場合は「1 枚目の画像」「2 枚目の画像」のように指定でき、順番は images 配列と同じです。
images array はい 参照画像のリスト。最大 8 枚。各要素の書き方は下表を参照。
size / resolution / quality string いいえ テキストから画像と同じ意味です。上記のパラメータ表とティア対応表を参照してください。
response_format string いいえ b64_json(既定)または url。同期エンドポイントのみ有効で、非同期エンドポイントは常にリンクを返します。
n integer いいえ 現在は 1 のみ対応。

mask には対応しておらず、送信すると 400 を返します。

images の各要素の書き方

以下のどの書き方も使え、同じ配列内で混在させることもできます:

書き方
画像リンク(文字列) "https://cdn.example.com/product.png"
data URL(文字列) "data:image/png;base64,iVBORw0KGgo..."
OpenAI 形式のオブジェクト {"image_url": "https://cdn.example.com/product.png"}
OpenAI 形式のネストしたオブジェクト {"image_url": {"url": "https://cdn.example.com/product.png"}}

images の代わりに image フィールドも使えます。値は単一の文字列または配列です。

リンクの条件

項目 条件
プロトコルとポート https:// のみ、既定ポート 443 のみ。http:// やリンク内でのポート指定には対応していません。
アドレス インターネットから直接アクセスできるドメイン名であること。IP アドレス、localhost、内部アドレスは不可。
アクセス権 ゲートウェイはCookie、ログイン状態、独自ヘッダーを一切付けずにダウンロードします。ログインが必要な画像や、ホットリンク保護(Referer チェック)が有効な画像は失敗します。非公開のオブジェクトは署名付きの一時リンク(S3 / OSS / COS / R2 の署名付き URL など)を指定してください。
リダイレクト リダイレクトは追跡しません。 短縮 URL やリダイレクトする共有リンクは拒否されるため、リダイレクト後の最終的な画像 URL を指定してください。
形式 PNG / JPEG / WEBP のみ。形式はファイルの中身で判定し、URL の拡張子や相手が返す Content-Type は見ません。GIF、HEIC、SVG、BMP は拒否されます。
サイズ 1 枚 25 MB まで、参照画像の合計 64 MB まで。
ダウンロードのタイムアウト 接続 5 秒、1 枚あたりのダウンロード合計 30 秒。超えるとエラーになります。
署名付きリンクの有効期限 同期エンドポイント: リクエスト送信時に有効であれば十分です。非同期エンドポイント: 参照画像はジョブ送信時にダウンロードされるため、送信時に有効であればよく、待機や生成の時間まで有効である必要はありません。

推奨: 参照画像はできるだけ圧縮してから送信し、1 枚 2 MB 以内に抑えてください(例: 長辺 2048 ピクセル以内の JPEG に変換)。画像が小さいほど送信が速く、生成の成功率も高くなります。混雑時は特に効果があります。

data URL の条件

  • 形式は data:image/png;base64,...data:image/jpeg;base64,...data:image/webp;base64,... のいずれかであること。
  • base64 が正しく、宣言した型と実際の中身が一致していること(例: image/png と宣言して中身が JPEG の場合は拒否されます)。
  • data URL はリクエスト全体の 32 MB 上限に含まれ、base64 エンコードで約 1/3 大きくなるため、元画像は 1 枚約 20 MB 以内を目安にしてください。大きな画像はリンクを推奨します。

ローカルファイルを data URL に変換する例:

import base64
 
def to_data_url(path: str) -> str:
    data = open(path, "rb").read()
    if data.startswith(b"\x89PNG"):
        mime = "image/png"
    elif data.startswith(b"\xff\xd8\xff"):
        mime = "image/jpeg"
    elif data[:4] == b"RIFF" and data[8:12] == b"WEBP":
        mime = "image/webp"
    else:
        raise ValueError("PNG / JPEG / WEBP のみ対応しています")
    return f"data:{mime};base64,{base64.b64encode(data).decode()}"

cURL: 同期、参照画像 2 枚(リンク 1 枚 + data URL 1 枚)、リンクで返却

curl https://api.aiin1.ai/v1/images/edits \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -d '{
    "model": "gpt-image-2",
    "prompt": "1 枚目の画像の商品を 2 枚目の画像のシーンに配置し、商品の見た目は変えないでください",
    "images": [
      "https://cdn.example.com/product.png",
      "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQ..."
    ],
    "size": "2560x1440",
    "response_format": "url"
  }'

Python: 同期

import requests
 
API = "https://api.aiin1.ai/v1"
HEADERS = {"Authorization": "Bearer YOUR_API_KEY"}
 
r = requests.post(
    f"{API}/images/edits",
    headers=HEADERS,
    json={
        "model": "gpt-image-2",
        "prompt": "空を星空に変え、それ以外は変えないでください",
        "images": ["https://cdn.example.com/photo.jpg"],
        "response_format": "url",
    },
    timeout=900,   # 画像から画像は時間がかかるため、読み取りタイムアウトは 15 分以上
)
d = r.json()
if r.status_code != 200:
    raise RuntimeError(d["error"]["message"])      # 例: "images[0]: host cdn.example.com answered HTTP 404"
img = requests.get(d["data"][0]["url"], timeout=120).content   # リンクは約 2 時間有効
open("output.png", "wb").write(img)

Python: 非同期

import time
import requests
 
API = "https://api.aiin1.ai/v1"
HEADERS = {"Authorization": "Bearer YOUR_API_KEY"}
 
r = requests.post(
    f"{API}/images/edits/async",
    headers=HEADERS,
    json={
        "model": "gpt-image-2",
        "prompt": "空を星空に変え、それ以外は変えないでください",
        "images": ["https://cdn.example.com/photo.jpg"],
    },
    timeout=120,
)
job = r.json()
if r.status_code != 202:                       # 参照画像に問題がある場合、送信時点で 400 が返ります
    raise RuntimeError(job["error"]["message"])
 
while True:
    res = requests.get(f"{API}/images/edits/async/{job['id']}", headers=HEADERS, timeout=30).json()
    if res["status"] in ("succeeded", "failed"):
        break
    time.sleep(3)

エラー一覧

参照画像に問題がある場合は HTTP 400 を返し、error.typeinvalid_request_error です。特定の画像に関するエラーの messageimages[番号]: で始まり(番号は 0 から、images 配列内の位置)、その後に理由が続きます。リクエスト全体に関するエラー(枚数超過、mask の送信、画像なし)には番号の接頭辞はありません。エラーにはドメイン名のみが含まれ、完全なリンクは表示されません。

message の理由 意味 対処
only https:// URLs are accepted リンクが https ではない https のリンクを使う
only the default https port 443 is allowed リンクにポート番号が含まれている ポートを外し、標準の https アドレスを使う
URL host must be a domain name, not an IP リンクが IP アドレス ドメイン名を使う
URL host is not a public hostname / resolves to a non-public address localhost、内部ドメイン、または内部アドレスに解決されるドメイン インターネットからアクセスできるアドレスを使う
could not resolve host ... ドメインを解決できない ドメインのつづりを確認する
answered with a redirect (3xx) リンクがリダイレクトしている リダイレクト後の最終アドレスを使う
answered HTTP 403 / answered HTTP 404 など アクセス拒否またはファイルが存在しない(ホットリンク保護、ログイン必須、署名付きリンクの期限切れなど) ログインなしで直接開けるリンクか確認する。非公開ファイルは期限内の署名付きリンクを使う
timed out fetching from host ... / could not fetch from host ... ダウンロードのタイムアウトまたは接続失敗 相手側サービスの稼働と速度を確認するか、data URL に切り替える
content is not a PNG, JPEG or WebP image ダウンロードした内容が対応画像ではない(HTML ページ、GIF、HEIC など) リンクが画像ファイルそのものを指しているか確認し、PNG / JPEG / WEBP に変換する
image larger than ... bytes / images exceed ... bytes in total 1 枚 25 MB 超、または合計 64 MB 超 画像を圧縮するか枚数を減らす
data URL must be data:image/(png|jpeg|webp);base64, / data URL is not valid base64 / data URL content is not a valid image/... data URL の形式が不正、base64 が不正、または宣言した型と中身が一致しない 上記「data URL の条件」に従って作成する
too many images (max 8) 参照画像が 8 枚を超えている 8 枚以内にする
mask is not supported with a JSON body mask を送信した mask を外し、変更したい領域は prompt で指示する
images is required (a list of image URLs or data URLs) 画像が指定されていない、または images が空配列 参照画像を 1 枚以上指定する

課金

  • 参照画像の検証に失敗した場合: 画像は生成されず、課金されません
  • 検証を通過して生成に成功した場合: ファイルをアップロードする形式と同じく課金されます。