SilentChat

Fehlercodes

Wenn eine Anfrage fehlschlägt, gibt die SilentChat API eine JSON-Fehlerantwort mit einer einheitlichen Struktur zurück. Diese Seite dokumentiert das Antwortformat, alle Fehlercodes und die verwendeten HTTP-Statuscodes.

Fehlerantwort-Format

Jede Fehlerantwort hat folgende Struktur:

{
"error": {
"code": "VALIDATION_ERROR",
"message": "The 'email' field must be a valid email address.",
"status": 400
}
}
FieldTypeDescription
error.codestringEin maschinenlesbarer Fehlercode im Format SCREAMING_SNAKE_CASE. Verwenden Sie diesen für die programmatische Fehlerbehandlung.
error.messagestringEine für Menschen lesbare Nachricht, die beschreibt, was schiefgelaufen ist. Kann sicher dem Endbenutzer angezeigt werden.
error.statusnumberEin optionales Objekt mit zusätzlichem Kontext, z. B. Validierungsfehler auf Feldebene.

Fehlercodes

CodeHTTP StatusDescription
AUTH_MISSING_TOKEN401Es wurden keine gültigen Zugangsdaten angegeben, oder das Access-Token ist abgelaufen.
AUTH_INVALID_TOKEN401Das angegebene Token ist fehlerhaft oder hat eine ungültige Signatur.
AUTH_TOKEN_REVOKED401Das JWT-Access-Token ist abgelaufen. Erneuern Sie es mit Ihrem Refresh-Token.
AUTH_INVALID_CREDENTIALS401Es wurden keine gültigen Zugangsdaten angegeben, oder das Access-Token ist abgelaufen.
AUTH_EMAIL_NOT_VERIFIED403Der authentifizierte Benutzer hat keine Berechtigung, diese Aktion auszuführen.
FORBIDDEN403Der authentifizierte Benutzer hat keine Berechtigung, diese Aktion auszuführen.
TENANT_REQUIRED400Ein oder mehrere Anfragefelder haben die Validierung nicht bestanden. Siehe details für feldspezifische Fehler.
TENANT_NOT_FOUND404Die angeforderte Ressource existiert nicht oder ist nicht zugänglich.
VALIDATION_ERROR400Ein oder mehrere Anfragefelder haben die Validierung nicht bestanden. Siehe details für feldspezifische Fehler.
NOT_FOUND404Die angeforderte Ressource existiert nicht oder ist nicht zugänglich.
CONFLICT409Die Anfrage steht im Widerspruch zum aktuellen Zustand der Ressource (z. B. doppelte E-Mail-Adresse).
RATE_LIMITED429Zu viele Anfragen. Verlangsamen Sie die Anfragen und wiederholen Sie sie nach der im Retry-After-Header angegebenen Dauer.
WIDGET_KEY_INVALID401Die Webhook-Nutzlast konnte nicht verifiziert werden. Überprüfen Sie Ihr Signing-Secret.
WIDGET_DOMAIN_NOT_ALLOWED403Der authentifizierte Benutzer hat keine Berechtigung, diese Aktion auszuführen.
FILE_TOO_LARGE400Ein oder mehrere Anfragefelder haben die Validierung nicht bestanden. Siehe details für feldspezifische Fehler.
PLAN_LIMIT_EXCEEDED403Ihr aktueller Plan lässt diese Aktion nicht zu. Führen Sie ein Upgrade durch, um diese Funktion freizuschalten.
INTERNAL_ERROR500Ein unerwarteter Serverfehler ist aufgetreten. Wenn das Problem anhält, wenden Sie sich an den Support.

HTTP-Statuscodes

Die API verwendet standardmäßige HTTP-Statuscodes. Hier ist eine Übersicht der Codes, die auftreten können:

StatusMeaningWhen
200OKDie Anfrage war erfolgreich.
201CreatedEine neue Ressource wurde erfolgreich erstellt.
204No ContentDie Anfrage war erfolgreich, ohne Antwortinhalt (z. B. nach einem DELETE).
400Bad RequestDie Anfrage war fehlerhaft oder hat die Validierung nicht bestanden.
401UnauthorizedEine Authentifizierung ist erforderlich, oder die Zugangsdaten sind ungültig.
403ForbiddenDer Aufrufer ist authentifiziert, aber nicht berechtigt, die Aktion auszuführen.
404Not FoundDie Ressource wurde nicht gefunden.
409ConflictDie Anfrage steht im Widerspruch zum aktuellen Ressourcenstatus.
429Too Many RequestsDer Aufrufer hat das Rate-Limit überschritten.
500Internal Server ErrorEin unerwarteter serverseitiger Fehler ist aufgetreten.

Fehler im Code behandeln

Prüfen Sie immer das Feld code statt der Fehlermeldung als Text — die Meldung kann sich zwischen Versionen ändern, Fehlercodes bleiben jedoch stabil.

const response = await fetch('https://api.silentchat.de/api/v1/conversations', {
headers: {
'Authorization': 'Bearer ' + accessToken,
'Content-Type': 'application/json',
},
});
if (!response.ok) {
const { error } = await response.json();
switch (error.code) {
case 'AUTH_INVALID_TOKEN':
// Token expired - refresh and retry
break;
case 'RATE_LIMITED':
// Wait and retry
const retryAfter = response.headers.get('Retry-After');
break;
case 'VALIDATION_ERROR':
// Fix request parameters
console.error('Validation:', error.message);
break;
default:
console.error(`API error [${error.code}]: ${error.message}`);
}
}