Fehler
Die Sentisnap-API verwendet konventionelle HTTP-Statuscodes und gibt Fehler in einem konsistenten JSON-Format zurück.
| Code | Beschreibung |
|---|---|
200 | Erfolg |
201 | Erstellt (Ressource erfolgreich angelegt) |
204 | Kein Inhalt (erfolgreiche Löschung) |
400 | Ungültige Anfrage (ungültige Parameter) |
401 | Nicht autorisiert (ungültiger oder fehlender API-Schlüssel) |
403 | Verboten (unzureichende Berechtigungen) |
404 | Nicht gefunden |
429 | Zu viele Anfragen (Rate Limit überschritten) |
500 | Interner Serverfehler |
Format der Fehlerantwort
Alle Fehler haben folgende Struktur:
{
"error": {
"code": "error_code",
"message": "Human-readable error message",
"details": {}
}
}Fehlercodes
Authentifizierungsfehler
| Code | HTTP | Beschreibung |
|---|---|---|
unauthorized | 401 | Authorization-Header fehlt |
invalid_api_key | 401 | Ungültiges API-Schlüssel-Format oder Schlüssel nicht gefunden |
expired_api_key | 401 | API-Schlüssel ist abgelaufen |
revoked_api_key | 401 | API-Schlüssel wurde widerrufen |
Autorisierungsfehler
| Code | HTTP | Beschreibung |
|---|---|---|
forbidden | 403 | Allgemeine Zugriffsverweigerung |
insufficient_scope | 403 | API-Schlüssel verfügt nicht über die erforderliche Berechtigung |
Anfragefehler
| Code | HTTP | Beschreibung |
|---|---|---|
validation_error | 400 | Ungültige Anfrageparameter |
not_found | 404 | Ressource nicht gefunden |
rate_limit_exceeded | 429 | Rate Limit überschritten |
Serverfehler
| Code | HTTP | Beschreibung |
|---|---|---|
internal_error | 500 | Interner Serverfehler |
Details zu Validierungsfehlern
Bei Validierungsfehlern enthält das Feld „details“ spezifische Feldfehler:
{
"error": {
"code": "validation_error",
"message": "Validation failed",
"details": [
{
"path": [
"url"
],
"message": "Invalid url"
},
{
"path": [
"events"
],
"message": "Required"
}
]
}
}Beispiel zur Fehlerbehandlung
async function makeApiRequest(endpoint) {
const response = await fetch(
`https://public-api.sentisnap.com/v1${endpoint}`,
{
headers: {
'Authorization': `Bearer ${API_KEY}`
}
}
);
if (!response.ok) {
const error = await response.json();
switch (error.error.code) {
case 'invalid_api_key':
throw new Error('Please check your API key');
case 'rate_limit_exceeded':
const retryAfter = response.headers.get('Retry-After');
throw new Error(`Rate limited. Retry after ${retryAfter} seconds`);
case 'not_found':
return null;
default:
throw new Error(error.error.message);
}
}
return response.json();
}