Fehlercodes

Jede Fehlermeldung sagt, was passiert ist und was hilft. Kein Rätselraten, keine internen Details – dafür eine Vorgangskennung, mit der wir jederzeit nachsehen können.

So sieht eine Fehlerantwort aus

Gleicher Aufbau bei allen Schnittstellen.

Antwort
{
  "ok": false,
  "error": {
    "code": "idempotency_required",
    "message": "Für diesen Aufruf ist ein Vorgangsschlüssel Pflicht.",
    "hint": "Kopf Idempotency-Key mitsenden."
  },
  "meta": {
    "requestId": "req_01J8Z2K9QF",
    "version": "2026-07-01",
    "at": "2026-07-31T09:12:44Z"
  }
}

Alle Codes (9)

Vollständig – weitere Codes gibt es nicht.

Fehlercodes der Ryh API mit Statuscode, Bedeutung und Lösung
CodeStatusBedeutungTypische UrsachenWas hilftWiederholen?
unauthorized401Der Aufruf war nicht angemeldet.Token fehlt · Token abgelaufen · Falsche UmgebungNeues Zugriffstoken anfordern und die Umgebung prüfen.Nein, erst Ursache beheben
forbidden403Der Zugang darf diese Aktion nicht ausführen.Fehlende Rolle · Betrieb nicht freigegebenBerechtigungen des Zugangs im Entwicklerportal prüfen.Nein, erst Ursache beheben
not_found404Der angefragte Eintrag existiert nicht.Falsche Kennung · Eintrag gehört zu einem anderen BetriebKennung und Betrieb im Kopf der Anfrage abgleichen.Nein, erst Ursache beheben
invalid_request400Die Anfrage war unvollständig oder unpassend.Pflichtfeld fehlt · Falscher DatentypAnfrage gegen die veröffentlichte Beschreibung prüfen.Nein, erst Ursache beheben
capability_denied409Die angefragte Fähigkeit ist für diese Verbindung nicht freigegeben.Fähigkeit nicht gebucht · Verbindung pausiertFähigkeit im Integration Hub freischalten lassen.Nein, erst Ursache beheben
idempotency_conflict409Gleicher Vorgangsschlüssel mit abweichendem Inhalt.Schlüssel wiederverwendet · Inhalt nachträglich geändertFür jeden neuen Vorgang einen neuen Schlüssel erzeugen.Nein, erst Ursache beheben
idempotency_required428Für diesen Aufruf ist ein Vorgangsschlüssel Pflicht.Kopf Idempotency-Key fehltVorgangsschlüssel mitsenden.Nein, erst Ursache beheben
rate_limited429Es wurden zu viele Aufrufe in kurzer Zeit gesendet.Lastspitze · Wiederholung ohne WartezeitWartezeit aus der Antwort beachten und mit wachsendem Abstand erneut versuchen.Ja, mit wachsendem Abstand
internal500Auf unserer Seite ist etwas schiefgelaufen.Störung im BetriebVorgangskennung notieren, Status Center prüfen und den Developer Support informieren.Ja, mit wachsendem Abstand

Geltungsbereich

unauthorized

Alle Schnittstellen

forbidden

Alle Schnittstellen

not_found

Alle Schnittstellen

invalid_request

Alle Schnittstellen

capability_denied

Netz und Verbindungen

idempotency_conflict

Verändernde Aufrufe

idempotency_required

Verändernde Aufrufe

rate_limited

Alle Schnittstellen

internal

Alle Schnittstellen

Empfohlene Wiederholung

Nur bei 429 und 500 – alles andere ist ein Fehler in der Anfrage.

TypeScript
const RETRYABLE = new Set(["rate_limited", "internal"]);

export async function callWithRetry<T>(run: () => Promise<T>, attempts = 4): Promise<T> {
  let lastError: unknown;
  for (let attempt = 0; attempt < attempts; attempt += 1) {
    try {
      return await run();
    } catch (error) {
      lastError = error;
      const code = (error as { code?: string }).code ?? "";
      if (!RETRYABLE.has(code)) throw error;
      // Wartezeit verdoppeln, mit kleiner Streuung gegen Lastspitzen
      const wait = 2 ** attempt * 500 + Math.random() * 250;
      await new Promise((resolve) => setTimeout(resolve, wait));
    }
  }
  throw lastError;
}
Antworten enthalten eine Vorgangskennung, aber keine internen Details. Für die Ursachenanalyse genügt uns diese Kennung.