API-Referenz
Fehler
Fehler kommen als JSON mit einem kurzen, stabilen Text im Feld detail.
{ "detail": "rate limit exceeded" }Alle Fehler
| Status | detail | Ursache | Wiederholen |
|---|---|---|---|
| 401 | unauthorized | Schlüssel fehlt, ist falsch oder widerrufen, oder das Konto ist nicht freigegeben. | Nein |
| 403 | batch is not in this plan | /v1/checks ist im Tarif nicht enthalten oder der Batch ist zu groß. | Nein |
| 403 | model is not in this plan | Das gewählte Modell ist in deinem Tarif nicht enthalten. | Nein |
| 403 | model is not enabled | axo-large ist ein Early Preview. Ein Superadmin muss den Zugang freigeben. | Nein |
| 422 | invalid request | Leerer Text, mehr als 2.000 Zeichen, ungültiges level, unbekanntes Modell oder kaputtes JSON. | Nein |
| 429 | rate limit exceeded | Mehr Anfragen pro Sekunde, als dein Tarif erlaubt. | Ja, nach kurzer Pause |
| 429 | monthly quota exceeded | Guthaben des Monats aufgebraucht. | Erst nach dem Monatsersten |
| 503 | model is not loaded | Das Modell startet gerade. | Ja, nach ein paar Sekunden |
Abgelehnte Anfragen kosten kein Guthaben.
Wiederholen mit Pause
Bei 503 und rate limit exceeded lohnt ein neuer Versuch mit wachsender Pause. Alle anderen Fehler ändern sich durch Wiederholen nicht.
async function check(text, attempt = 0) {
const response = await fetch(url, { method: "POST", headers, body: JSON.stringify({ text }) });
if (response.ok) return response.json();
const { detail } = await response.json();
const retryable = response.status === 503 || detail === "rate limit exceeded";
if (retryable && attempt < 3) {
await new Promise((r) => setTimeout(r, 250 * 2 ** attempt));
return check(text, attempt + 1);
}
return null; // durchlassen und später prüfen, statt den Chat zu blockieren
}Wenn die API nicht antwortet
Lass Nachrichten im Zweifel durch und prüfe sie nach, statt den Chat anzuhalten. Ein Timeout von etwa fünf Sekunden reicht in der Regel. Den aktuellen Zustand zeigt die Statusseite.