Nano Banana 2 API nutzen: Anleitung zu Key, Anfrage und Ergebnis
Die Nano Banana 2 API Schritt für Schritt: Key erstellen, generateContent-Anfrage senden, Aufgabe abfragen, Referenzbilder nutzen, Coding-Agenten einsetzen.
Als Markdown lesenUm die Nano Banana 2 API zu nutzen, erstellst du einen API-Key, sendest Googles generateContent-Request-Body mit einem model-Feld an einen Endpunkt und fragst die zurückgegebene Aufgabe ab, bis die Bild-URL bereitsteht. Dieselben Schritte funktionieren für Nano Banana Pro und Nano Banana 2 Lite; nur der Wert von model ändert sich.
Diese Anleitung geht jeden Schritt mit funktionierendem Code durch und zeigt dann, wie du mit Referenzbildern bearbeitest und die Aufgabe an einen Coding-Agenten übergeben.
Was brauchst du vor der ersten Anfrage?
- Einen API-Key. Erstelle ihn auf der Seite API-Keys und bewahre ihn auf deinem Server auf. Setze ihn niemals in Browser-Code ein.
- Guthaben. Lade auf der Abrechnungsseite Guthaben auf. Guthaben verfällt nie, und fehlgeschlagene Anfragen werden nicht berechnet.
- Eine Modell-ID.
gemini-3.1-flash-imageberechnet einen festen Preis pro Bild;gemini-3.1-flash-image-officialrechnet nach Token ab. Der Preisleitfaden hilft dir bei der Wahl.
export SEEDROUTER_API_KEY="your-key"Wie sendest du eine Anfrage an Nano Banana 2?
Sende die Anfrage per POST an /v1/images/generations. Der Body hat Googles generateContent-Form plus 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"}
}
}'Die Antwort ist eine Aufgabe, kein Bild:
{
"id": "task_...",
"model": "gemini-3.1-flash-image",
"status": "processing",
"created_at": 1790310979
}Wenn du Googles API bereits aufrufst, ist der Body, den du sendest, derselbe, den du an generateContent schicken würdest. Ein direkter Aufruf von /v1beta/models/...:generateContent bei SeedRouter wird nicht unterstützt; nutze diesen Endpunkt.
Wie bekommst du das Bild?
Frag die Aufgabe alle paar Sekunden ab, bis status den Wert completed oder failed hat. In 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}.")Eine abgeschlossene Aufgabe enthält die Bild-URL in output.data[0].url sowie den Token-Verbrauch. Mit "responseModalities": ["TEXT", "IMAGE"] kommt jeder Text, den das Modell schreibt, in output.text zurück. Lade das Bild in deinen eigenen Speicher herunter, wenn du es langfristig brauchst.
Ein Timeout beim Abfragen bedeutet nicht, dass das Bild fehlgeschlagen ist. Behalte die Aufgaben-ID und frag erneut ab; eine neue Anfrage bedeutet, ein zweites Bild zu bezahlen.
Wie bearbeitest du ein Bild oder nutzt Referenzen?
Füge neben dem Text fileData-Parts hinzu. Jeder besteht aus einer öffentlichen URL und ihrem MIME-Typ:
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 akzeptiert bis zu 14 Referenzen pro Anfrage: Bilder, Videos oder PDFs, jeweils unter 50 MB. Referenzen müssen URLs sein; Base64-inlineData wird nicht akzeptiert. Lässt sich eine URL nicht abrufen, schlägt die Aufgabe fehl und wird nicht berechnet. Für eine Folgebearbeitung sendest du die früheren Turns als user- und model-Einträge und schließen mit einem neuen user-Turn ab.
Welche Einstellungen sind am wichtigsten?
| Einstellung | Was sie bewirkt |
|---|---|
imageConfig.imageSize | 512, 1K, 2K oder 4K; standardmäßig 1K |
imageConfig.aspectRatio | 14 Seitenverhältnisse von 1:8 bis 8:1; folgt ohne Angabe der ersten Referenz |
responseModalities | ["IMAGE"] nur für das Bild, ["TEXT", "IMAGE"], um auch Text zu erhalten |
systemInstruction | Feste Regeln wie ein Hausstil |
seed | Wiederverwenden, um näher an ein früheres Ergebnis zu kommen |
mediaResolution | Wie viele Token jede Referenz verbraucht; niedriger ist bei Official günstiger |
Die API-Referenz zu Nano Banana 2 listet jedes Feld und jedes Limit. Unbekannte Felder werden abgelehnt, bevor etwas berechnet wird, und Google Search Grounding (tools) ist noch nicht verfügbar.
Wie lässt du einen Coding-Agenten die Nano Banana 2 API nutzen?
Ein Coding-Agent wie Claude Code, Codex oder Cursor kann die API mit einem Shell-Befehl oder einem kurzen Skript aufrufen. SeedRouter liefert keinen MCP-Server und keinen fertigen Skill; dieser Prompt ist die gesamte Integration. Exportiere zuerst den Key und füge dann Folgendes ein:
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.Der Freigabeschritt ist wichtig: Der Agent gibt dein Guthaben aus und sollte daher niemals selbstständig absenden.
Häufige Fragen
Wie bekomme ich einen API-Key für Nano Banana 2?
Melde dich an, öffne die Seite API-Keys und erstelle einen Key. Derselbe Key funktioniert für Nano Banana 2, Nano Banana Pro, Nano Banana 2 Lite und die anderen Modelle bei SeedRouter.
Unterstützt die Nano Banana 2 API Batch-Anfragen?
Sende eine Anfrage pro Bild und frag die Aufgaben parallel ab. Jede Anfrage liefert ein Bild, und jede Aufgabe wird einzeln abgerechnet.
Welche Fehler sollte ich behandeln?
Ein 400 bedeutet, dass der Body gegen eine Regel verstoßen hat, etwa durch ein unbekanntes Feld oder eine nicht unterstützte Größe; berechnet wird nichts. Eine Aufgabe, die mit failed endet, enthält eine Fehlermeldung und wird ebenfalls nicht berechnet. Der Leitfaden zu Fehlern listet jeden Code und wann sich ein erneuter Versuch lohnt.
Sende deine erste Anfrage
Erstelle einen Key, lade ein kleines Guthaben auf und führe das Python-Beispiel oben aus – oder probiere dieselbe Anfrage ohne Code im Nano Banana 2 Playground. Für komplexe Prompts änderst du das Modell auf gemini-3-pro-image für Nano Banana Pro.



