Zurück zum Blog

KI für EinsteigerAnleitung

Fehler „Not enough tokens“: Was er bedeutet und wie man ihn behebt

Leeres Guthaben, Rate Limit, falscher Schlüssel, zu langer Prompt oder abgeschnittene Antwort: Ordne deinen API-Fehler einer von fünf Ursachen zu, führe eine kurze Prüfung aus, wende die Lösung an.

Von CheapTokens TeamVeröffentlicht am Aktualisiert am 7 Min. Lesezeit

Cover mit den Worten „Not enough tokens?“ über fünf Labels: Guthaben, Rate, Schlüssel, Kontext, Ausgabe
Auf dieser Seite
  1. Drei Dinge, die „tokens“ bedeuten kann
  2. 1. Das Guthaben ist leer
  3. 2. Du hast ein Rate Limit erreicht
  4. 3. Der Schlüssel ist falsch
  5. 4. Der Prompt passt nicht in das Kontextfenster
  6. 5. Die Antwort wurde abgeschnitten
  7. Dasselbe Problem unter verschiedenen Namen
  8. Sieh, was tatsächlich zurückkommt
  9. Wenn die Prüfung auf das Guthaben deutet

„Not enough tokens“ ist nicht ein Fehler. Der Ausdruck wird für fünf verschiedene Probleme verwendet: Das Guthaben ist leer, die Anfragen kommen zu schnell, der Schlüssel ist falsch, der Prompt passt nicht in das Kontextfenster des Modells, oder die Antwort hat das Ausgabelimit erreicht und mitten im Satz abgebrochen. Jedes Problem hat seine eigene Lösung, und der schnellste Weg, sie auseinanderzuhalten, sind der HTTP-Status und der Fehler-Body, nicht der Wortlaut der Meldung.

Finde dein Symptom in der Tabelle, führe die Prüfung aus, wende die Lösung an.

Was du siehst Wahrscheinliche Ursache Prüfung Lösung
Anfrage abgelehnt; die Meldung nennt Guthaben, Abrechnung oder Credit Guthaben ist leer Öffne dein Konto und sieh dir das Guthaben an Guthaben aufladen, erneut versuchen
Funktioniert, dann schlägt es schubweise fehl, nach einer Pause wieder in Ordnung Rate Limit: zu viele Anfragen auf einmal oder pro Minute Geht dieselbe Anfrage durch, wenn du eine Minute wartest? Sendest du Anfragen parallel? Drosseln, mit wachsender Verzögerung erneut versuchen
Jede Anfrage schlägt sofort fehl, selbst ein einzeiliger Prompt Falscher, abgelaufener oder falsch eingegebener Schlüssel, oder falsche Base-URL Vergleiche den Schlüssel in deinem Code mit dem in deinem Konto; prüfe die URL Einen frischen Schlüssel einfügen, ihn aus dem Quellcode heraushalten
Kurze Prompts funktionieren, lange schlagen fehl Prompt plus Verlauf ist größer als das Kontextfenster Schätze die Größe von allem, was du sendest Verlauf kürzen oder zusammenfassen, das Dokument aufteilen oder ein Modell mit größerem Fenster wählen
Kein Fehler, aber die Antwort endet mitten im Satz Die Antwort hat das Ausgabelimit erreicht finish_reason ist "length" max_tokens bis zum Limit des Modells erhöhen, ein kürzeres Format verlangen oder um Fortsetzung bitten

Drei Dinge, die „tokens“ bedeuten kann#

Das Wort in der Fehlermeldung verweist auf drei verschiedene Größen.

  • Guthaben. Tokens sind das, wofür du bezahlst, also bedeutet „out of tokens“ oft „out of money“. Bei einem Prepaid-Dienst ist das das Guthaben.
  • Ein Limit pro Minute. Limits können in Anfragen oder in Tokens pro Minute gezählt werden. Triffst du eines, ist die Lösung zu warten und weniger auf einmal zu senden.
  • Fenstergröße. Das Kontextfenster gibt an, wie viele Tokens das Modell in einer Anfrage lesen kann, dein Prompt und seine Antwort zusammen.

Und eines bedeutet es nie: Ein API-Schlüssel ist kein Vorrat an Tokens. Der Schlüssel identifiziert dein Konto. Was ausgeht, ist das Guthaben dahinter oder ein daran geknüpftes Limit. Wenn du mit der Einheit selbst noch nicht vertraut bist, beginne mit What is a token in AI?.

1. Das Guthaben ist leer#

Die API-Dokumentation von DeepSeek beschreibt HTTP 402 Insufficient Balance als „You have run out of balance“. Die Claude-API verwendet 402 billing_error für Abrechnungs- und Zahlungsprobleme. Andere Namen, dieselbe Situation: Das Geld ist weg.

CheapTokens funktioniert im Prinzip genauso: ein Prepaid-Guthaben, Pay as you go, ein Guthaben für alle Modelle. Wenn also etwas nicht funktioniert, sieh zuerst auf das Guthaben. Es ist eine Prüfung von zehn Sekunden und schließt die häufigste Ursache aus.

2. Du hast ein Rate Limit erreicht#

DeepSeek dokumentiert HTTP 429 Rate Limit Reached als zu schnell eintreffende Anfragen oder als Überschreitung eines Concurrency- oder QPS-Limits. Die Lösung ist, sie zu takten: weniger parallele Anfragen und eine Retry-Verzögerung, die wächst (1 s, 2 s, 4 s), statt den Endpoint zu bombardieren.

Eine Falle. Die Claude-API gibt ebenfalls 429 rate_limit_error zurück, wenn du die monatliche Ausgabengrenze deines Tiers erreichst, und diese Antwort hat keinen retry-after-Header. Ein 429, das nach dem Warten nie verschwindet, kann also am Geld liegen, nicht an der Geschwindigkeit. Wenn Warten nicht hilft, geh zurück zu Ursache 1.

3. Der Schlüssel ist falsch#

HTTP 401 ist in beiden Dokumentationen ein Schlüsselproblem: DeepSeek listet es als falschen API-Schlüssel, Claude als authentication_error. Die üblichen Gründe sind ein versehentliches Leerzeichen oder ein Zeilenumbruch, der mit dem Schlüssel kopiert wurde, ein gelöschter oder neu generierter Schlüssel und ein Schlüssel, der an die falsche Adresse gesendet wird. Ein Schlüssel von einem Dienst funktioniert nicht unter der URL eines anderen Dienstes. Bei CheapTokens lautet die Base-URL https://api.cheaptokens.dev/v1.

Zu den anderen Fehlern, die beim Verbinden auftreten können, siehe Common connection errors and how to fix them.

4. Der Prompt passt nicht in das Kontextfenster#

Das Kontextfenster zählt alles, was das Modell in einer Anfrage liest: den System-Prompt, den gesamten Gesprächsverlauf, deine neue Nachricht und Platz für die Antwort. Bei CheapTokens sind die Fenster der Modelle in unserem Katalog:

Modell Kontextfenster Max. Ausgabe pro Antwort
DeepSeek-V4-Flash 380K 32.768 Tokens
GLM-5.3-Flash 390K 8.192 Tokens
MiniMax-M2.7 200K 8.192 Tokens

Ein Chat hat kein eigenes Gedächtnis. Der Client sendet bei jeder Anfrage den gesamten Verlauf erneut, also ist jede Anfrage größer als die vorige. Hier ein ausgedachter Chat, um das Wachstum zu zeigen (runde Zahlen, zur Veranschaulichung): ein System-Prompt von 1.000 Tokens, und jede Runde fügt etwa 500 Tokens Frage und 1.500 Tokens Antwort hinzu, insgesamt 2.000.

1.000 + 30 × 2.000 = 61.000 Tokens

Das ist die Größe des Verlaufs nach 30 Runden. Jedes dieser Tokens zählt bei der nächsten Anfrage erneut als Input. Die 31. Anfrage trägt diesen 61.000-Token-Verlauf plus die neue 500-Token-Frage, ihr Input sind also 61.500 Tokens. Mit einer 1.500-Token-Antwort auf MiniMax-M2.7 kostet das $0.0033. Hier sind alle drei Modelle für dieselbe Anfrage, mit dem OpenRouter-Preis zum Vergleich:

Modell Kosten OpenRouter
GLM-5.3-Flash $0.0013 $0.0027
DeepSeek-V4-Flash $0.0011 $0.0032
MiniMax-M2.7 $0.0033 $0.0203

61.500 Input- und 1.500 Output-Tokens insgesamt. Die Preise pro 1 Mio. Tokens sind aktuell und ändern sich zusammen mit unseren Tarifen; die OpenRouter-Spalte zeigt Referenzpreise für dieselbe Arbeitslast.

Derselbe Chat füllt das kleinste Fenster in etwa hundert Runden:

(200.000 − 1.000) / 2.000 = 99,5

Wenn es überläuft, lehnt der Anbieter die Anfrage ab. Der Statuscode variiert je nach Anbieter, also lies den Fehler-Body. Claudes 413 request_too_large zum Beispiel betrifft die Anfragegröße in Bytes (32 MB für Messages), ein anderes Limit als das Token-Fenster.

Was zu tun ist:

  • Die ältesten Runden weglassen oder durch eine kurze Zusammenfassung ersetzen.
  • Kein ganzes Dokument einfügen, wenn die Aufgabe ein Kapitel braucht.
  • Zu einem Modell mit größerem Fenster wechseln, wenn du wirklich den vollen Text brauchst.

5. Die Antwort wurde abgeschnitten#

Hier gibt es keinen Fehler, und genau das macht diesen Fall verwirrend. Das Modell hat einfach aufgehört, weil es max_tokens oder das eigene Ausgabelimit des Modells erreicht hat. Im Chat-Completions-Format ist das Anzeichen finish_reason: "length" am Choice.

Bei CheapTokens kann DeepSeek-V4-Flash bis zu 32.768 Tokens pro Antwort zurückgeben; GLM-5.3-Flash und MiniMax-M2.7 bis zu 8.192. Wenn dein max_tokens niedriger ist, erhöhe es. Wenn du bereits am Limit bist, teile die Aufgabe auf („schreibe Teil 1 von 3“) oder bitte das Modell, vom letzten Satz an fortzufahren.

Die Ausgabe von MiniMax-M2.7 kostet $0.15 pro 1M Tokens, und das ist bei der Ausgabe günstiger als OpenRouter.

Dasselbe Problem unter verschiedenen Namen#

Anbieter benennen dieselben Ursachen unterschiedlich. Das sagen ihre Dokumentationen mit Stand vom 20. Oktober 2026:

Problem DeepSeek API Claude API
Guthaben ist leer 402 Insufficient Balance 402 billing_error
Rate Limit 429 Rate Limit Reached 429 rate_limit_error (auch die monatliche Ausgabengrenze des Tiers)
Ungültiger Schlüssel 401 401 authentication_error
Anfrage zu groß nicht als eigener Code aufgeführt 413 request_too_large (Bytes, nicht Tokens)
Selbst gesetztes Ausgabenlimit nicht aufgeführt 400 invalid_request_error

Quellen: DeepSeek error codes, Claude API errors. Keine der beiden Seiten zeigt ein Veröffentlichungsdatum, das Prüfdatum ist also unseres.

Die Erkenntnis: Rate nicht am Wortlaut. Fehler kommen als JSON mit einem error-Objekt zurück, das ein type und ein message enthält. Prüfe auf Status und Typ, denn der Meldungstext ändert sich.

Sieh, was tatsächlich zurückkommt#

Dieses Snippet gibt den Status und den Body einer fehlgeschlagenen Anfrage aus sowie die finish_reason einer erfolgreichen. Es ist eine diagnostische Skizze, kein Testprotokoll: Führe es mit deinem eigenen Schlüssel aus und lies, was du bekommst.

python
# Placeholders: YOUR_API_KEY, MODEL_ID (a model id you have access to)
from openai import OpenAI, APIStatusError

client = OpenAI(api_key="YOUR_API_KEY", base_url="https://api.cheaptokens.dev/v1")

try:
    r = client.chat.completions.create(
        model="MODEL_ID",
        messages=[{"role": "user", "content": "Write a long checklist."}],
        max_tokens=1000,
    )
except APIStatusError as e:
    # Read the status and the body, not the wording of the message
    print("status:", e.status_code)
    print("body:", e.body)
else:
    print("finish_reason:", r.choices[0].finish_reason)  # "length" = cut off
    print("usage:", r.usage)  # prompt_tokens and completion_tokens

Wenn die Prüfung auf das Guthaben deutet#

Lade das Guthaben auf und sende die Anfrage erneut. Die Preise bei CheapTokens sind pro Modell fest, es gibt keine Stoßzeiten, und ein Guthaben deckt alle Modelle ab, du brauchst also kein separates Aufladen für jedes. Die aktuellen Tarife findest du hier:

Modell Kontext Input $/1M Output $/1M OpenRouter Input OpenRouter Output
GLM-5.3-Flash reasoning 390K $0.02 $0.04 $0.0413 $0.0758
DeepSeek-V4-Flash 380K $0.015 $0.10 $0.0475 $0.1568
MiniMax-M2.7 180K $0.05 $0.15 $0.30 $1.20

Preise in USD pro 1 Mio. Token. OpenRouter-Zahlen dienen dem Vergleich und können sich ändern.

Setze dein eigenes Volumen in die Kostentabelle ein, bevor du auflädst. Top up your balance, wenn die Zahlen stimmen, und wenn du zuerst eine größere Arbeitslast schätzen willst, siehe How to estimate the cost of an AI agent.