So erkennst du Fehler und bleibst innerhalb der Limits.
Basis-URL:https://de.rip-app.business/api/public/v1 – Details: Public API – Einstieg & Authentifizierung.
Antwortformat
Erfolg:
{ "success": true, "data": { } }
Listen von Trauerfällen, Terminen und Dokumenten zusätzlich mit count:
{ "success": true, "count": 3, "data": [ ] }
Die Lookup-Listen (/burial-types, /branches, /users, /document-tags) liefern nur data.
Fehler:
{ "success": false, "error": "Kurze Beschreibung" }
Fehlertexte sind zur Anzeige gedacht, nicht zum Auswerten. Verlasse dich in deiner Logik auf den HTTP-Statuscode, nicht auf den Text.
HTTP-Statuscodes
Code | Bedeutung | Was tun? |
| Alles ok | – |
| Ungültige Anfrage / fehlende Felder | Body und Pflichtfelder prüfen |
| Token fehlt oder ungültig | Key prüfen / neu erzeugen |
| Public API nicht freigeschaltet oder Feature-Gate | Im Shop als zusätzlichen Service buchen |
| Endpoint, Version oder Ressource nicht gefunden | Pfad, |
| Methode nicht erlaubt | HTTP-Methode prüfen |
| Konflikt (z. B. schon abgeschlossen, Tag schon vergeben) | Status des Falls prüfen |
| Rate-Limit erreicht |
|
| Serverfehler | Request später wiederholen; bleibt es dabei, melde dich beim Support |
Versions-Header
Jede erfolgreiche Antwort enthält die bediente Version:
X-API-Version: v1
Pfade ohne /v1 oder mit unbekannter Version antworten mit 404 und supported_versions.
Rate-Limit
120 Anfragen pro Minute pro API-Key
Bei fehlgeschlagenen Auth-Versuchen zusätzlich ein IP-Limit (20 Versuche pro 15 Minuten)
Bei Überschreitung: Status
429, HeaderRetry-After(Sekunden) und Feldretry_after
Beispiel:
{
"success": false,
"error": "Zu viele Anfragen. Bitte später erneut versuchen.",
"retry_after": 42
}
curl -sD - -o /dev/null \ -H "Authorization: Bearer rip_pub_DEIN_TOKEN" \ "https://de.rip-app.business/api/public/v1/me" | grep -i retry-after
const res = await fetch(`${base}/me`, {
headers: { Authorization: `Bearer ${token}` },
});
if (res.status === 429) {
const retryAfter = Number(res.headers.get("Retry-After") || 60);
await new Promise((r) => setTimeout(r, retryAfter * 1000));
}
Typische Fehler
Kein Header
{ "success": false, "error": "Authorization required" }
Falscher oder widerrufener Key
{ "success": false, "error": "Invalid or expired token" }
Feature nicht aktiv
{ "success": false, "error": "Public API ist für diese Organisation nicht freigeschaltet" }
Ungültige UUID
{ "success": false, "error": "Ungueltige UUID" }
Endpoint unbekannt
{ "success": false, "error": "Endpoint not found" }
Falsche Methode
{ "success": false, "error": "Method not allowed" }
Sonderfall Datei-Download
GET /documents/{doc_uuid}/download liefert im Erfolgsfall die Datei selbst, kein JSON. Im Fehlerfall kommt der Statuscode mit einer Klartext-Meldung statt eines JSON-Objekts. Prüfe hier also den Statuscode, bevor du den Body verarbeitest.
Sicherheit
API-Keys nie in öffentliche Repos oder Frontend-Code legen
Pro User nur ein aktiver Key – bei Verdacht neuen erzeugen (der alte wird ungültig)
Keys widerrufen unter Einstellungen → Anwendung
Key und Basis-URL immer zur gleichen Instanz nutzen