コンテンツにスキップ

OpenAI 画像フォーマット

RouteAPI は OpenAI 互換の images エンドポイントを通じて画像生成を提供します。このページでは、すべてのベンダーが共有するリクエスト形式と、OpenAI の gpt-image シリーズ(現在販売中の gpt-image-2)を扱います。他のベンダーのリクエストも同じエンドポイントに適応されますが、モデル固有の挙動は個別に説明します。Nano Banana は Gemini 画像モデル、Seedream は ByteDance Seedream を扱います。

モデルが画像生成に対応しているかはモデル一覧で確認できます。supported_endpoint_types に image-generation が含まれていれば対応しています。このフィールドの読み方はモデルを参照してください。

POST /v1/images/generations
POST /v1/images/edits

完全な URL:

https://api.routeapi.ai/v1/images/generations
https://api.routeapi.ai/v1/images/edits

/v1/images/generations は JSON ボディを受け取ります。/v1/images/edits は multipart/form-data を受け取ります。OpenAI 互換チャネルでは、URL または Base64 で画像を参照する JSON ボディも使用できます(JSON による編集を参照)。

フィールドタイプ必須説明
modelstringはいGET /v1/models で取得したモデル ID。例: gpt-image-2
promptstringはい生成する画像のテキスト説明
nintegerいいえ画像の枚数、最大 128。省略または 0 は 1 として扱われます
sizestringいいえ1024x1024、1024x1536 などの出力サイズ、またはモデルによっては 1K / 2K などの段階。JSON ボディでは区切りに x を使用してください。全角の × は 400 で拒否されます
qualitystringいいえstandard、hd、high、medium、low、auto などの品質レベル。受け付ける値はモデルによって異なります
response_formatstringいいえurl または b64_json。上流へ転送され、どちらの値が有効かはプロバイダーが決めます
stylestringいいえスタイルのヒント(例: vivid、natural)。対応するモデルでのみ意味があります
userstringいいえ上流へ転送されるエンドユーザー識別子
watermarkbooleanいいえ出力にウォーターマークを付けるかどうか(対応するプロバイダーのみ)

ゲートウェイが理解する追加フィールドには background、output_format、output_compression、input_fidelity、moderation、partial_images があり、含まれていれば OpenAI 互換の上流へ転送されます。未知の JSON フィールドは転送されず破棄されます。ただしチャネルがリクエストボディのパススルーモードの場合は除きます。

Terminal window
curl https://api.routeapi.ai/v1/images/generations \
-H "Authorization: Bearer $ROUTEAPI_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-image-2",
"prompt": "A calico cat playing a piano on a small stage, soft studio lighting",
"size": "1024x1024",
"n": 1
}'
import os
from openai import OpenAI
client = OpenAI(
api_key=os.environ["ROUTEAPI_KEY"],
base_url="https://api.routeapi.ai/v1",
)
result = client.images.generate(
model="gpt-image-2",
prompt="A calico cat playing a piano on a small stage, soft studio lighting",
size="1024x1024",
n=1,
)
for item in result.data:
print(item.url or item.b64_json[:40])

OpenAI 互換チャネルは上流のレスポンスボディをそのまま返します。モデルによって data[] には b64_json、url、またはその両方が入るため、存在する方を読み取ってください。

{
"created": 1740000000,
"data": [
{
"b64_json": "iVBORw0KGgoAAAANSUhEUgAA..."
}
],
"usage": {
"input_tokens": 12,
"output_tokens": 4160,
"total_tokens": 4172
}
}
フィールド説明
created生成時刻の Unix タイムスタンプ
data生成された画像の配列。1 枚につき 1 要素
data[].url上流が URL を返す場合の画像 URL
data[].b64_json上流が Base64 を返す場合の画像バイト列
data[].revised_promptモデルが書き換えたプロンプトを返す場合に存在
usageトークン使用量。上流が返す場合のみ存在

url / b64_json は存在する方を読み取ってください。両方が必ずあるとは限らず、usage もオプションとして扱います。

POST /v1/images/edits は prompt と、任意でマスクを使って既存の画像を変更します。

フィールドタイプ必須説明
modelstringはいGET /v1/models で取得したモデル ID
imagefileはい元画像。フィールドを繰り返すか image[] を使うと複数送信できます
promptstringはい編集内容を記述する指示
maskfileいいえ編集する領域を示すマスク画像。マスクの意味は上流モデルが定義します
nintegerいいえ結果の枚数、最大 128(デフォルト 1)
sizestringいいえ出力サイズ。生成と同じ規則です
qualitystringいいえモデルが受け付ける品質レベル
watermarkbooleanいいえ出力にウォーターマークを付けるかどうか

その他のフォームフィールドは OpenAI 互換の上流へそのまま転送されるため、response_format や input_fidelity などもパススルーされます。

Terminal window
curl https://api.routeapi.ai/v1/images/edits \
-H "Authorization: Bearer $ROUTEAPI_KEY" \
-F model="gpt-image-2" \
-F prompt="Replace the background with a sunset beach" \
-F image=@"cat.png" \
-F size="1024x1024"
import os
from openai import OpenAI
client = OpenAI(
api_key=os.environ["ROUTEAPI_KEY"],
base_url="https://api.routeapi.ai/v1",
)
with open("cat.png", "rb") as image:
result = client.images.edit(
model="gpt-image-2",
image=image,
prompt="Replace the background with a sunset beach",
size="1024x1024",
)
print(result.data[0].b64_json[:40])

OpenAI 互換チャネルでは、/v1/images/edits は JSON ボディも受け付けます。RouteAPI が各画像参照をダウンロードまたはデコードし、上流向けに multipart リクエストを組み直します。画像がすでに URL 上にある場合や Base64 文字列の場合に便利です。

Terminal window
curl https://api.routeapi.ai/v1/images/edits \
-H "Authorization: Bearer $ROUTEAPI_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-image-2",
"prompt": "Repaint this photo as a watercolor illustration",
"images": [
{ "image_url": "https://example.com/photo.png" }
],
"size": "1024x1024"
}'

images の各要素は image_url(または url)を持ち、値は http(s) リンクか data:image/...;base64,... 文字列です。mask も同じ構造です。このパスでは images 配列が必須で、単独の image フィールドは読み取られません。他のチャネルファミリーは実際の multipart ボディを要求する場合があるため、JSON 編集に依存する前にターゲットモデルで確認してください。

同じエンドポイント上の他のベンダー

Section titled “同じエンドポイント上の他のベンダー”

エンドポイントと prompt / n / size のリクエスト形式は共通ですが、各ベンダーのアダプターが変換する方法は異なります。

ベンダー系列ページ
Google Gemini 画像モデル(gemini-*-image*)Nano Banana
ByteDance Seedream(seedream-5.0-pro、seedream-5.0-lite)Seedream

gpt-image モデルはトークン単位で課金されます。生成された画像は出力トークンとして出力価格で課金され、プロンプトと参照画像は入力トークンとして課金されます。出力が大きいほど、品質が高いほど多くのトークンを消費します。詳細な規則はモデル料金を、どちらの方式が適用されるかはモデル詳細ページを参照してください。

サイズ段階を使う 1 枚あたり課金モデルでは、チャネル選択前にリクエストした size のピクセル数から価格が決まります。n は 1 枚ごとに課金され、size が省略または認識できない場合は最高単価が適用されます。

ステータス意味よくある原因
400無効なリクエストmodel の欠落、n が 128 超、モデルが対応しない size、JSON ボディで区切りに × を使用
401認証失敗API Key の欠落、無効、期限切れ、クォータ枯渇
403残高またはクォータ不足insufficient_user_quota または pre_consume_token_quota_failed。チャージするかキーのクォータを引き上げてください
429レート制限同時実行数を下げてください
500変換または内部エラー選択したチャネル向けに変換できない、または編集に使用できる画像がない
501api_not_implementedエンドポイントは存在するが未対応

POST /v1/images/variations は未対応で、コード api_not_implemented の 501 を返します。代わりにプロンプトベースの編集を使用してください。/v1/images/edits には少なくとも 1 枚の画像が必要で、image、image[]、image[0] 形式のフォームフィールド名を認識します。

  • Nano Banana — Gemini 画像モデルとネイティブな generateContent 呼び出し。
  • Seedream — ByteDance Seedream のサイズ、連続生成、編集。
  • モデル — 画像モデルを探し、image-generation 対応を確認します。
  • モデル料金 — トークン課金と 1 枚あたり課金、サイズ段階。
  • よくあるエラー — 共通のステータスコードとエラーボディ形式。