Fehlerbehandlung

Fehlerbehandlung

Die API verwendet standardisierte Fehlercodes und -formate, um Probleme eindeutig zu kommunizieren.

Fehler-Format

Alle Fehler werden als JSON mit konsistentem Format zurückgegeben:

{
  "error": {
    "code": "error_code",
    "message": "Menschenlesbare Fehlerbeschreibung",
    "details": {
      "field": "Zusätzliche Informationen (optional)"
    }
  }
}
Feld Typ Beschreibung
code String Maschinenlesbarer Fehlercode
message String Menschenlesbare Beschreibung
details Object Zusätzliche Informationen (optional)

HTTP Status Codes

4xx Client-Fehler

Status Code Beschreibung Aktion
400 bad_request Ungültige Anfrage Request-Parameter prüfen
401 unauthorized Authentifizierung fehlgeschlagen Token prüfen
403 forbidden Zugriff verweigert Scopes prüfen
404 not_found Ressource nicht gefunden ID/Slug prüfen
422 unprocessable_entity Validierungsfehler Request-Body prüfen
429 rate_limit_exceeded Rate Limit erreicht Warten und wiederholen

5xx Server-Fehler

Status Code Beschreibung Aktion
500 internal_error Interner Serverfehler Support kontaktieren
503 service_unavailable Service temporär nicht verfügbar Später wiederholen

Authentifizierungs-Fehler (401)

missing_token

{
  "error": {
    "code": "missing_token",
    "message": "Missing Authorization header"
  }
}

Lösung: Füge den Authorization: Bearer rfk_... Header hinzu.

invalid_token_format

{
  "error": {
    "code": "invalid_token_format",
    "message": "Invalid token format. Token must start with 'rfk_'"
  }
}

Lösung: Stelle sicher, dass der Token mit rfk_ beginnt.

invalid_token

{
  "error": {
    "code": "invalid_token",
    "message": "The provided API token is invalid"
  }
}

Lösung: Überprüfe den Token oder erstelle einen neuen.

token_revoked

{
  "error": {
    "code": "token_revoked",
    "message": "This token has been revoked"
  }
}

Lösung: Erstelle einen neuen Token im Partner-Dashboard.

token_expired

{
  "error": {
    "code": "token_expired",
    "message": "This token has expired"
  }
}

Lösung: Erstelle einen neuen Token.

partner_inactive

{
  "error": {
    "code": "partner_inactive",
    "message": "Your API partner account is inactive"
  }
}

Lösung: Kontaktiere den Support.


Autorisierungs-Fehler (403)

insufficient_scope

{
  "error": {
    "code": "insufficient_scope",
    "message": "This endpoint requires the 'matching:use' scope"
  }
}

Lösung: Erstelle einen Token mit dem benötigten Scope.


Validierungs-Fehler (400/422)

Fehlende Parameter

{
  "error": {
    "code": "bad_request",
    "message": "organization_id is required"
  }
}

Ungültige Parameter

{
  "error": {
    "code": "unprocessable_entity",
    "message": "Validation failed",
    "details": {
      "legal_form": "is not a valid legal form"
    }
  }
}

Rate Limit-Fehler (429)

{
  "error": {
    "code": "rate_limit_exceeded",
    "message": "Too many requests. Please wait before retrying.",
    "retry_after": 30
  }
}

Lösung: Warte die angegebene Zeit (retry_after in Sekunden) und wiederhole die Anfrage.


Retry-Strategie

Welche Fehler sollten wiederholt werden?

Status Retry? Strategie
400 Request korrigieren
401 Token prüfen/erneuern
403 Scope prüfen
404 ID/Slug prüfen
422 Request-Body korrigieren
429 Nach Retry-After warten
500 Exponential Backoff
503 Exponential Backoff

Exponential Backoff Implementation

# Ruby
def with_retry(max_attempts: 3)
  attempts = 0

  begin
    attempts += 1
    yield
  rescue ApiError => e
    raise e unless e.retryable? && attempts < max_attempts

    sleep_time = (2 ** attempts) + rand
    sleep(sleep_time)
    retry
  end
end

with_retry do
  api_client.matching(params)
end
// JavaScript
async function withRetry(fn, maxAttempts = 3) {
  for (let attempt = 1; attempt <= maxAttempts; attempt++) {
    try {
      return await fn();
    } catch (error) {
      if (!isRetryable(error) || attempt === maxAttempts) {
        throw error;
      }

      const sleepTime = Math.pow(2, attempt) * 1000 + Math.random() * 1000;
      await new Promise(resolve => setTimeout(resolve, sleepTime));
    }
  }
}

function isRetryable(error) {
  return [429, 500, 503].includes(error.status);
}

Fehler melden

Bei wiederholten 500-Fehlern oder unerwarteten Problemen:

  1. Notiere den Zeitpunkt und die Request-Details
  2. Erstelle ein Support-Ticket im Helpcenter
  3. Füge den Fehlercode und die Message hinzu

Wir analysieren das Problem und melden uns schnellstmöglich zurück.

War diese Seite hilfreich?