---
title: "Rate Limits und Fehlercodes der API · 429 und Wiederholungen"
description: "So funktionieren Rate Limits und Fehler bei der inference.eu API. HTTP-Statuscodes, das Fehlerobjekt, Rate-Limit-Header und ein belastbares Retry-Muster."
canonical: "https://inference.eu/de/api/rate-limits-and-errors/"
language: "de"
---

Anleitungen · Rate limits and errors

# Rate Limits und Fehler: Statuscodes, Header und Wiederholungen

Jede produktive Integration trifft früher oder später auf Fehler: eine fehlerhafte Anfrage, einen abgelaufenen Schlüssel, einen Lastschub über Ihrem Limit oder eine kurze Unterbrechung. Dieser Leitfaden erklärt, wie die inference.eu API jeden Fall meldet, welche Fehler eine Wiederholung lohnen, wie Sie Rate-Limit-Header lesen und wie Sie eine Retry-Schleife bauen, die mit allem zurechtkommt.

[Vertrieb kontaktieren](https://inference.eu/de/kontakt/)[Beispielanfrage](#example)

1.  01API-Format: OpenAI und Anthropic
2.  02Rechenzentren in der EU
3.  03Durch einen AV-Vertrag abgedeckt

retry.py

```
import os, random, time
import openai
from openai import OpenAI

# The SDK already retries some errors; max_retries=0 here so the loop below is explicit.
client = OpenAI(base_url="https://api.inference.eu/v1", api_key=os.environ["INFERENCE_EU_API_KEY"], max_retries=0)

def complete(messages, attempts=6):
    for attempt in range(attempts):
        try:
            return client.chat.completions.create(model="gpt-oss-120b", messages=messages)
        except (openai.RateLimitError, openai.InternalServerError, openai.APIConnectionError) as err:
            if attempt == attempts - 1:
                raise
            retry_after = getattr(getattr(err, "response", None), "headers", {}).get("retry-after")
            delay = float(retry_after) if retry_after else min(2 ** attempt, 30) + random.random()
            time.sleep(delay)
        except openai.BadRequestError as err:
            # 400s will fail again unchanged: log and fix the request instead of retrying
            print("Invalid request:", err.message)
            raise
```

## Statuscodes und Fehlerobjekt

Fehler nutzen übliche HTTP-Statuscodes und bei Endpunkten im OpenAI-Format einen JSON-Körper mit einem Objekt `error`, das `message`, `type`, `param` und `code` enthält. Die Meldung richtet sich an Entwickler und nennt das betroffene Feld oder den Wert. Endpunkte im Anthropic-Format liefern stattdessen `{"type": "error", "error": {"type", "message"}}`.

Diese Codes begegnen Ihnen: 400 bei ungültiger Anfrage, etwa einem falschen Feld oder einem Prompt über dem Kontextfenster; 401 bei fehlendem oder ungültigem Schlüssel; 403, wenn der Schlüssel ein Modell oder eine Funktion nicht nutzen darf; 404 bei unbekanntem Modell oder Objekt; 413 bei zu großem Anfragekörper; 422 bei gültiger, aber nicht verarbeitbarer Anfrage; 429 bei Rate Limits; 500, 502, 503 oder 529 bei vorübergehenden Problemen auf Serverseite.

## So funktionieren Rate Limits

Limits gelten pro Organisation oder Projekt und pro Modell und umfassen meist Anfragen und Tokens pro Minute. Die Werte hängen von Ihrem Tarif ab und werden mit Ihnen vereinbart, statt festen öffentlichen Stufen zu folgen. Erwarten Sie einen Launch oder eine große Migration, sagen Sie uns vorher Bescheid, dann erhöhen wir sie.

Antworten enthalten Header, die Ihren Stand zeigen: `x-ratelimit-limit-requests`, `x-ratelimit-remaining-requests` und `x-ratelimit-reset-requests`, dazu passende `-tokens`\-Header. Überschreiten Sie ein Limit, liefert die API 429 mit einem Header `Retry-After`, der die Wartezeit in Sekunden angibt. Lesen Sie diese Header, um vor dem Limit zu drosseln, nicht erst danach.

## Ein belastbares Retry-Muster

Wiederholen Sie 429, 5xx und Verbindungsfehler, aber nicht 400, 401, 403 oder 404, denn dieselbe Anfrage scheitert erneut. Warten Sie vor jedem Versuch: Nutzen Sie `Retry-After`, falls vorhanden, sonst exponentiellen Backoff mit zufälligem Jitter wie im Beispiel, damit nicht viele Clients gleichzeitig wiederholen. Begrenzen Sie Versuche und Gesamtwartezeit.

Die OpenAI- und Anthropic-SDKs wiederholen manche Fehler bereits standardmäßig. Verlassen Sie sich entweder darauf und setzen Sie `max_retries`, oder schalten Sie es ab und nutzen Ihre eigene Schleife, aber nicht beides. Für große Mengen eignet sich eine Warteschlange mit fester Parallelität oder gleich ein Batch.

## Sonderfälle, die Sie abfangen sollten

Ein 400 wegen der Kontextlänge kommt bei langen Dokumenten häufig vor. Zählen Sie Tokens vorher, kürzen Sie den Verlauf oder teilen Sie die Eingabe. Auch eine erfolgreiche Antwort kann unvollständig sein: Prüfen Sie `finish_reason` oder `status`, bevor Sie das Ergebnis nutzen. Beim Streaming kann ein Fehler mitten im Stream als Event kommen; behandeln Sie Teilausgaben als unfertig.

Setzen Sie Client-Timeouts lang genug für Reasoning-Modelle und große Ausgaben und machen Sie wiederholte Operationen idempotent, etwa durch Deduplizierung über eine eigene Anfrage-ID. Protokollieren Sie bei jedem Fehler die Request-ID aus den Antwort-Headern, damit wir die Anfrage finden, wenn Sie sich bei uns melden.

## Rate limits and errors

Kategorie

Anleitungen

API-Format

OpenAI und Anthropic

Base URL

api.inference.eu/v1

Verarbeitung

Rechenzentren in der EU

Training mit Ihren Daten

Nie

## Rate limits and errors: häufige Fragen

Die Fragen, die uns Einkauf, Entwicklung und Rechtsabteilungen am häufigsten stellen. Etwas fehlt? Fragen Sie uns direkt.

Sie haben ein Rate Limit überschritten, also Anfragen oder Tokens pro Minute für Ihre Organisation, Ihr Projekt oder ein Modell. Warten Sie die im Header \`Retry-After\` genannten Sekunden und versuchen Sie es erneut. Tritt 429 bei normaler Last häufig auf, lassen Sie die Limits Ihres Tarifs von uns prüfen.

Die Limits hängen von Ihrem Tarif und den genutzten Modellen ab und werden mit Ihnen vereinbart, statt festen öffentlichen Stufen zu folgen. Für produktiven Verkehr und geplante Spitzen lassen sie sich erhöhen. Die Header \`x-ratelimit-\*\` zeigen jederzeit Ihr aktuelles Limit und die verbleibende Kapazität.

Wiederholen Sie Antworten mit 429, 500, 502, 503 und 529 sowie Netzwerkfehler wie Timeouts und abgebrochene Verbindungen, jeweils mit exponentiellem Backoff. Wiederholen Sie 400, 401, 403, 404 oder 422 nicht unverändert, denn sie beschreiben ein Problem mit Anfrage, Schlüssel oder Berechtigungen, das ein neuer Versuch nicht löst.

Bei Endpunkten im OpenAI-Format lautet der Körper \`{"error": {"message": "...", "type": "...", "param": "...", "code": "..."}}\`, bei den Anthropic-Messages-Endpunkten \`{"type": "error", "error": {"type": "...", "message": "..."}}\`. Die SDKs machen daraus typisierte Ausnahmen wie \`RateLimitError\` oder \`BadRequestError\`.

Prompt und \`max\_tokens\` zusammen sind größer als das Kontextfenster des Modells, und die Fehlermeldung sagt das. Zählen Sie Tokens vor dem Senden, kürzen oder fassen Sie frühere Gesprächsrunden zusammen, teilen Sie lange Dokumente in Abschnitte oder wählen Sie ein Modell mit längerem Kontext.

Lesen Sie die Header \`x-ratelimit-remaining-\*\` und drosseln Sie, wenn sie gegen null gehen. Begrenzen Sie die Parallelität mit einer Warteschlange, verteilen Sie nicht dringende Arbeit zeitlich, nutzen Sie Batches für Massenjobs und speichern Sie wiederholt abgefragte Ergebnisse zwischen. Melden Sie sich vor einem Launch, damit wir Ihre Limits rechtzeitig erhöhen.

Prüfen Sie, ob der Schlüssel korrekt gesendet wird: als \`Authorization: Bearer\` bei Endpunkten im OpenAI-Format oder als \`x-api-key\` im Anthropic-Format. Achten Sie auf überflüssige Leerzeichen oder Anführungszeichen, auf die gesetzte Umgebungsvariable dort, wo der Code läuft, und darauf, dass der Schlüssel nicht widerrufen wurde.

Nennen Sie Zeitpunkt der Anfrage, Modell, HTTP-Status, Fehlermeldung und die Request-ID aus den Antwort-Headern. Senden Sie weder Ihren API-Schlüssel noch den vollständigen Inhalt sensibler Prompts. Mit der Request-ID können wir nachvollziehen, was auf unserer Seite passiert ist.

[Frage stellen](https://inference.eu/de/kontakt/)

## Verwandte Seiten

[API-Überblick](https://inference.eu/de/api/)

-   [Chat completionsSenden Sie Chat-Nachrichten im OpenAI-Format an Open-Weight-Modelle. Verarbeitung in Rechenzentren in der EU, keine Nutzung Ihrer Daten für Training.Endpunkte](https://inference.eu/de/api/chat-completions/)
-   [BatchesFühren Sie Tausende Chat- oder Embedding-Anfragen als asynchronen Job aus. OpenAI-kompatible Batch-API mit JSONL-Upload, verarbeitet in der EU.Endpunkte](https://inference.eu/de/api/batches/)
-   [StreamingStreamen Sie Tokens offener Modelle während der Generierung, mit Server-Sent Events im OpenAI- und Anthropic-Format. Beispiele, Chunk-Format, Fehler.Anleitungen](https://inference.eu/de/api/streaming/)
-   [Migrate from OpenAIMigrieren Sie Ihre Anwendung von OpenAI auf offene Modelle mit Verarbeitung in der EU. Basis-URL, Schlüssel und Modell ändern, dann Werkzeuge und JSON prüfen.Anleitungen](https://inference.eu/de/api/migrate-from-openai/)

## Verlagern Sie Ihre KI-Workloads auf europäische Infrastruktur

Sagen Sie uns, welche Modelle Sie nutzen und wie viel Verkehr Sie ungefähr haben. Wir antworten innerhalb eines Werktags mit Preisen und nächsten Schritten.

-   Antwort innerhalb eines Werktags
-   Preise für Ihr Volumen
-   AV-Vertrag unterschriftsreif
