Nano Banana 2 API の使い方:API キー、リクエスト、結果の取得
Nano Banana 2 API の使い方を順に解説。API キーの作成、generateContent リクエストの送信、タスクのポーリング、参照画像の追加、エージェントでの実行まで。
Markdown で読むNano Banana 2 API を使うには、API キーを作成し、Google の generateContent リクエストボディに model フィールドを加えて 1 つのエンドポイントに送信し、返されたタスクを画像 URL が用意されるまでポーリングします。同じ手順は Nano Banana Pro と Nano Banana 2 Lite でも使えます。変わるのは model の値だけです。
このガイドでは、動作するコードで各ステップを順に説明し、そのあと参照画像を使った編集方法と、作業をコーディングエージェントに任せる方法を紹介します。
最初のリクエストの前に必要なものは?
- API キー。 API キーのページで作成し、サーバー側に保管してください。ブラウザのコードには決して入れないでください。
- クレジット。 請求ページで残高をチャージします。クレジットに有効期限はなく、失敗したリクエストは課金されません。
- モデル ID。
gemini-3.1-flash-imageは画像 1 枚ごとの定額、gemini-3.1-flash-image-officialはトークン課金です。選び方は料金ガイドを参照してください。
export SEEDROUTER_API_KEY="your-key"Nano Banana 2 のリクエストはどう送る?
リクエストを /v1/images/generations に POST します。ボディは Google の generateContent の形に model を加えたものです:
curl https://api.seedrouter.ai/v1/images/generations \
-H "Authorization: Bearer $SEEDROUTER_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "gemini-3.1-flash-image",
"contents": [{"parts": [{"text": "A ceramic teapot on a linen tablecloth, soft window light"}]}],
"generationConfig": {
"responseModalities": ["IMAGE"],
"imageConfig": {"aspectRatio": "16:9", "imageSize": "2K"}
}
}'レスポンスは画像ではなくタスクです:
{
"id": "task_...",
"model": "gemini-3.1-flash-image",
"status": "processing",
"created_at": 1790310979
}すでに Google の API を呼び出しているなら、送るボディは generateContent に送るものと同じです。SeedRouter で /v1beta/models/...:generateContent を直接呼び出すことはできません。このエンドポイントを使用してください。
画像はどう取得する?
status が completed または failed になるまで、数秒ごとにタスクをポーリングします。Python の場合:
import os
import time
import requests
API = "https://api.seedrouter.ai/v1"
headers = {"Authorization": f"Bearer {os.environ['SEEDROUTER_API_KEY']}"}
response = requests.post(
f"{API}/images/generations",
headers=headers,
json={
"model": "gemini-3.1-flash-image",
"contents": [{"parts": [{"text": "A ceramic teapot on a linen tablecloth, soft window light"}]}],
"generationConfig": {
"responseModalities": ["IMAGE"],
"imageConfig": {"aspectRatio": "16:9", "imageSize": "2K"},
},
},
timeout=60,
)
response.raise_for_status()
task_id = response.json()["id"]
deadline = time.monotonic() + 600
while time.monotonic() < deadline:
result = requests.get(f"{API}/tasks/{task_id}", headers=headers, timeout=30)
result.raise_for_status()
task = result.json()
if task["status"] == "completed":
for image in task["output"]["data"]:
print(image["url"])
break
if task["status"] == "failed":
raise RuntimeError(task["error"]["message"])
time.sleep(3)
else:
raise TimeoutError(f"Still waiting. Resume polling task {task_id}.")完了したタスクでは、output.data[0].url に画像 URL が入り、トークン使用量も含まれます。"responseModalities": ["TEXT", "IMAGE"] を指定すると、モデルが書いたテキストは output.text に返ります。長期間必要な場合は、画像をご自身のストレージにダウンロードしてください。
ポーリング中のタイムアウトは、画像の生成失敗を意味しません。タスク ID を保持して再度確認してください。新しいリクエストを送信すると、2 枚目の画像の料金がかかります。
画像の編集や参照画像の使い方は?
テキストの隣に fileData パートを追加します。それぞれが公開 URL とその MIME タイプです:
curl https://api.seedrouter.ai/v1/images/generations \
-H "Authorization: Bearer $SEEDROUTER_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "gemini-3.1-flash-image",
"contents": [{
"role": "user",
"parts": [
{"text": "Turn this photo into a watercolor painting. Keep the composition."},
{"fileData": {"mimeType": "image/jpeg", "fileUri": "https://example.com/photo.jpg"}}
]
}]
}'Nano Banana 2 は 1 リクエストにつき最大 14 個の参照を受け付けます。画像・動画・PDF で、それぞれ 50 MB 未満です。参照は URL で渡す必要があり、base64 の inlineData は受け付けません。URL を取得できない場合、タスクは失敗し、課金されません。続けて編集する場合は、過去のターンを user と model のエントリとして送り、最後に新しい user ターンを加えてください。
特に重要な設定は?
| 設定 | 役割 |
|---|---|
imageConfig.imageSize | 512、1K、2K、4K。既定は 1K |
imageConfig.aspectRatio | 1:8 から 8:1 まで 14 種の比率。省略時は最初の参照に合わせる |
responseModalities | 画像のみなら ["IMAGE"]、テキストも得るなら ["TEXT", "IMAGE"] |
systemInstruction | ハウススタイルなどの常設ルール |
seed | 再利用すると以前の結果に近づけやすい |
mediaResolution | 各参照が使うトークン数。Official では低いほど安い |
Nano Banana 2 API リファレンスにすべてのフィールドと上限が記載されています。未知のフィールドは課金前に拒否され、Google 検索によるグラウンディング(tools)はまだ利用できません。
コーディングエージェントに Nano Banana 2 API を使わせるには?
Claude Code、Codex、Cursor などのコーディングエージェントは、シェルコマンドや短いスクリプトで API を呼び出せます。SeedRouter は MCP サーバーやパッケージ化されたスキルを提供していません。このプロンプトが連携のすべてです。先にキーを export してから、次を貼り付けてください:
Use the SeedRouter API to generate a Nano Banana 2 image for me.
Security: read SEEDROUTER_API_KEY from my local environment. Never ask me to paste it and never print it.
Goal: [subject, setting, style, what the image is for]
Size: [512 | 1K | 2K | 4K] Aspect ratio: [e.g. 1:1, 16:9, 9:16]
References: [public image URLs, or none]
Send POST https://api.seedrouter.ai/v1/images/generations with
{"model": "gemini-3.1-flash-image",
"contents": [{"parts": [{"text": "..."}, {"fileData": {"mimeType": "image/jpeg", "fileUri": "https://..."}}]}],
"generationConfig": {"responseModalities": ["IMAGE"],
"imageConfig": {"aspectRatio": "...", "imageSize": "..."}}}
Accepted top-level fields: model, contents, systemInstruction, safetySettings,
generationConfig. References must be fileData URLs (up to 14), never base64.
Do not add tools or any other field.
Before sending, show me the request body and wait for my approval: each
request is charged. Then poll GET https://api.seedrouter.ai/v1/tasks/{id}
every 3 seconds until status is completed or failed. If polling times out,
keep checking the same task; never resubmit. Save output.data[0].url into
./images/ and tell me the file path.承認のステップは重要です。エージェントはあなたの残高を使うため、自分の判断で送信させてはいけません。
よくある質問
Nano Banana 2 の API キーはどう取得しますか?
サインインして API キーのページを開き、キーを作成します。同じキーで Nano Banana 2、Nano Banana Pro、Nano Banana 2 Lite、そして SeedRouter の他のモデルを使えます。
Nano Banana 2 API はバッチリクエストに対応していますか?
画像 1 枚につき 1 リクエストを送り、タスクを並行してポーリングしてください。各リクエストは 1 枚の画像を返し、各タスクは個別に課金されます。
どのようなエラーに対処すべきですか?
400 は、未知のフィールドや非対応のサイズなど、ボディがルールに違反したことを意味し、課金はされません。failed で終わったタスクにはエラーメッセージが含まれ、これも課金されません。エラーガイドに、すべてのコードとリトライすべき場合が記載されています。
最初のリクエストを送る
キーを作成し、少額をチャージして、上の Python の例を実行してください。コードを書かずに同じリクエストを試すなら Nano Banana 2 の Playground を使えます。複雑なプロンプトには、モデルを gemini-3-pro-image に変えて Nano Banana Pro を使ってください。



