# Fehlercodes: Konten und Sitzungen

Die Codes der Bereiche Identity und Sessions: Benutzerkonten, Betreiber-Konten, API-Schlüssel, verbundene Anwendungen, der SCIM-Zugang, Gerätekonten, Anmeldung, zweiter Faktor, Auffrischung und Sitzungsübernahme.

> **Typ:** nachschlagen
> **Für wen:** Wer Konten oder Schlüssel über die API verwaltet oder eine Anmeldung baut.
> **Voraussetzung:** das Fehlerformat kennen — siehe [Das Fehlerformat](/de/api/error-format)

## So lesen Sie die Tabellen

Die Tabellen lesen Sie so: **Code** ist der Wert im Feld `code` des Fehlerrumpfs — darauf schaltet Ihre Logik, nie auf `message`. **Bedeutung** und **Typischer Auslöser** ordnen den Fall ein. **HTTP** ist der tatsächlich gesendete Status. **Erwartete Reaktion** ist die Antwort Ihres Clients in einem festen Wortschatz, der auf allen sieben Fehlercode-Seiten gleich ist: „Ausweis prüfen“ (401), „Recht oder Paket prüfen“ (402, 403), „Eingabe korrigieren“ (400, 413, 415, 422), „neu laden, erneut senden“ (Versionskonflikte), „nicht wiederholen, Vorgang prüfen“ (404, 409, 410, 426), „warten (Retry-After)“ (429) und „später erneut, bei Wiederholung Trace-Id melden“ (5xx).

## Die Codes

### Konten, Schlüssel, Geräte (Identity)

Konten, Betreiber-Konten, API-Schlüssel und Geräte. Für Integrationen sind die Schlüssel-Codes die wichtigsten. `ApiKey.ScopeEscalationBlocked` (403) heißt, der Schlüssel verlangt mehr, als sein Ersteller selbst darf. `ApiKey.ScopeNotKeyCapable` (422) heißt, ein gewähltes Recht ist für Schlüssel nicht vorgesehen, und da hilft kein Nachfragen, sondern nur ein anderer Weg. Dazu kommen `ApiKey.ExpiresAtInPast` (422) und `ApiKey.AlreadyRevoked` (409), denn der Widerruf ist endgültig. Die Codes `OperatorApiKey.*` betreffen Betreiber-Schlüssel (`opk_`). Dazu die Zugänge, die nicht an einer Person hängen: `OAuthClient.*` und `OAuthAuthorization.*` für [verbundene Anwendungen](/de/api/oauth-delegated-access) — `OAuthAuthorization.Expired` (410) und `OAuthAuthorization.AlreadyDecided` (409) sehen Sie am häufigsten, beide heißen „Einwilligung neu beginnen“ — und `ScimToken.*` für den Zugang, mit dem ein Personalverzeichnis [Konten abgleicht](/de/api/scim-provisioning). Unter den `Device.*`-Codes weist `Device.Blocked` (409) ein gesperrtes Gerät ab, bis der Betreiber die Sperre aufhebt.

| Code | Bedeutung | Typischer Auslöser | HTTP | Erwartete Reaktion |
|---|---|---|---|---|
| `User.NotFound` | Konto nicht gefunden | Zugriff auf eine unbekannte Konto-Kennung | 404 | nicht wiederholen, Vorgang prüfen |
| `User.EmailAlreadyExists` | E-Mail bereits vergeben | Anlage mit belegter Adresse | 409 | nicht wiederholen, Vorgang prüfen |
| `User.PlanSeatQuotaExceeded` | Sitz-Kontingent erschöpft | Konto über dem Kontingent des Pakets | 422 | Eingabe korrigieren |
| `User.MissingCredential` | Anmeldedaten fehlen | Konto ohne Passwort und ohne Unternehmens-Anmeldung | 422 | Eingabe korrigieren |
| `User.SsoInconsistent` | Zustand der Unternehmens-Anmeldung inkonsistent | Widersprüchliche Verknüpfung mit der Unternehmens-Anmeldung | 422 | Eingabe korrigieren |
| `User.SsoUnlinkRequiresPassword` | Trennung der Anmelde-Verknüpfung braucht ein Passwort | Entkopplung ohne gesetztes Passwort | 422 | Eingabe korrigieren |
| `User.CurrentPasswordMismatch` | Aktuelles Passwort falsch | Passwort-Änderung mit falschem Ist-Passwort | 400 | Eingabe korrigieren |
| `User.PasswordAlreadySet` | Passwort bereits gesetzt | Erst-Passwort für ein Konto, das schon eines führt | 409 | nicht wiederholen, Vorgang prüfen |
| `User.RoleEscalationBlocked` | Rechte-Eskalation blockiert | Zuweisung höherer Rechte als eigene | 403 | Recht oder Paket prüfen |
| `User.LastRoleRemovalBlocked` | Letzte Rolle nicht entfernbar | Herabstufung des letzten Inhabers | 409 | nicht wiederholen, Vorgang prüfen |
| `User.RoleRequired` | Rolle ist Pflicht | Zuweisung ohne Rolle — ein Konto trägt genau eine | 422 | Eingabe korrigieren |
| `User.MultipleRolesNotAllowed` | Mehr als eine Rolle | Zuweisung mit mehreren Rollen | 422 | Eingabe korrigieren |
| `User.LastOwnerSuspensionBlocked` | Letzter Inhaber nicht sperrbar | Sperre des einzigen aktiven Inhabers | 409 | nicht wiederholen, Vorgang prüfen |
| `User.CannotSuspendSelf` | Selbstsperre blockiert | Sperre des eigenen Kontos | 403 | Recht oder Paket prüfen |
| `User.CannotModifySelf` | Eigene Rolle unveränderlich | Rollenwechsel am eigenen Konto | 403 | Recht oder Paket prüfen |
| `User.AlreadySuspended` | Bereits gesperrt | Doppelte Sperrung | 409 | nicht wiederholen, Vorgang prüfen |
| `User.NotSuspended` | Nicht gesperrt | Entsperren eines aktiven Kontos | 409 | nicht wiederholen, Vorgang prüfen |
| `User.AlreadyDeleted` | Bereits gelöscht | Doppelte Löschung | 409 | nicht wiederholen, Vorgang prüfen |
| `User.NotDeleted` | Konto ist nicht gelöscht | Zweite Stufe der Löschung (Pseudonymisierung) auf ein lebendes Konto — sie nimmt ihm Adresse und Zugang und darf nie laufen, solange die Löschung nicht feststeht | 409 | nicht wiederholen, Vorgang prüfen |
| `User.NotPending` | Nicht im Wartezustand | Aktion setzt den Wartezustand voraus | 409 | nicht wiederholen, Vorgang prüfen |
| `User.MfaAlreadyEnabled` | Zweiter Faktor bereits aktiv | Doppelte Aktivierung des zweiten Faktors | 409 | nicht wiederholen, Vorgang prüfen |
| `User.MfaSetupNotStarted` | Einrichtung des zweiten Faktors nicht begonnen | Bestätigung ohne begonnene Einrichtung | 409 | nicht wiederholen, Vorgang prüfen |
| `User.MfaNotEnabled` | Zweiter Faktor nicht aktiv | Aktion am zweiten Faktor, obwohl er nicht aktiv ist | 409 | nicht wiederholen, Vorgang prüfen |
| `User.InvalidMfaCode` | Code des zweiten Faktors ungültig | Falscher Code bei einer Aktion am Konto | 401 | Ausweis prüfen |
| `OperatorUser.NotFound` | Betreiber-Konto nicht gefunden | Unbekannte Kennung des Betreiber-Kontos | 404 | nicht wiederholen, Vorgang prüfen |
| `OperatorUser.EmailAlreadyExists` | Adresse des Betreiber-Kontos vergeben | Anlage mit belegter Adresse | 409 | nicht wiederholen, Vorgang prüfen |
| `OperatorUser.CannotSuspendSelf` | Selbst-Sperrung unzulässig | Betreiber-Konto sperrt sich selbst | 403 | Recht oder Paket prüfen |
| `OperatorUser.CannotModifySelf` | Eigene Rolle nicht änderbar | Betreiber-Konto ändert seine eigene Rolle | 403 | Recht oder Paket prüfen |
| `OperatorUser.CannotSuspendOwner` | Owner nicht sperrbar | Sperrung des Owners, zuerst den Owner übertragen | 409 | nicht wiederholen, Vorgang prüfen |
| `OperatorUser.OwnerRoleImmutable` | Rolle des Owners nicht änderbar | Rollenwechsel beim Owner, nur die Übertragung wechselt ihn | 409 | nicht wiederholen, Vorgang prüfen |
| `OperatorUser.OwnerRequired` | Nur der Owner darf das | Rollen, Übertragung oder Anlage durch ein Konto, das nicht Owner ist | 403 | Recht oder Paket prüfen |
| `OperatorUser.OwnerTransferTargetInvalid` | Ziel der Übertragung nicht möglich | Das eigene Konto, ein gesperrtes Konto oder der Owner selbst als Ziel | 422 | Eingabe korrigieren |
| `OperatorUser.OwnerTransferNotFound` | Kein Angebot zur Übertragung | Annahme ohne offenes Angebot an dieses Konto | 404 | nicht wiederholen, Vorgang prüfen |
| `OperatorUser.OwnerTransferExpired` | Angebot zur Übertragung abgelaufen | Annahme nach Ablauf der sieben Tage | 409 | nicht wiederholen, Vorgang prüfen |
| `OperatorUser.RecoveryCodeConsumed` | Wiederherstellungscode verbraucht | Wiederverwendeter Code | 409 | nicht wiederholen, Vorgang prüfen |
| `OperatorUser.AlreadySuspended` | Betreiber-Konto bereits gesperrt | Doppelte Sperrung | 409 | nicht wiederholen, Vorgang prüfen |
| `OperatorUser.NotSuspended` | Betreiber-Konto nicht gesperrt | Entsperren eines aktiven Betreiber-Kontos | 409 | nicht wiederholen, Vorgang prüfen |
| `ApiKey.NotFound` | API-Schlüssel nicht gefunden | Unbekannte Schlüssel-Kennung | 404 | nicht wiederholen, Vorgang prüfen |
| `ApiKey.ScopeEscalationBlocked` | Rechte-Eskalation blockiert | Schlüssel mit mehr Rechten als sein Aussteller | 403 | Recht oder Paket prüfen |
| `ApiKey.ScopeNotKeyCapable` | Recht für Schlüssel nicht vorgesehen | Rechteumfang mit einem Recht, das der Katalog nie an Schlüssel vergibt. Getrennt von der Eskalationssperre: Gegen zu wenig eigene Rechte hilft nachfragen, gegen ein Recht, das Schlüssel nie tragen, nur ein anderer Weg | 422 | Eingabe korrigieren |
| `ApiKey.AlreadyRevoked` | API-Schlüssel bereits widerrufen | Doppelter Widerruf | 409 | nicht wiederholen, Vorgang prüfen |
| `ApiKey.ExpiresAtInPast` | Ablauf in der Vergangenheit | Ausstellung mit vergangenem Ablauf | 422 | Eingabe korrigieren |
| `OAuthClient.NotFound` | Verbundene Anwendung nicht gefunden | Eine Client-Kennung, zu der keine Registrierung existiert | 404 | nicht wiederholen, Vorgang prüfen |
| `OAuthClient.AlreadyBlocked` | Anwendung ist bereits gesperrt | Zweite Sperre auf denselben Client. Sie änderte nichts und überschriebe nur die erste Begründung | 409 | nicht wiederholen, Vorgang prüfen |
| `OAuthClient.NotBlocked` | Anwendung ist nicht gesperrt | Entsperren eines Clients, der frei ist — meist die falsche Kennung | 409 | nicht wiederholen, Vorgang prüfen |
| `OAuthAuthorization.NotFound` | Einwilligungs-Anfrage nicht gefunden | Öffnen oder Entscheiden mit einer unbekannten Anfrage-Kennung | 404 | nicht wiederholen, Vorgang prüfen |
| `OAuthAuthorization.AlreadyDecided` | Über die Anfrage ist entschieden | Zweites Erlauben oder Ablehnen derselben Anfrage. Ohne diesen Riegel entstünde aus einer Zustimmung ein zweiter Code | 409 | nicht wiederholen, Vorgang prüfen |
| `OAuthAuthorization.Expired` | Einwilligungs-Anfrage abgelaufen | Die Frist ist verstrichen. Bewusst 410 und nicht 404: Die Anfrage hat es gegeben, und der Weg beginnt bei Ihrer Anwendung von vorn | 410 | nicht wiederholen, Vorgang prüfen |
| `OAuthAuthorization.ScopeNotDelegatable` | Recht nicht an Anwendungen delegierbar | Die Anfrage nennt einen Rechte-Schlüssel, den der Katalog nie an Maschinen vergibt. Anders als bei zu wenig eigenen Rechten hilft hier kein Nachfragen, sondern nur ein anderer Weg | 422 | Eingabe korrigieren |
| `OAuthAuthorization.ScopeEscalationBlocked` | Rechte-Eskalation blockiert | Die Einwilligung verlangt mehr, als die einwilligende Person selbst hält | 422 | Eingabe korrigieren |
| `OAuthAuthorization.DelegationDisabled` | Delegierter Zugang abgeschaltet | Diese Organisation trägt die Fähigkeit für delegierten Zugang nicht. Der Abbruch kommt dort, wo der Mensch entscheidet, und nicht erst beim Tausch | 403 | Recht oder Paket prüfen |
| `OperatorApiKey.NotFound` | Betreiber-Schlüssel nicht gefunden | Unbekannte Schlüssel-Kennung beim Rotieren oder Widerrufen | 404 | nicht wiederholen, Vorgang prüfen |
| `OperatorApiKey.PermissionEscalationBlocked` | Rechte-Eskalation blockiert | Schlüssel mit mehr Rechten als sein Aussteller trägt | 403 | Recht oder Paket prüfen |
| `OperatorApiKey.PermissionNotKeyCapable` | Recht für Schlüssel nicht vorgesehen | Verlangtes Recht steht nicht auf der Freigabe-Liste für Maschinen-Zugänge | 422 | Eingabe korrigieren |
| `OperatorApiKey.AlreadyRevoked` | Betreiber-Schlüssel bereits widerrufen | Doppelter Widerruf — der Widerruf ist final (Forensik) | 409 | nicht wiederholen, Vorgang prüfen |
| `ScimToken.SsoProviderRequired` | Kein aktiver Unternehmens-Anmeldeweg | Ausstellung eines SCIM-Zugangs, bevor die Organisation einen aktiven Anmeldeweg hat. Die so angelegten Konten hätten sonst kein Anmeldeverfahren | 409 | nicht wiederholen, Vorgang prüfen |
| `ScimToken.NotFound` | Kein SCIM-Zugang vorhanden | Rotieren oder Widerrufen, obwohl keiner ausgestellt ist | 404 | nicht wiederholen, Vorgang prüfen |
| `ScimToken.AlreadyExists` | SCIM-Zugang besteht bereits | Zweite Ausstellung neben einem gültigen Zugang. Der Wechsel läuft über die Rotation und hat eine eigene Route | 409 | nicht wiederholen, Vorgang prüfen |
| `ScimToken.AlreadyRevoked` | SCIM-Zugang bereits widerrufen | Doppelter Widerruf — er ist endgültig | 409 | nicht wiederholen, Vorgang prüfen |
| `Device.NotFound` | Gerät nicht gefunden | Unbekannte Geräte-Kennung | 404 | nicht wiederholen, Vorgang prüfen |
| `Device.DuplicateHardwareSerial` | Seriennummer doppelt | Wiederanschluss eines Web-Displays unter einer bekannten Seriennummer mit einem fremden Geheimnis | 409 | nicht wiederholen, Vorgang prüfen |
| `Device.ReregistrationPending` | Neuanmeldung wartet auf Bestätigung | Registrierung eines gekoppelten Geräts mit einem neuen Schlüssel, etwa nach dem Neuflashen. Die Organisation entscheidet in der Geräteakte, die Absage trägt den Gerätenamen in `details.deviceName`. Nach **Annehmen, Displays behalten** bekommt derselbe Schlüssel 24 Stunden lang ein Zertifikat | 409 | nicht wiederholen, Vorgang prüfen |
| `Device.ReregistrationNotPending` | Keine Neuanmeldung offen | Entscheidung über ein Gerät, das sich nicht mit neuem Schlüssel gemeldet hat | 409 | nicht wiederholen, Vorgang prüfen |
| `Device.CertFingerprintConflict` | Fingerabdruck des Zertifikats doppelt | Bereits vergebener Fingerabdruck | 409 | nicht wiederholen, Vorgang prüfen |
| `Device.InvalidCsr` | Zertifikatsantrag ungültig | Fehlerhafter Zertifikatsantrag | 400 | Eingabe korrigieren |
| `Device.CertNotEligibleForRotation` | Rotation nicht zulässig | Zertifikat noch nicht rotierbar | 409 | nicht wiederholen, Vorgang prüfen |
| `Device.AlreadyClaimed` | Gerät bereits beansprucht | Doppelte Kopplung, oder ein Browser meldet sich unter der Kennung eines gekoppelten Web-Displays an. Dessen Weg zurück ist **Neue Adresse erzeugen** | 409 | nicht wiederholen, Vorgang prüfen |
| `Device.NotActive` | Gerät nicht aktiv | Aktion auf inaktives Gerät | 409 | nicht wiederholen, Vorgang prüfen |
| `Device.Decommissioned` | Gerät stillgelegt (Altbestand) | Wird nicht mehr ausgegeben. Der Geräte-Agent liest den Code weiter als Auftrag zum Werkszustand | 409 | nicht wiederholen, Vorgang prüfen |
| `Device.Blocked` | Gerät gesperrt | Neuanmeldung, Freigabe oder erneute Sperre eines gesperrten Geräts | 409 | nicht wiederholen, Vorgang prüfen |
| `Device.NotBlocked` | Gerät nicht gesperrt | Entsperren eines Geräts, das nicht gesperrt ist | 409 | nicht wiederholen, Vorgang prüfen |
| `Device.DisplaySecretInvalid` | Gerätegeheimnis unbekannt | Aufruf eines Web-Displays mit falschem oder fehlendem Geheimnis | 401 | Ausweis prüfen |
| `Device.ConnectLinkInvalid` | Anschluss-Link ungültig | Link verbraucht, abgelaufen oder Display bereits übernommen | 410 | nicht wiederholen, Vorgang prüfen |

### Anmeldung und Sitzungen (Sessions)

Anmeldung mit Passwort, Anmelde-Link, Unternehmens-Anmeldung und plattformweite Anbieter, zweiter Faktor, Auffrischung, Zurücksetzen des Passworts und die Sitzungsübernahme durch den Betreiber. Die Codes mit 410 markieren verbrauchte oder abgelaufene Links. Ein neuer Link ist der einzige Weg.

| Code | Bedeutung | Typischer Auslöser | HTTP | Erwartete Reaktion |
|---|---|---|---|---|
| `Login.InvalidCredentials` | Anmeldedaten falsch | Falsches Passwort oder falsche E-Mail-Adresse | 401 | Ausweis prüfen |
| `Login.AccountSuspended` | Konto gesperrt | Anmeldung eines gesperrten Kontos | 403 | Recht oder Paket prüfen |
| `Login.TenantSuspended` | Organisation gesperrt | Anmeldung in eine gesperrte Organisation | 403 | Recht oder Paket prüfen |
| `Login.ChoiceTicketInvalid` | Wahl-Ticket ungültig | Organisations-Wahl mit unbekanntem, abgelaufenem oder bereits eingelöstem Ticket (auch: anderes Gerät) | 401 | Ausweis prüfen |
| `Login.OrganizationNotEligible` | Organisation nicht wählbar | Gewählte Organisation gehört nicht zur Menge des Tickets | 403 | Recht oder Paket prüfen |
| `Login.SsoRequired` | Unternehmens-Anmeldung erzwungen | Passwort, Anmelde-Link oder Zurücksetzen für eine Adresse in einer nachgewiesenen Domäne der Unternehmens-Anmeldung | 403 | Recht oder Paket prüfen |
| `Login.HandoffTicketInvalid` | Übergabe-Ticket ungültig | Ticket unbekannt, abgelaufen (3 min) oder bereits eingelöst | 401 | Ausweis prüfen |
| `Mfa.InvalidCode` | Code des zweiten Faktors ungültig | Falscher Code bei der Anmeldung | 401 | Ausweis prüfen |
| `Mfa.TooManyAttempts` | Zu viele Versuche mit dem zweiten Faktor | Fehlversuch-Grenze überschritten | 429 | warten (Retry-After) |
| `Mfa.NotEnabled` | Zweiter Faktor nicht aktiv | Anmeldung mit zweitem Faktor, obwohl keiner aktiv ist | 409 | nicht wiederholen, Vorgang prüfen |
| `Session.NotFound` | Sitzung nicht gefunden | Unbekannte Sitzungs-Kennung | 404 | nicht wiederholen, Vorgang prüfen |
| `Session.Revoked` | Sitzung widerrufen | Nutzung einer widerrufenen Sitzung | 401 | Ausweis prüfen |
| `Session.Expired` | Sitzung abgelaufen | Abgelaufene Sitzung | 401 | Ausweis prüfen |
| `RefreshToken.Invalid` | Auffrischungstoken ungültig | Fehlerhaftes/unbekanntes Token, oder ein Token der falschen Sitzungsart an der Route (Organisation ↔ Betreiber-Konto) | 401 | Ausweis prüfen |
| `RefreshToken.TheftDetected` | Token-Diebstahl erkannt | Wiederverwendetes Auffrischungstoken | 401 | Ausweis prüfen |
| `PasswordReset.TokenInvalid` | Zurücksetz-Token ungültig | Fehlerhaftes Token | 400 | Eingabe korrigieren |
| `PasswordReset.TokenExpired` | Zurücksetz-Token abgelaufen | Abgelaufenes Token | 410 | nicht wiederholen, Vorgang prüfen |
| `PasswordReset.TokenUsed` | Zurücksetz-Token verbraucht | Bereits eingelöst | 410 | nicht wiederholen, Vorgang prüfen |
| `MagicLink.TokenInvalid` | Anmelde-Link ungültig | Fehlerhaftes Token | 400 | Eingabe korrigieren |
| `MagicLink.TokenExpired` | Anmelde-Link abgelaufen | Abgelaufenes Token | 410 | nicht wiederholen, Vorgang prüfen |
| `MagicLink.TokenUsed` | Anmelde-Link verbraucht | Bereits eingelöst | 410 | nicht wiederholen, Vorgang prüfen |
| `Sso.StateInvalid` | Rücksprung-Zustand ungültig | Manipulierter oder abgelaufener Rücksprung-Zustand | 401 | Ausweis prüfen |
| `Sso.ProviderUnavailable` | Anmeldeweg nicht verfügbar | Einstieg auf einen unbekannten, nicht aktiven oder nicht erreichbaren Anbieter | 404 | nicht wiederholen, Vorgang prüfen |
| `Sso.CallbackFailed` | Rücksprung fehlgeschlagen | Anbieter meldet einen Fehler, oder Token-Austausch bzw. Prüfung des Identitäts-Tokens schlägt fehl | 401 | Ausweis prüfen |
| `Social.ProviderUnavailable` | Anbieter nicht eingerichtet | Einstieg auf Google, Microsoft oder Apple, obwohl die Plattform den Anbieter nicht konfiguriert hat | 503 | später erneut, bei Wiederholung Trace-Id melden |
| `Social.EmailUnverified` | Adresse nicht bestätigt | Der Anbieter liefert keine bestätigte Adresse — ohne sie entsteht keine Erst-Verknüpfung | 403 | Recht oder Paket prüfen |
| `Social.LinkConflict` | Kennung bereits vergeben | Dieselbe Anbieter-Kennung hängt schon an einem anderen Konto | 409 | nicht wiederholen, Vorgang prüfen |
| `Social.NoAccount` | Kein Konto zur Adresse | Die bestätigte Adresse gehört zu keinem Konto — der Weg endet in der Registrierung | 404 | nicht wiederholen, Vorgang prüfen |
| `Impersonation.ReasonRequired` | Begründung erforderlich | Sitzungsübernahme ohne Begründung | 422 | Eingabe korrigieren |
| `Impersonation.LifetimeExceeded` | Sitzungsübernahme abgelaufen | Obergrenze von 4 Stunden überschritten | 401 | Ausweis prüfen |

## Zählsatz

Diese Seite führt **103 Codes**. Zusammen mit den übrigen sechs Fehlercode-Seiten ergeben sich 493 fachliche Codes (4xx) und 119 Serverfehler (5xx), also 612 Codes — der vollständige Katalog der Plattform.

## Weiterführendes

- [Anmeldung: Schlüssel und Sitzungen](/de/api/authentication)
- [Das Fehlerformat](/de/api/error-format)
