画像生成
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(非同期)。imageとpromptを multipart で送信します。サイズ/解像度のパラメータはテキストから画像の場合とまったく同じです。
互換性について: モデル名
gpt-image-2-2K/gpt-image-2-4Kは既存の連携がそのまま動くよう引き続き受け付けます。これらはgpt-image-2にresolution=2K/4Kを指定した場合と等価です。新規の連携ではgpt-image-2+ パラメータの形をご利用ください。
解像度ティアの選び方
gpt-image-2 は 1 つのモデル名のまま、パラメータで 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高さ 形式(例: 1024x1024、2560x1440、3840x2160)、または 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 / auto。gpt-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 エンコードの PNGOpenAI 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-2、gpt-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=2KcURL(複数の参照画像、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=2560x1440Python
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 の遷移: queued → processing → succeeded(または 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"レスポンス形式は非同期のテキストから画像とまったく同じです(queued → processing → succeeded / 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.type は invalid_request_error です。特定の画像に関するエラーの message は images[番号]: で始まり(番号は 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 枚以上指定する |
課金
- 参照画像の検証に失敗した場合: 画像は生成されず、課金されません。
- 検証を通過して生成に成功した場合: ファイルをアップロードする形式と同じく課金されます。