Was es ist und warum es zählt
Wenn deine App einen KI-Dienst aufruft, bezahlst du jede Anfrage. Nicht der Nutzer, der auf den Button drückt: du, mit dem Schlüssel, den du auf den Server gelegt hast.
Fast immer hat aber niemand ein Limit geschrieben. Es reicht ein Bot, ein Skript, das weiterläuft, jemand, der hundertmal klickt oder deinen Schlüssel gefunden hat: Die Anfragen gehen eine nach der anderen raus, auch nachts, und du merkst es erst, wenn die Rechnung kommt.
Claude Code schreibt dir die Funktion, die die KI aufruft, im Handumdrehen. Das Limit oft nicht: Es fügt es nicht hinzu, weil niemand danach gefragt hat. Ein paar Zeilen Code und eine Einstellung reichen, aber du musst danach fragen.
Du brauchst zwei verschiedene Schutzmaßnahmen, und die eine ersetzt die andere nicht:
- Das Anfragelimit steckt in deinem Code. Es sagt: Diese Person darf höchstens so und so viele Anfragen pro Minute stellen. Claude schreibt es.
- Die Ausgabenobergrenze steckt im Dashboard des KI-Dienstes. Sie sagt: Diesen Monat geht es nicht über diesen Betrag hinaus. Die stellst du selbst ein, von Hand.
Das Limit stoppt den alltäglichen Missbrauch. Die Obergrenze ist das Netz darunter: Sie rettet dich, wenn das Limit ein Loch hat oder wenn der Schlüssel in falsche Hände gerät und jemand ihn benutzt, ohne über deine App zu gehen.
1. Das Limit im Code
Öffne Claude Code im Ordner deiner App (im Terminal: in den Ordner wechseln und claude eintippen) und füge das hier ein:
Meine App ruft einen KI-Dienst auf. Finde alle Stellen im Code, an denen eine Anfrage an die KI losgeht. Dann: 1. setz auf diese Endpoints ein Limit an Anfragen pro Person und Minute (pro Nutzer, wenn er eingeloggt ist, pro IP-Adresse, wenn nicht), mit einer klaren Meldung wie 'Zu viele Anfragen, versuch es in einer Minute noch mal'; wenn die App serverless oder auf mehreren Instanzen läuft, muss der Zähler in einem gemeinsamen Speicher liegen (zum Beispiel Redis), nicht im Arbeitsspeicher des Servers; 2. prüf, dass der KI-Schlüssel nur auf dem Server liegt und nie im Code, der im Browser oder auf dem Handy ankommt; 3. erklär mir am Ende in einfachen Worten, was du geändert hast und wie ich es testen kann.
Was das heißt, in einfachen Worten
- Endpoint: Das ist die Adresse auf deinem Server, die die App aufruft, wenn der Nutzer auf den Button drückt. Die Prüfung gehört dorthin, nicht in die App: Eine Prüfung in der App oder im Browser ist im Nu umgangen.
- Pro Nutzer oder pro IP: Wenn die Person eingeloggt ist, erkennst du sie an ihrem Konto. Wenn nicht, hast du nur ihre IP-Adresse. Das ist nicht perfekt, weil sich mehrere Leute dieselbe IP teilen können und wer Missbrauch treiben will, sie wechseln kann, aber es stoppt die meisten Fälle.
- Gemeinsamer Speicher: Bei Serverless-Hosting, und allgemein, wenn die App auf mehreren Kopien des Servers läuft, kann jede Anfrage auf einer anderen Kopie landen. Ein Zähler im Arbeitsspeicher einer Kopie sieht nur ihre eigenen Anfragen und springt auf null, wenn diese Kopie herunterfährt. Deshalb muss er an einem Ort liegen, den alle sehen: Redis oder deine Datenbank.
- Schlüssel nur auf dem Server: Alles, was im Browser oder auf dem Handy ankommt, lässt sich lesen. Ein Schlüssel in der App ist praktisch öffentlich. Vorsicht bei den Variablen, die manche Frameworks absichtlich an den Browser schicken, etwa die, die in Next.js mit NEXT_PUBLIC_, in Vite mit VITE_ oder in Expo mit EXPO_PUBLIC_ beginnen: Der KI-Schlüssel darf nie dort stehen.
Welche Zahl du wählst
Der Prompt sagt nicht, wie viele Anfragen pro Minute. Wenn Claude dich fragt, überleg, wie oft eine echte Person diese Funktion in einer Minute benutzt, und lass etwas Spielraum. Lieber niedrig anfangen: Später erhöhen ist leicht.
Das Limit pro Minute allein reicht nicht. Wenige Anfragen pro Minute, die ganze Nacht lang wiederholt, ergeben trotzdem Tausende Anfragen. Wenn die Funktion teuer ist, füg ein Tageslimit hinzu:
Füg außerdem ein Tageslimit pro Nutzer für dieselben KI-Anfragen hinzu und nutz dafür denselben gemeinsamen Speicher wie beim Limit pro Minute. Wenn es überschritten wird, zeig eine klare Meldung wie 'Du hast das Limit für heute erreicht, versuch es morgen wieder'.
2. Die Ausgabenobergrenze
Das machst du selbst, nicht Claude. Es dauert zwei Minuten.
- Geh ins Dashboard des KI-Dienstes, den du nutzt, und such den Bereich für Abrechnung oder Nutzungslimits.
- Stell eine monatliche Obergrenze ein. Wähl eine Zahl, deren Verlust du dir in einer schlechten Nacht leisten kannst.
- Lies nach, was passiert, wenn die Obergrenze erreicht ist. Das ist der Schritt, den fast alle überspringen.
Achtung: Nicht jeder Dienst stoppt die Anfragen an der Obergrenze wirklich, manche schicken dir nur eine Warnung. Verlass dich also nicht auf den Namen der Einstellung: Schau in der Dokumentation deines Dienstes nach, was dieses Limit wirklich tut. Der Unterschied liegt zwischen „blockiert Anfragen“ und „schickt dir eine Benachrichtigung“.
Wenn dein Dashboard nur die Warnung anbietet, nutz Prepaid-Guthaben mit ausgeschalteter automatischer Aufladung: Ist das Guthaben aufgebraucht, hören die Anfragen auf. Auch hier gilt: Prüf, ob dein Dienst so funktioniert, bevor du dich darauf verlässt.
Wenn die App weitere kostenpflichtige Dienste nutzt, etwa SMS-Versand oder Karten, wiederhol dieselbe Prüfung für jeden davon.
3. Die Warnung
Schalte im selben Dashboard, falls es die Option gibt, eine Warn-E-Mail ein, wenn du die Hälfte der Obergrenze erreichst. Lass sie an eine Adresse gehen, die du wirklich liest.
Der Grund ist einfach: Eine Obergrenze, die Anfragen blockiert, stoppt auch deine echten Nutzer. Die Warnung bei der Hälfte lässt dir Zeit herauszufinden, was los ist, ob echte Leute die App nutzen oder ob es Missbrauch ist, bevor die App nicht mehr antwortet.
4. Der Test
Ein Limit, das du nicht getestet hast, ist ein Limit, von dem du nicht weißt, ob es existiert. Frag Claude:
Schreib ein kleines Skript, das meinen KI-Endpoint 30-mal in einer Minute mit demselben Testnutzer aufruft, und sag mir, wie viele Anfragen durchkommen und wie viele blockiert werden.
Wenn alle durchkommen, funktioniert das Limit nicht: Lass es reparieren, bevor du veröffentlichst.
- Mach den Test mit der lokalen oder der Testversion der App, nicht mit der, die deine Nutzer verwenden. Die Anfragen, die durchkommen, landen wirklich bei der KI.
- Wenn dein gewähltes Limit höher als 30 pro Minute ist, erhöh auch die Zahl im Test, sonst kommen alle durch, obwohl das Limit funktioniert.
- Wenn die App serverless läuft, wiederhol den Test auch mit der Online-Testversion. Lokal gibt es nur einen Server, und ein Zähler im Arbeitsspeicher scheint zu funktionieren, auch wenn er online nicht funktionieren würde.
Häufige Fehler
- Das Limit nur in die App oder in den Browser setzen. Das lässt sich leicht umgehen: Die Prüfung gehört auf den Server, in den Endpoint.
- Den Zähler bei Serverless im Arbeitsspeicher des Servers halten. Jede Kopie zählt für sich: Nimm Redis oder die Datenbank.
- Das Budget im Dashboard einstellen und denken, man sei abgesichert. Manchmal ist es nur eine Warnung: Prüf, was es wirklich tut, und nutz bei Bedarf Prepaid-Guthaben ohne automatische Aufladung.
- Den KI-Schlüssel im Code der App oder in einer öffentlichen Variable lassen. Verschieb ihn auf den Server, und wenn er schon in einer veröffentlichten App gelandet ist, lösch ihn im Dashboard und erstell einen neuen.
- Einen Endpoint schützen und einen anderen vergessen. Lass dir von Claude alle Stellen auflisten, an denen eine Anfrage an die KI losgeht, und prüf, dass das Limit an jeder davon sitzt.
- Das Limit nicht testen. Lass das Testskript vor dem Veröffentlichen laufen, jedes Mal, wenn du diese Teile änderst.
Checkliste
- Anfragelimit auf jedem Endpoint, der die KI aufruft
- Zähler in einem gemeinsamen Speicher (Redis oder Datenbank)
- KI-Schlüssel nur auf dem Server
- Monatliche Obergrenze im Dashboard des Dienstes eingestellt
- Geprüft, ob die Obergrenze Anfragen blockiert oder nur warnt
- Warn-E-Mail bei der Hälfte der Obergrenze
- Test mit 30 Anfragen gemacht, ein Teil davon blockiert
Häufige Fragen
Ich habe wenige Nutzer, brauche ich das wirklich?
Ja. Das Problem sind nicht die echten Nutzer, sondern Bots und Skripte, und denen ist egal, wie viele Nutzer du hast. Ein offener Endpoint im Internet kann gefunden werden, auch wenn niemand die App kennt.
Was ist Redis? Muss ich etwas installieren?
Das ist ein sehr schneller Speicher, der oft genau für Zähler benutzt wird. Viele Hoster bieten ihn als fertigen Dienst an. Wenn du nichts hinzufügen willst, geht auch die Datenbank, die du schon nutzt: Sag es Claude, dann nimmt es die für den Zähler.
Macht das Limit die App langsamer?
Für normale Nutzung nicht: Es ist eine sehr schnelle Prüfung vor der Anfrage, und niemand merkt sie. Nur wer das Limit überschreitet, merkt es, und sieht die Meldung.
Wenn die Obergrenze alles blockiert, funktioniert meine App dann nicht mehr?
Der Teil, der die KI nutzt, ja, bis du die Obergrenze anhebst oder Guthaben auflädst. Deshalb brauchst du die Warnung bei der Hälfte: Sie gibt dir Zeit zu erkennen, ob es echtes Wachstum oder Missbrauch ist, bevor es passiert.