description: Nano Banana 2 画像生成APIで「not supported model for image generation」エラーが発生する根本原因と、OpenAI形式からGoogleネイティブのgenerateContent形式への正しい切り替え方法を解説します。
Nano Banana 2 を使用して画像を生成しようとした際、not supported model for image generation というエラーに遭遇していませんか?これは現在、開発者がGemini画像APIを呼び出す際によく直面する問題の一つです。本記事では、このエラーの根本原因と正しい呼び出し方法を紹介し、Nano Banana 2 画像APIのエラーを迅速に解決するお手伝いをします。
本記事の価値: 本記事を読み終えると、Gemini画像モデルとImagenモデルのAPI呼び出しの違いを理解し、generateContentエンドポイントの正しい使い方を習得し、3ステップでエラーを解決できるようになります。

Nano Banana 2 画像APIエラーの核心的原因
| 要点 | 説明 | 解決策 |
|---|---|---|
| エラーメッセージ | not supported model for image generation, only imagen models are supported | generateContentエンドポイントに切り替える |
| 根本原因 | OpenAI形式のエンドポイントはImagenモデルのみをサポートし、Gemini画像モデルはサポートしていない | GoogleネイティブAPI形式を使用する |
| 正しいエンドポイント | /v1beta/models/{MODEL}:generateContent |
/v1/images/generationsを置き換える |
| 必須パラメータ | responseModalities: ["TEXT", "IMAGE"] |
generationConfig内で設定する |
Nano Banana 2 画像APIエラーの詳細解説
OpenAI互換形式の /v1/images/generations エンドポイントを使用してNano Banana 2(gemini-3.1-flash-image-preview)またはNano Banana Pro(gemini-3-pro-image-preview)を呼び出そうとすると、システムは以下のエラーを返します:
not supported model for image generation, only imagen models are supported
(request id: 20260315043447253411115cvUiXJMF)
new_api_error convert_request_failed, 500
このエラーの核心的原因は、Gemini画像モデルとImagenモデルは全く異なるアーキテクチャのモデルであるという点にあります。
- Imagenモデル(例:
imagen-3.0-generate-001)は専用の画像生成モデルで、/v1/images/generationsまたは:predictエンドポイントを使用します。 - Gemini画像モデル(Nano Bananaシリーズ)はマルチモーダル言語モデルで、テキストと画像を同時に出力できるため、
:generateContentエンドポイントを使用する必要があります。
簡単に言えば、「テキストから画像生成専用チャネル」を「マルチモーダル対話モデル」を呼び出すために使用してしまい、フォーマットが一致しないためエラーが発生しているのです。

Nano Banana 2 画像生成 API の正しい呼び出し形式
誤った呼び出し vs 正しい呼び出しの比較
| 比較項目 | ❌ 誤った方法(OpenAI 形式) | ✅ 正しい方法(generateContent 形式) |
|---|---|---|
| API エンドポイント | /v1/images/generations |
/v1beta/models/{MODEL}:generateContent |
| リクエスト構造 | prompt + size + n パラメータ |
contents + generationConfig 構造 |
| レスポンス形式 | 画像 URL | インライン Base64 画像データ |
| 対応モデル | DALL-E、Imagen シリーズ | Gemini 画像モデル(Nano Banana シリーズ) |
| 出力内容 | 画像のみ | テキスト + 画像(マルチモーダル出力) |
Nano Banana 2 画像生成 API の誤ったリクエスト例
以下はエラーが発生する誤った呼び出し方法です:
# ❌ 誤り:OpenAI 形式で Nano Banana 2 を呼び出す
curl -X POST https://api.apiyi.com/v1/images/generations \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "gemini-3.1-flash-image-preview",
"prompt": "日差しの中で居眠りするかわいいオレンジ猫",
"size": "1024x1024",
"n": 1
}'
# 戻り値: not supported model for image generation
Nano Banana 2 画像生成 API の正しいリクエスト例
以下は正しい generateContent 形式での呼び出し方法です:
# ✅ 正しい:Google ネイティブの generateContent 形式を使用
curl -X POST https://api.apiyi.com/v1beta/models/gemini-3.1-flash-image-preview:generateContent \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"contents": [{
"parts": [
{"text": "日差しの中で居眠りするかわいいオレンジ猫"}
]
}],
"generationConfig": {
"responseModalities": ["TEXT", "IMAGE"]
}
}'
🎯 技術ヒント: APIYI apiyi.com プラットフォームを通じて Nano Banana 2 を呼び出す場合、Google Cloud アカウントを個別に設定する必要はなく、統一された APIキーを使用して直接 generateContent エンドポイントを呼び出すことができます。
Nano Banana 2 画像生成 API クイックスタート
Nano Banana 2 画像生成 API エラーを3ステップで修正
ステップ 1:API エンドポイントを変更する
リクエストアドレスを OpenAI 形式から generateContent 形式に切り替えます:
# 誤ったエンドポイント
https://api.apiyi.com/v1/images/generations
# 正しいエンドポイント(Nano Banana 2)
https://api.apiyi.com/v1beta/models/gemini-3.1-flash-image-preview:generateContent
# 正しいエンドポイント(Nano Banana Pro)
https://api.apiyi.com/v1beta/models/gemini-3-pro-image-preview:generateContent
ステップ 2:リクエストボディ構造を修正する
OpenAI の prompt + size パラメータから、Google ネイティブの contents + generationConfig 構造に変更します。重要なパラメータ:
contents.parts.text:画像の説明テキストgenerationConfig.responseModalities:必ず["TEXT", "IMAGE"]に設定する
ステップ 3:レスポンスデータを処理する
generateContent が返す画像は Base64 エンコードされたインラインデータであり、URL ではありません。レスポンスから画像を抽出してデコードする必要があります。
最小限の Python サンプル
import requests
import base64
API_KEY = "YOUR_API_KEY"
BASE_URL = "https://api.apiyi.com" # APIYI 統一インターフェース
response = requests.post(
f"{BASE_URL}/v1beta/models/gemini-3.1-flash-image-preview:generateContent",
headers={
"Authorization": f"Bearer {API_KEY}",
"Content-Type": "application/json"
},
json={
"contents": [{"parts": [{"text": "日差しの中で居眠りするかわいいオレンジ猫"}]}],
"generationConfig": {"responseModalities": ["TEXT", "IMAGE"]}
}
)
result = response.json()
for part in result["candidates"][0]["content"]["parts"]:
if "inlineData" in part:
img_data = base64.b64decode(part["inlineData"]["data"])
with open("output.png", "wb") as f:
f.write(img_data)
print("画像を output.png として保存しました")
elif "text" in part:
print("モデルの説明:", part["text"])
完全な実装コードを表示(エラー処理とアスペクト比設定を含む)
import requests
import base64
import os
from typing import Optional
def generate_image(
prompt: str,
model: str = "gemini-3.1-flash-image-preview",
aspect_ratio: str = "1:1",
output_path: str = "output.png",
api_key: Optional[str] = None
) -> dict:
"""
Nano Banana 2 generateContent エンドポイントを使用して画像を生成する
Args:
prompt: 画像の説明
model: モデル名
aspect_ratio: アスペクト比 (1:1, 16:9, 9:16, 4:3, 3:4)
output_path: 出力ファイルパス
api_key: APIキー
Returns:
ファイルパスとモデル説明を含む辞書
"""
api_key = api_key or os.getenv("APIYI_API_KEY")
base_url = "https://api.apiyi.com" # APIYI 統一インターフェース
response = requests.post(
f"{base_url}/v1beta/models/{model}:generateContent",
headers={
"Authorization": f"Bearer {api_key}",
"Content-Type": "application/json"
},
json={
"contents": [{"parts": [{"text": prompt}]}],
"generationConfig": {
"responseModalities": ["TEXT", "IMAGE"],
"imageConfig": {"aspectRatio": aspect_ratio}
}
},
timeout=60
)
if response.status_code != 200:
raise Exception(f"API リクエスト失敗: {response.status_code} - {response.text}")
result = response.json()
candidates = result.get("candidates", [])
if not candidates:
raise Exception("有効な結果が返されませんでした")
output = {"text": "", "image_path": ""}
for part in candidates[0]["content"]["parts"]:
if "inlineData" in part:
img_data = base64.b64decode(part["inlineData"]["data"])
with open(output_path, "wb") as f:
f.write(img_data)
output["image_path"] = output_path
elif "text" in part:
output["text"] = part["text"]
return output
# 使用例
result = generate_image(
prompt="水墨画風の山水画、遠くに霞がかかった山々",
model="gemini-3.1-flash-image-preview",
aspect_ratio="16:9",
output_path="landscape.png"
)
print(f"画像を保存しました: {result['image_path']}")
print(f"モデルの説明: {result['text']}")
推奨: APIYI apiyi.com で APIキーを取得してください。プラットフォームは無料テスト枠を提供し、Nano Banana 2 と Nano Banana Pro の両方の Gemini 画像モデルの generateContent 呼び出しをサポートしています。
Nano Banana 2 画像生成APIモデル比較
異なる画像生成モデルのAPI呼び出し方法の違いを理解することで、同様のフォーマットエラーを回避できます:
| モデル | コード名 | APIエンドポイント | 呼び出し形式 | 対応プラットフォーム |
|---|---|---|---|---|
| Nano Banana 2 | gemini-3.1-flash-image-preview | :generateContent |
Googleネイティブ形式 | APIYIなどのプラットフォーム |
| Nano Banana Pro | gemini-3-pro-image-preview | :generateContent |
Googleネイティブ形式 | APIYIなどのプラットフォーム |
| Imagen 3 | imagen-3.0-generate-001 | /v1/images/generations または :predict |
OpenAI互換形式 | APIYIなどのプラットフォーム |
| DALL-E 3 | dall-e-3 | /v1/images/generations |
OpenAI形式 | APIYIなどのプラットフォーム |
Nano Banana 2 画像生成API主要パラメータ説明

generateContentエンドポイントは豊富な画像生成パラメータをサポートしています:
| パラメータ | 説明 | 必須 | 例 |
|---|---|---|---|
contents.parts.text |
画像説明プロンプト | ✅ 必須 | "日差しの中のオレンジ猫" |
responseModalities |
応答モダリティ設定 | ✅ 必須 | ["TEXT", "IMAGE"] |
imageConfig.aspectRatio |
画像アスペクト比 | オプション | "1:1", "16:9", "9:16" |
contents.parts.inlineData |
参照画像(画像から画像生成) | オプション | Base64画像データ |
💡 重要:
responseModalitiesには必ず"TEXT"と"IMAGE"の両方を指定してください。["IMAGE"]のみの設定ではリクエストが失敗します。これはGemini画像モデルがマルチモーダルモデルであり、常にテキスト説明と画像の両方を出力するためです。
よくある質問
Q1: Nano Banana 2 を OpenAI 形式で呼び出せないのはなぜですか?
Nano Banana 2(gemini-3.1-flash-image-preview)は Gemini をベースにしたマルチモーダル言語モデルであり、その画像生成能力は専用の「テキストから画像生成インターフェース」ではなく、「対話生成」を通じて実現されています。OpenAI 形式の /v1/images/generations エンドポイントは、DALL-E や Imagen などの専用画像生成モデル向けに設計されており、Gemini モデルのマルチモーダルなリクエスト構造を処理できません。APIYI apiyi.com プラットフォームを通じて呼び出す際は、モデルの種類に応じて対応するエンドポイント形式を選択する必要があります。
Q2: Nano Banana 2 と Nano Banana Pro の画像 API の違いは何ですか?
どちらも generateContent エンドポイントを使用し、呼び出し形式はまったく同じです。主な違いは以下の通りです:
- Nano Banana 2(Flash 版):生成速度が速く、約 3-5 秒。バッチ生成や迅速なプロトタイピングに適しています。
- Nano Banana Pro:画像品質が高く、文字レンダリングの精度は 94%。精密なデザインや商用用途に適しています。
APIYI apiyi.com プラットフォームでは両方のモデルが利用可能で、エンドポイント URL でモデル名を切り替えるだけです。
Q3: generateContent から返される画像データはどのように処理しますか?
OpenAI 形式が画像 URL を返すのとは異なり、generateContent は Base64 エンコードされたインライン画像データを返します。処理手順は以下の通りです:
- レスポンス JSON の
candidates[0].content.partsから、inlineDataを含む部分を見つけます。 inlineData.dataフィールドの Base64 文字列を取得します。base64.b64decode()を使用してデコードし、画像ファイルとして保存します。inlineData.mimeTypeフィールドで画像フォーマット(通常はimage/png)がわかります。
まとめ
Nano Banana 2 画像 API のエラーの核心ポイント:
- エラー原因の明確化:
/v1/images/generations(OpenAI 形式)を使用して Gemini 画像モデルを呼び出すと、"not supported model" エラーが発生します。 - generateContent への切り替え:正しいエンドポイントは
/v1beta/models/gemini-3.1-flash-image-preview:generateContentです。 - responseModalities の設定:
generationConfigに["TEXT", "IMAGE"]を含めることが必須です。含めないと画像を生成できません。
Nano Banana 2 API でエラーが発生した場合、核心は一言で言えば:OpenAI の画像生成エンドポイントを、Google ネイティブの generateContent エンドポイントに置き換える ことです。
Google Cloud アカウントの設定なしで generateContent 形式を直接呼び出せる APIYI apiyi.com プラットフォームを通じて、Nano Banana 2 と Nano Banana Pro を無料枠で迅速にテストすることをお勧めします。
📚 参考資料
-
Google Gemini 画像生成ドキュメント: Gemini API 公式画像生成ガイド
- リンク:
ai.google.dev/gemini-api/docs/image-generation - 説明: generateContent エンドポイントの完全なパラメータ説明とサンプルを含む
- リンク:
-
Google generateContent API リファレンス: Gemini API コンテンツ生成インターフェースドキュメント
- リンク:
ai.google.dev/api/generate-content - 説明: generateContent エンドポイントのリクエストとレスポンス構造の詳細
- リンク:
-
Google Gemini OpenAI 互換性ドキュメント: Gemini と OpenAI フォーマットの互換性説明
- リンク:
ai.google.dev/gemini-api/docs/openai - 説明: どの機能が OpenAI 互換フォーマットをサポートしているか、どれがネイティブフォーマットを必要とするかを理解する
- リンク:
著者: APIYI 技術チーム
技術交流: コメント欄で Nano Banana 2 画像 API 呼び出しに関する議論を歓迎します。詳細な資料は APIYI docs.apiyi.com ドキュメントセンターでご覧いただけます
