Die Nano Banana API bietet drei kostenpflichtige Modell-IDs auf TokenLab, wobei die günstigste etwa halb so viel pro Bild kostet wie die mittlere. Der teure Fehler ist selten die Wahl des Modells. Er besteht darin, eine Bearbeitungsanfrage an den falschen Endpunkt zu senden oder einen Create-Aufruf zu wiederholen, der bereits eine Aufgabe erstellt hat. Dieses Handbuch behandelt die genauen IDs, einen funktionierenden Text-zu-Bild-Aufruf, einen Referenzbild-Aufruf, asynchrones Polling, erwartete Fehler und wie die Abrechnung festgelegt wird. Preise und Feldlisten wurden am 03.10.2026 eingelesen; bestätigen Sie diese daher erneut, bevor Sie Ihre Anwendung veröffentlichen.
Wichtige Erkenntnisse
- Senden Sie die exakte ID:
nano-banana-2,nano-banana-2-liteodernano-banana-pro. Anzeigenamen sind keine Aliasse für Anfragen. - Referenzbild-Arbeiten für Nano Banana gehen an
POST /v1/images/generationsmitoperation: "image-to-image"undimage_urls. Sie gehen nicht an/v1/images/editsoder/v1/chat/completions. - Die Basispreise, die wir am 03.10.2026 gelesen haben, liegen bei 0,0168 $, 0,0335 $ und 0,067 $ pro Bild für die Lite-, Standard- und Pro-IDs. Jedes Modell hat eine Preisspanne, prüfen Sie daher die genaue Stufe unter „Usage“.
- Eine Create-Antwort mit
task_id,status: "pending"oderpoll_urlbedeutet, dass SieGET /v1/tasks/{id}abfragen müssen, bis der Statuscompletedoderfailedlautet. - Ein Status-Lesevorgang gibt HTTP 200 zurück, selbst wenn die Aufgabe fehlgeschlagen ist. Unterscheiden Sie anhand des
status-Feldes der Aufgabe, nicht anhand des HTTP-Codes. - Die endgültigen Gebühren finden Sie unter „Usage“ und in der
billing_transaction_id, nicht in einer kopierten Preistabelle.
Nano Banana API-Modelle, Preiseinheiten und Verwendungszweck
Als wir den früheren Entwurf dieses Handbuchs mit der aktuellen Dokumentation verglichen haben, fanden wir drei Probleme. Es wurden Modelle ohne Preise aufgelistet. Es wurde eine Nano-Banana-Bearbeitung über Chat-Completions gesendet. Es wurde der Katalog mit einem Filter abgefragt, den das Bild-Handbuch nicht verwendet. Die folgende Tabelle korrigiert den ersten Punkt. Die späteren Abschnitte korrigieren die anderen beiden.
| Modell-ID | Am besten geeignet für | Preiseinheit | TokenLab-Preis (USD) | Quelle, beobachtet |
|---|---|---|---|---|
nano-banana-2 |
Text-zu-Bild und Bild-zu-Bild mit aspect_ratio und resolution (1k, 2k, 4k). Veröffentlicht am 26.02.2026. |
per_image |
0,0335 $ pro Anfrage. Bereich 0,0225 $ bis 0,0755 $. | Live-Modell-API, 03.10.2026 |
nano-banana-2-lite |
Günstigstes Text-zu-Bild und Bild-zu-Bild. Der von uns gesehene Preiseintrag deckt die 1k-Stufe ab. | per_image |
0,0168 $ pro Anfrage. Min. und Max. jeweils 0,0168 $. | Live-Modell-API, 03.10.2026 |
nano-banana-pro |
Text-zu-Bild, Bild-zu-Bild und Bildbearbeitung mit aspect_ratio und resolution. |
per_image |
0,067 $ pro Anfrage. Bereich 0,067 $ bis 0,12 $. | Live-Modell-API, 03.10.2026 |
nano-banana |
Text-zu-Bild nur mit aspect_ratio. Keine öffentliche resolution-Auswahl. |
Nicht in unseren Daten | Überprüfen Sie die Modellseite oder den Preis-Endpunkt | Katalog, 02.10.2026; Create Image-Dokumentation, 03.10.2026 |
Alle oben genannten Preise enthalten is_lock_price: true und wurden am 02.10.2026 um 16:53:30.068Z aktualisiert. Drei Details sind wichtig, bevor Sie sich für eines entscheiden:
- Auflösungsstufen beeinflussen den Preis. Die Live-API zeigt einen Bereich für
nano-banana-2undnano-banana-pro, aber unsere Daten ordnen nicht jede Stufe einer Auflösung zu. Gehen Sie nicht davon aus, dass1kder Basispreis ist. Lesen Sie die Preiseinträge für Ihr Modell. - Textausgabe hat einen eigenen Token-Preis. Sowohl
nano-banana-2als auchnano-banana-proenthalten einennative-gemini-text-output-Eintrag. Dieser gilt, wennoutputModalityauftextgesetzt ist. Fürnano-banana-2sind 0,25 Input und 1,5 Output gelistet. Fürnano-banana-prosind 1 Input und 6 Output gelistet. Die Einheit istper_token. Bestätigen Sie die Skalierung unterGET /v1/models/:model/pricing, bevor Sie Ihr Budget darauf ausrichten. - Lite listet kein akzeptiertes Anfrageformat. Der Live-Datensatz für
nano-banana-2-litebesagt „nicht gelistet“. Lesen Sie die Details, bevor Sie darauf aufbauen.
Für ein grobes Budget multiplizieren wir den Basispreis mit dem Volumen. Dies sind Schätzungen zum Basispreis, keine Angebote:
- 100 Bilder mit
nano-banana-2-lite: 100 × 0,0168 $ = 1,68 $. - 100 Bilder mit
nano-banana-2: 100 × 0,0335 $ = 3,35 $. - 100 Bilder mit
nano-banana-pro: 100 × 0,067 $ = 6,70 $.
Höhere Auflösungsstufen erhöhen diese Zahlen.
Um aktuelle Bildmodelle selbst aufzulisten, rufen Sie den Endpunkt auf, den das Handbuch zur Bilderzeugung verwendet. Der frühere Entwurf verwendete category=image, was im Handbuch nicht dokumentiert ist.
curl "https://api.tokenlab.sh/v1/models?recommended_for=image" \
-H "Authorization: Bearer sk-your-api-key"
Für Operationen, Preise und Lebenszyklus eines Modells verwenden Sie Get a Model. Sie können auch das TokenLab-Modellverzeichnis durchsuchen.
Senden einer Text-zu-Bild-Anfrage mit der Nano Banana API
Erstellen Sie einen API-Schlüssel im TokenLab-Dashboard und exportieren Sie ihn:
export TOKENLAB_API_KEY="your-tokenlab-api-key"
Senden Sie immer das model. Die Create Image-Referenz besagt, dass Bild-APIs kein Standardmodell wählen. Ein fehlendes Modell gibt einen 400-Fehler mit param: "model" zurück.
Diese Anfrage verwendet nur Felder, die in der Dokumentation für Google-Bildfamilien aufgeführt sind. Wir haben resolution auf 1k belassen, da nano-banana-2 die Werte 1k, 2k und 4k dokumentiert.
curl -X POST "https://api.tokenlab.sh/v1/images/generations" \
--max-time 120 \
-H "Authorization: Bearer $TOKENLAB_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "nano-banana-2",
"prompt": "A minimalist ceramic vase on a natural wooden table, studio lighting",
"aspect_ratio": "1:1",
"resolution": "1k",
"response_format": "url"
}'
Das Flag --max-time 120 entspricht der Dokumentation. Dort heißt es, dass hochauflösende Anfragen fast eine Minute oder länger dauern können, setzen Sie also Ihr Client-Timeout auf mindestens 120 Sekunden. Die Dokumentation besagt, dass size ein Kompatibilitäts-Alias für Google-Bildfamilien ist, sie empfehlen jedoch, direkt aspect_ratio zu verwenden.
Ein synchroner Erfolg gibt das fertige Bild inline zurück. Die Platzhalterwerte unten zeigen nur die dokumentierte Form:
{
"created": 1700000000,
"data": [
{ "url": "https://example.com/generated-image.png" }
]
}
Lesen Sie es in dieser Reihenfolge:
- Wenn der Body
task_id,status: "pending"oderpoll_urlenthält, haben Sie eine Aufgabe, kein Bild. Gehen Sie zum Abschnitt „Polling“. - Andernfalls lesen Sie
data[0].url. Beiresponse_format: "b64_json"lesen Sie stattdessendata[0].b64_json. createdist ein Unix-Zeitstempel.revised_prompterscheint nur, wenn das Modell einen zurückgibt, fordern Sie ihn also nicht zwingend an.- Speichern Sie die Bild-URL, Ihre eigene Job-ID, das Modell und die
request_idaus den Antwort-Headern.
Generierte Bild-URLs können 30 Tage lang als Medienkopien aufbewahrt werden. Überprüfen Sie media_retention.items auf den Status jedes Elements und expires_at. Ausstehende oder fehlgeschlagene Kopien sind nicht garantiert; kopieren Sie die Datei daher in Ihren eigenen Speicher, wenn Sie sie länger benötigen. Das Handbuch zur Datenaufbewahrung enthält die Details.
Bildbearbeitung mit einer Referenz-URL
Stellen Sie sich ein Katalogteam vor, das dieselbe Produktaufnahme auf einem sauberen Studiohintergrund möchte. Der verlockende Schritt ist /v1/images/edits. Die Dokumentation schließt dies aus. Nano-Banana-Referenzbildanfragen werden über /v1/images/generations mit operation: "image-to-image" abgewickelt. /v1/images/edits ist nicht der richtige Pfad dafür.
Diese Anfrage stammt aus dem Handbuch zur Bilderzeugung, mit nano-banana-2 als Modell:
curl https://api.tokenlab.sh/v1/images/generations \
-H "Authorization: Bearer $TOKENLAB_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "nano-banana-2",
"operation": "image-to-image",
"prompt": "Keep the product shape, change the background to a bright studio setup",
"image_urls": ["https://example.com/input/product.png"],
"aspect_ratio": "1:1"
}'
Regeln, die wir bei dieser Form befolgen:
- Senden Sie genau die dokumentierten Referenzfelder. Verwenden Sie
image_url,image_urlsoderreference_image_urlsim JSON. Senden Sie kein Top-Levelimages[]oderfile_id. Diese gehören zum Edit-Flow und werden an diesem Endpunkt abgelehnt. - Verwenden Sie öffentliche URLs. Sie müssen
httpoderhttpssein, ohne eingebettete Anmeldeinformationen, ohne Fragmente und ohne Hosts in privaten Netzwerken. Vermeiden Sie signierte URLs, die ablaufen könnten, bevor die Verarbeitung beginnt. - Verwenden Sie Multipart für private Quellen. Die Dokumentation bietet eine Multipart-
image-Datei für Quellen, die privat oder Header-geschützt sind. - Passen Sie
resolutionan das Modell an. Die Dokumentation besagt, dassnano-banana-prosie enthalten kann undnano-banana-editsie weglassen sollte. Die Dokumentation nennt auchnano-banana-editals Referenzbildmodell, aber diese ID ist nicht in dem Katalog enthalten, den wir am 02.10.2026 abgerufen haben. Überprüfen Sie jede ID gegen/v1/models, bevor Sie sie verwenden.
Das Beispiel für die Bildbearbeitung via Chat-Completions aus dem Quellartikel ist nicht mehr vorhanden. Der Live-Datensatz listet gemini_generate_content als akzeptiertes Format für nano-banana-2 und nano-banana-pro auf. Unsere Daten dokumentieren keinen Pfad für Bildbearbeitung via Chat-Completions.
Maskenbasiertes Inpainting und Parameter wie strength sind in unseren Daten für Nano Banana nicht dokumentiert. Überprüfen Sie GET /v1/models/{model}, bevor Sie diese senden.
Wann eine Bildanfrage zu einer Aufgabe wird und wie man sie abfragt
Ein Bild-Create-Aufruf ist entweder synchron oder asynchron, und die Antwort verrät Ihnen, welcher Typ vorliegt. Das Handbuch für asynchrone Jobs listet die Trigger-Felder auf: task_id, status: "pending" oder poll_url. Wenn eines davon erscheint, ist das data[]-Array leer und die Arbeit läuft noch.
Unsere Daten dokumentieren das async: true-Anfrage-Flag nur für gpt-image-2 und offizielle FLUX/BFL-Bildmodelle. Es ist für die Nano-Banana-IDs nicht dokumentiert. Fügen Sie es nicht zu einer Nano-Banana-Anfrage hinzu. Behandeln Sie eine Aufgabenantwort, falls eine zurückkommt, und prüfen Sie die Modelldetails, wenn Sie asynchrones Verhalten benötigen.
Stellen Sie sich einen Browser-Refresh vor, der den Create-Aufruf nach einer langsamen Antwort erneut sendet. Sie bezahlen nun für zwei Generationen. Die Dokumentation besagt, dass die meisten doppelten Generationen durch diesen Retry entstehen. Befolgen Sie diese Reihenfolge:
- Speichern Sie IDs sofort. Speichern Sie
idodertask_id,poll_url, das Modell, den Endpunkt und Ihre eigene Job-ID.idundtask_idsind derselbe Wert. - Fragen Sie die URL ab. Verwenden Sie
poll_url, wenn vorhanden. Andernfalls rufen Sie die feste Route auf:
curl "https://api.tokenlab.sh/v1/tasks/$TASK_ID" \
-H "Authorization: Bearer $TOKENLAB_API_KEY"
- Fragen Sie alle 5–10 Sekunden ab. Das Handbuch sagt, dass dies normalerweise für lange Medienjobs ausreicht.
- Kennen Sie die Status. Sie lauten
pending,processing,completedundfailed. Eine abgebrochene Aufgabe zeigtfailedmitcancelled: truean. - Stoppen Sie bei einem terminalen Status. Bei
completedlesen Siedata[].url. Asynchrone Bildergebnisse sind nur URLs, niemalsb64_json. Beifailedlesen Sieerrorunderror_details. - Behandeln Sie Timeouts sicher. Wenn ein Create-Aufruf ein Timeout hat, bevor Sie eine Antwort sehen, prüfen Sie die
request_idund suchen Sie nach einer Aufgabe, bevor Sie es erneut versuchen. Wenn Sie eine Aufgaben-ID gespeichert haben, setzen Sie das Polling fort. Wenn ein Status-Polling fehlschlägt, wiederholen Sie dieses Polling mit Backoff und erstellen Sie nicht neu.
Ein Status-Lesevorgang gibt HTTP 200 auch für eine fehlgeschlagene Aufgabe zurück. Fehlgeschlagene Aufgaben können error_details mit status, type, code, message, param und retryable enthalten. Zum Beispiel bedeutet error_details.status: 400 mit param: "size", dass die Anfrage korrigiert werden muss. Es bedeutet nicht, dass das Polling selbst fehlgeschlagen ist. Das Wiederholen einer fehlgeschlagenen Generierung erstellt eine neue Aufgabe und kann eine neue Gebühr verursachen.
Zu erwartende Fehler und Vorgehensweise
Behandeln Sie Fehler anhand des HTTP-Status und des code, niemals anhand der message. Das Handbuch zur Fehlerbehandlung besagt, dass sich die Nachricht ohne Vorankündigung ändern kann. Chat-Completions und Responses verwenden ein error-Objekt im OpenAI-Stil, während Gemini- und Anthropic-Formate ihre eigenen Formen beibehalten. Verwenden Sie nicht denselben Parser für alle TokenLab-APIs.
| Status / Code | Mögliche Ursache | Vorgehensweise |
|---|---|---|
400, param: "model" |
Kein explizites Modell | Senden Sie model. Listen Sie IDs mit /v1/models?recommended_for=image auf. |
400 unsupported field, oder unsupported_parameter |
Ein Feld, das das Modell nicht dokumentiert, z. B. resolution bei einem Modell ohne diese Funktion |
Entfernen Sie das Feld oder wechseln Sie das Modell. Wiederholen Sie es nicht unverändert. |
400 bei einem Referenzbild |
Falscher Endpunkt oder eine private/abgelaufene URL | Verwenden Sie /v1/images/generations mit image_urls. Verwenden Sie eine öffentliche, stabile URL. |
401 invalid_api_key oder expired_api_key |
Fehlender, widerrufener oder abgelaufener Schlüssel | Ersetzen Sie den Schlüssel. |
402 insufficient_balance oder quota_exceeded |
Guthaben zu niedrig oder Limit des Schlüssels erreicht | Guthaben aufladen, Schlüssel-Limit erhöhen oder ein günstigeres Modell wählen. |
403 model_not_allowed |
Der Schlüssel darf dieses Modell nicht verwenden | Aktualisieren Sie die Modellliste des Schlüssels. |
404 model_not_found |
Unbekannte oder nicht verfügbare ID | Lesen Sie /v1/models und verwenden Sie eine aktuelle ID. |
413 payload_too_large |
Anfrage oder Datei zu groß | Reduzieren Sie den Input. |
429 rate_limit_exceeded |
Zu viele Anfragen im Zeitfenster | Warten Sie auf Retry-After, dann erneut versuchen. |
500–504, all_channels_failed |
Dienst- oder Versorgungsproblem | Wiederholen Sie nur, wenn retryable auf true steht. Beachten Sie retry_after und begrenzen Sie die Versuche. |
Ein 503 all_channels_failed bedeutet nicht immer einen Ausfall. Wenn retryable auf false steht und retry_after fehlt, gibt es für die Operation in der ausgewählten Delivery-Stufe kein Angebot. Das Wiederholen der Anfrage hilft nicht, prüfen Sie daher zuerst GET /v1/models.
Das Aufgaben-Polling hat eigene Fehler:
404 async_task_not_found: die Aufgabe ist abgelaufen oder weg. Prüfen Sie die gespeichertetask_idundpoll_url.403 task_not_owned: die Aufgabe gehört zu einem anderen Workspace. Prüfen Sie, zu welchem Workspace der API-Schlüssel gehört.- Eine abgeschlossene Aufgabe ohne Medien-URL: behandeln Sie sie als fehlgeschlagen. Behalten Sie die IDs und kontaktieren Sie den Support.
Wenn Sie den Support kontaktieren, senden Sie request_id, task_id, billing_transaction_id (falls vorhanden), Endpunkt, Modell, Zeit und Feldnamen. Senden Sie niemals Schlüssel, private Medien oder signierte URLs.
Wie die Gebühr für eine Bildanfrage bestimmt wird
Alle drei kostenpflichtigen Nano-Banana-IDs verwenden die per_image-Einheit, daher ist die Hauptgebühr der per_request-Preis des Modells. Das Abrechnungshandbuch ergänzt die Regeln dazu:
- Ein Ergebnis, eine Gebühr. Jede abgeschlossene Anfrage wird einmal berechnet, für die Lieferoption, die sie produziert hat.
TokenLab Verifiedverwendet öffentliche TokenLab-Preise.Officialverwendet die offizielle Preisstufe.Autoversucht zuerst Verified, dann Official. - Stufen legen die endgültige Zahl fest. Die Live-Preisspannen (0,0225 $ bis 0,0755 $ für
nano-banana-2, 0,067 $ bis 0,12 $ fürnano-banana-pro) zeigen, dass ein Pauschalpreis nicht jede Anfrage abdeckt. Auflösungsstufen sind wahrscheinlich der Treiber, aber bestätigen Sie dies in den Preiseinträgen des Modells. - Aufgaben reservieren zuerst. Eine asynchrone Aufgabe kann bei Annahme ihre geschätzten Kosten reservieren. Eine abgeschlossene Aufgabe wird einmal berechnet, und eine fehlgeschlagene Aufgabe gibt den ausstehenden Betrag frei oder erstattet ihn. Das Abrechnungshandbuch besagt, dass eine fehlgeschlagene Aufgabe nicht berechnet wird.
- Ein Bindestrich ist nicht kostenlos. Auf der Modellseite bedeutet ein Bindestrich in der TokenLab-Preisspalte, dass derzeit kein Verified-Angebot verfügbar ist.
Um eine Gebühr zu bestätigen, verwenden Sie diese Orte:
GET /v1/models/:model/pricingoder die Pricing API für den aktuellen Preis.- Konsole, die die maximale Schätzung anzeigt, bevor Sie die kostenpflichtige Generierung bestätigen.
- Usage für die endgültige Gebühr pro Modell.
billing_transaction_idin der Antwort oder Aufgabe sowie denX-Billing-Transaction-ID-Header. Streaming und einige native Formate zeigen dies möglicherweise nur im Header an.
Wenn Usage die endgültige Gebühr oder den freigegebenen Betrag nach Abschluss einer Aufgabe nicht anzeigt, senden Sie die Request-ID und Aufgaben-ID an support@tokenlab.sh. Kopieren Sie die Preise in diesem Artikel nicht in Ihren Code. Das Abrechnungshandbuch besagt, dass Sie den aktuellen Preis lesen sollten, wenn Ihre Anwendung Kosten anzeigen oder vergleichen muss.
FAQ
Welche Nano-Banana-Modell-ID sollte ich für Bild-zu-Bild-Anfragen senden?
Die Live-Datensätze listen image-to-image für nano-banana-2, nano-banana-2-lite und nano-banana-pro. Die Dokumentation nennt auch nano-banana-edit, aber diese ist nicht in dem Katalog enthalten, den wir am 02.10.2026 abgerufen haben. Senden Sie die ID mit operation: "image-to-image" und image_urls an /v1/images/generations. Führen Sie einen kleinen Test mit Ihren eigenen Bildern durch, da unsere Daten keinen Qualitätsvergleich enthalten.
Warum hat meine Bildanfrage eine task_id anstelle eines Bildes zurückgegeben?
Der Create-Aufruf wurde als asynchrone Aufgabe ausgeführt. Suchen Sie in der Antwort nach task_id, status: "pending" oder poll_url. Speichern Sie diese Felder und fragen Sie dann poll_url oder GET /v1/tasks/{id} alle 5–10 Sekunden ab, bis der Status completed oder failed lautet. Senden Sie keine zweite Create-Anfrage, während Sie warten.
Kann ich eine Base64-Ausgabe von einem Nano-Banana-Modell erhalten?
Das Feld response_format akzeptiert url oder b64_json, und eine synchrone Anfrage kann data[].b64_json zurückgeben. Asynchrone Bildergebnisse sind nur URLs, unabhängig vom angeforderten Format. Überprüfen Sie die Details des ausgewählten Modells, um zu bestätigen, dass es b64_json akzeptiert, da die Felder je nach Modell variieren.
Wird eine fehlgeschlagene Bildaufgabe berechnet?
Das Abrechnungshandbuch besagt, dass eine fehlgeschlagene Aufgabe nicht berechnet wird und jede ausstehende Reservierung freigegeben oder erstattet wird. Das Wiederholen einer fehlgeschlagenen Generierung erstellt eine neue Aufgabe und kann eine neue Gebühr verursachen. Bestätigen Sie das Ergebnis unter „Usage“ mithilfe der billing_transaction_id und task_id.
Erstellen Sie einen Schlüssel im TokenLab-Dashboard, senden Sie die oben genannte Text-zu-Bild-Anfrage mit nano-banana-2-lite und überprüfen Sie die Gebühr unter „Usage“.
Quellen
Preis geprüft am 2026-10-03
- TokenLab Docs: Image generationGeprüft am 2026-10-03
- TokenLab Docs: Create ImageGeprüft am 2026-10-03
- TokenLab Docs: Edit ImageGeprüft am 2026-10-03
- TokenLab Docs: Async jobs and pollingGeprüft am 2026-10-03
- TokenLab Docs: Handle API errorsGeprüft am 2026-10-03
- TokenLab Docs: Billing and pricingGeprüft am 2026-10-03
- TokenLab Docs: Get a ModelGeprüft am 2026-10-03
- TokenLab live model API: nano-banana-2Geprüft am 2026-10-03



