Source: https://ailoot.ai/docs/de-at/cabinet/auth/
Canonical: https://ailoot.ai/docs/de-at/cabinet/auth/
Language: de-at

[API des Kundenbereichs](https://ailoot.ai/docs/de-at/) 

# Anmeldung und Sitzungen

[Markdown](https://ailoot.ai/docs/de-at/cabinet/auth/index.md)

Methoden, Request-Felder und Antworten.

Dieser Abschnitt enthält 14 Methoden. Öffnen Sie eine Methode, um Zugriffsbedingungen, Request-Felder und Antwort einzusehen.

| Methode und Pfad | Beschreibung | Zugriff |
| --- | --- | --- |
| `POST /api/v1/auth/forgot-password` | Passwortzurücksetzung anfordern | Ohne Anmeldung; zusätzliche Bedingungen stehen bei der Methode |
| `POST /api/v1/auth/login` | Anmeldung mit E-Mail-Adresse und Passwort | Ohne Anmeldung; zusätzliche Bedingungen stehen bei der Methode |
| `POST /api/v1/auth/login/2fa` | Anmeldung mit TOTP abschließen | Ohne Anmeldung; zusätzliche Bedingungen stehen bei der Methode |
| `POST /api/v1/auth/logout` | Abmelden und Refresh-Token widerrufen | Ohne Anmeldung; zusätzliche Bedingungen stehen bei der Methode |
| `GET /api/v1/auth/me` | Aktueller Nutzer, Guthaben und Limits | Token des Kundenbereichs |
| `POST /api/v1/auth/passkey/login/begin` | Passkey-Anmeldung starten | Ohne Anmeldung; zusätzliche Bedingungen stehen bei der Methode |
| `POST /api/v1/auth/passkey/login/finish` | Passkey-Anmeldung abschließen | Ohne Anmeldung; zusätzliche Bedingungen stehen bei der Methode |
| `POST /api/v1/auth/refresh` | Tokens erneuern | Ohne Anmeldung; zusätzliche Bedingungen stehen bei der Methode |
| `POST /api/v1/auth/register` | Registrieren | Ohne Anmeldung; zusätzliche Bedingungen stehen bei der Methode |
| `POST /api/v1/auth/reset-password` | Passwort zurücksetzen | Ohne Anmeldung; zusätzliche Bedingungen stehen bei der Methode |
| `POST /api/v1/auth/revoke-all-sessions` | Alle Sitzungen widerrufen | Token des Kundenbereichs |
| `POST /api/v1/auth/send-verify-code` | Bestätigungscode senden | Ohne Anmeldung; zusätzliche Bedingungen stehen bei der Methode |
| `POST /api/v1/auth/validate-invitation-code` | Einladung prüfen | Ohne Anmeldung; zusätzliche Bedingungen stehen bei der Methode |
| `POST /api/v1/auth/validate-promo-code` | Aktionscode prüfen | Ohne Anmeldung; zusätzliche Bedingungen stehen bei der Methode |

**POST /api/v1/auth/forgot-password** — Passwortzurücksetzung anfordern

Zugriff: Ohne Anmeldung; zusätzliche Bedingungen stehen bei der Methode

Anfragelimit: 5 Requests innerhalb von 60 Sekunden von derselben Adresse.

POST`/api/v1/auth/forgot-password`

## JSON- / Formularfelder

| Das Feld | Typ | Erforderlich | Validierung / Beschreibung |
| --- | --- | --- | --- |
| `email` | `string` | ja | required,email |
| `turnstile_token` | `string` | nein |  |

Vorlage für den Request-Body

```json
{
  "email": "PLACEHOLDER_EMAIL (string)",
  "turnstile_token": "PLACEHOLDER_TURNSTILE_TOKEN (string)"
}
```

PLACEHOLDER steht für Ihre Eingabe und deren Typ. Ersetzen Sie die Werte und behalten Sie nur die benötigten optionalen Felder; String-Platzhalter dürfen nicht anstelle von Zahlen, boolean, Objekten oder Arrays gesendet werden.

Request-Schema: `ForgotPasswordRequest`

## Antwort

Die JSON-Antwort enthält code, message und data. Der Inhalt von data wird in den nachfolgenden Schemata beschrieben.

Datenschemata der Antwort: `ForgotPasswordResponse`. Felder und Typen finden Sie auf den Seiten „Datenschemata“.

Antwortschema mit beispielhaften Werten

```json
{
  "code": 0,
  "message": "success",
  "data": {
    "message": "PLACEHOLDER_MESSAGE (string)"
  }
}
```

Besonderheiten: Der Vorgang ändert den Zustand oder setzt eine einmalige Authentifizierung fort; das Beispiel beschreibt den Vertrag und wird nicht ausgeführt.

Die Methode ändert Daten. Erneutes Senden ist nur sicher, wenn bei der Methode Idempotency-Key angegeben ist. Geht die Antwort verloren, prüfen Sie zuerst das Ergebnis (zum Beispiel die Schlüsselliste) und entscheiden Sie erst dann über eine Wiederholung.

**POST /api/v1/auth/login** — Anmeldung mit E-Mail-Adresse und Passwort

Zugriff: Ohne Anmeldung; zusätzliche Bedingungen stehen bei der Methode

Funktionsverfügbarkeit und zusätzliche Zugriffsbedingungen werden bei der Ausführung des Requests geprüft.

Anfragelimit: 20 Requests innerhalb von 60 Sekunden von derselben Adresse.

POST`/api/v1/auth/login`

## JSON- / Formularfelder

| Das Feld | Typ | Erforderlich | Validierung / Beschreibung |
| --- | --- | --- | --- |
| `email` | `string` | ja | required,email |
| `password` | `string` | ja | required |
| `turnstile_token` | `string` | nein |  |

Vorlage für den Request-Body

```json
{
  "email": "PLACEHOLDER_EMAIL (string)",
  "password": "PLACEHOLDER_PASSWORD (string)",
  "turnstile_token": "PLACEHOLDER_TURNSTILE_TOKEN (string)"
}
```

PLACEHOLDER steht für Ihre Eingabe und deren Typ. Ersetzen Sie die Werte und behalten Sie nur die benötigten optionalen Felder; String-Platzhalter dürfen nicht anstelle von Zahlen, boolean, Objekten oder Arrays gesendet werden.

Request-Schema: `LoginRequest`

## Antwort

Die JSON-Antwort enthält code, message und data. Der Inhalt von data wird in den nachfolgenden Schemata beschrieben.

Datenschemata der Antwort: `TotpLoginResponse`, `User`, `AuthResponse`. Felder und Typen finden Sie auf den Seiten „Datenschemata“.

Sind mehrere Antwortvarianten möglich, werden deren Felder in getrennten Schemata aufgeführt; sie dürfen nicht zu einem Objekt zusammengeführt werden.

Besonderheiten: Der Vorgang ändert den Zustand oder setzt eine einmalige Authentifizierung fort; das Beispiel beschreibt den Vertrag und wird nicht ausgeführt.

Die Methode ändert Daten. Erneutes Senden ist nur sicher, wenn bei der Methode Idempotency-Key angegeben ist. Geht die Antwort verloren, prüfen Sie zuerst das Ergebnis (zum Beispiel die Schlüsselliste) und entscheiden Sie erst dann über eine Wiederholung.

**POST /api/v1/auth/login/2fa** — Anmeldung mit TOTP abschließen

Zugriff: Ohne Anmeldung; zusätzliche Bedingungen stehen bei der Methode

Funktionsverfügbarkeit und zusätzliche Zugriffsbedingungen werden bei der Ausführung des Requests geprüft.

Anfragelimit: 20 Requests innerhalb von 60 Sekunden von derselben Adresse.

POST`/api/v1/auth/login/2fa`

## JSON- / Formularfelder

| Das Feld | Typ | Erforderlich | Validierung / Beschreibung |
| --- | --- | --- | --- |
| `temp_token` | `string` | ja | required |
| `totp_code` | `string` | ja | required,len=6 |

Vorlage für den Request-Body

```json
{
  "temp_token": "PLACEHOLDER_TEMP_TOKEN (string)",
  "totp_code": "PLACEHOLDER_TOTP_CODE (string)"
}
```

PLACEHOLDER steht für Ihre Eingabe und deren Typ. Ersetzen Sie die Werte und behalten Sie nur die benötigten optionalen Felder; String-Platzhalter dürfen nicht anstelle von Zahlen, boolean, Objekten oder Arrays gesendet werden.

Request-Schema: `Login2FARequest`

## Antwort

Die JSON-Antwort enthält code, message und data. Der Inhalt von data wird in den nachfolgenden Schemata beschrieben.

Datenschemata der Antwort: `User`, `AuthResponse`. Felder und Typen finden Sie auf den Seiten „Datenschemata“.

Sind mehrere Antwortvarianten möglich, werden deren Felder in getrennten Schemata aufgeführt; sie dürfen nicht zu einem Objekt zusammengeführt werden.

Besonderheiten: Der Vorgang ändert den Zustand oder setzt eine einmalige Authentifizierung fort; das Beispiel beschreibt den Vertrag und wird nicht ausgeführt.

Die Methode ändert Daten. Erneutes Senden ist nur sicher, wenn bei der Methode Idempotency-Key angegeben ist. Geht die Antwort verloren, prüfen Sie zuerst das Ergebnis (zum Beispiel die Schlüsselliste) und entscheiden Sie erst dann über eine Wiederholung.

**POST /api/v1/auth/logout** — Abmelden und Refresh-Token widerrufen

Zugriff: Ohne Anmeldung; zusätzliche Bedingungen stehen bei der Methode

POST`/api/v1/auth/logout`

## JSON- / Formularfelder

| Das Feld | Typ | Erforderlich | Validierung / Beschreibung |
| --- | --- | --- | --- |
| `refresh_token` | `string` | nein | ; Optional: angegebenes Refresh-Token widerrufen |

Vorlage für den Request-Body

```json
{
  "refresh_token": "PLACEHOLDER_REFRESH_TOKEN (string)"
}
```

PLACEHOLDER steht für Ihre Eingabe und deren Typ. Ersetzen Sie die Werte und behalten Sie nur die benötigten optionalen Felder; String-Platzhalter dürfen nicht anstelle von Zahlen, boolean, Objekten oder Arrays gesendet werden.

Request-Schema: `LogoutRequest`

## Antwort

Die JSON-Antwort enthält code, message und data. Der Inhalt von data wird in den nachfolgenden Schemata beschrieben.

Datenschemata der Antwort: `LogoutResponse`. Felder und Typen finden Sie auf den Seiten „Datenschemata“.

Antwortschema mit beispielhaften Werten

```json
{
  "code": 0,
  "message": "success",
  "data": {
    "message": "PLACEHOLDER_MESSAGE (string)"
  }
}
```

Besonderheiten: Der Vorgang ändert den Zustand oder setzt eine einmalige Authentifizierung fort; das Beispiel beschreibt den Vertrag und wird nicht ausgeführt.

Die Methode ändert Daten. Erneutes Senden ist nur sicher, wenn bei der Methode Idempotency-Key angegeben ist. Geht die Antwort verloren, prüfen Sie zuerst das Ergebnis (zum Beispiel die Schlüsselliste) und entscheiden Sie erst dann über eine Wiederholung.

**GET /api/v1/auth/me** — Aktueller Nutzer, Guthaben und Limits

Zugriff: Token des Kundenbereichs

GET`/api/v1/auth/me`

Lesezugriff; die ID stammt aus Ihrer vorherigen Antwort

```bash
curl --fail-with-body "https://ailoot.ai/api/v1/auth/me" \
  -H "Authorization: Bearer $TOKEN"
```

Ein Request-Body ist nicht erforderlich. Übergeben Sie die oben genannten Parameter in der URL.

## Antwort

Die JSON-Antwort enthält code, message und data. Der Inhalt von data wird in den nachfolgenden Schemata beschrieben.

Datenschemata der Antwort: `User`, `UserProfileResponse`. Felder und Typen finden Sie auf den Seiten „Datenschemata“.

Antwortschema mit beispielhaften Werten

```json
{
  "code": 0,
  "message": "success",
  "data": {
    "id": "PLACEHOLDER_ID (integer)",
    "email": "PLACEHOLDER_EMAIL (string)",
    "username": "PLACEHOLDER_USERNAME (string)",
    "role": "PLACEHOLDER_ROLE (string)",
    "balance": "PLACEHOLDER_BALANCE (number)",
    "frozen_balance": "PLACEHOLDER_FROZEN_BALANCE (number)",
    "concurrency": "PLACEHOLDER_CONCURRENCY (integer)",
    "status": "PLACEHOLDER_STATUS (string)",
    "last_active_at": "PLACEHOLDER_LAST_ACTIVE_AT (string)",
    "created_at": "PLACEHOLDER_CREATED_AT (string)",
    "updated_at": "PLACEHOLDER_UPDATED_AT (string)",
    "deleted_at": "PLACEHOLDER_DELETED_AT (string)",
    "balance_notify_enabled": "PLACEHOLDER_BALANCE_NOTIFY_ENABLED (boolean)",
    "balance_notify_threshold_type": "PLACEHOLDER_BALANCE_NOTIFY_THRESHOLD_TYPE (string)",
    "balance_notify_threshold": "PLACEHOLDER_BALANCE_NOTIFY_THRESHOLD (number)",
    "balance_notify_extra_emails": "PLACEHOLDER_BALANCE_NOTIFY_EXTRA_EMAILS (array)",
    "total_recharged": "PLACEHOLDER_TOTAL_RECHARGED (number)",
    "rpm_limit": "PLACEHOLDER_RPM_LIMIT (integer)",
    "api_keys": "PLACEHOLDER_API_KEYS (array)",
    "avatar_url": "PLACEHOLDER_AVATAR_URL (string)",
    "email_bound": "PLACEHOLDER_EMAIL_BOUND (boolean)"
  }
}
```

Besonderheiten: Alle personenbezogenen Daten und Objekte sind auf das Subjekt des JWT beschränkt.

Besonderheiten: Ausgabenlimits der Schlüssel (quota, quota\_used) stehen in der Antwort zu den Schlüsseln, nicht im Profil. frozen\_balance ist der reservierte Betrag und darf nicht als frei verfügbares Guthaben betrachtet werden.

**POST /api/v1/auth/passkey/login/begin** — Passkey-Anmeldung starten

Zugriff: Ohne Anmeldung; zusätzliche Bedingungen stehen bei der Methode

Funktionsverfügbarkeit und zusätzliche Zugriffsbedingungen werden bei der Ausführung des Requests geprüft.

Anfragelimit: 20 Requests innerhalb von 60 Sekunden von derselben Adresse.

POST`/api/v1/auth/passkey/login/begin`

## JSON- / Formularfelder

| Das Feld | Typ | Erforderlich | Validierung / Beschreibung |
| --- | --- | --- | --- |
| `turnstile_token` | `string` | nein |  |

Vorlage für den Request-Body

```json
{
  "turnstile_token": "PLACEHOLDER_TURNSTILE_TOKEN (string)"
}
```

PLACEHOLDER steht für Ihre Eingabe und deren Typ. Ersetzen Sie die Werte und behalten Sie nur die benötigten optionalen Felder; String-Platzhalter dürfen nicht anstelle von Zahlen, boolean, Objekten oder Arrays gesendet werden.

Request-Schema: `PasskeyBeginLoginRequest`

## Antwort

Die JSON-Antwort enthält code, message und data. Der Inhalt von data wird in den nachfolgenden Schemata beschrieben.

Datenschemata der Antwort: `PasskeyOptionsResponse`. Felder und Typen finden Sie auf den Seiten „Datenschemata“.

Antwortschema mit beispielhaften Werten

```json
{
  "code": 0,
  "message": "success",
  "data": {
    "session_token": "PLACEHOLDER_SESSION_TOKEN (string)",
    "options": "PLACEHOLDER_OPTIONS (any)"
  }
}
```

Besonderheiten: Der Vorgang ändert den Zustand oder setzt eine einmalige Authentifizierung fort; das Beispiel beschreibt den Vertrag und wird nicht ausgeführt.

Besonderheiten: credential stammt aus navigator.credentials; session\_token aus begin. Finish body \<=65536 Bytes; Registrierung und Löschung erfordern ein Passwort.

Die Methode ändert Daten. Erneutes Senden ist nur sicher, wenn bei der Methode Idempotency-Key angegeben ist. Geht die Antwort verloren, prüfen Sie zuerst das Ergebnis (zum Beispiel die Schlüsselliste) und entscheiden Sie erst dann über eine Wiederholung.

**POST /api/v1/auth/passkey/login/finish** — Passkey-Anmeldung abschließen

Zugriff: Ohne Anmeldung; zusätzliche Bedingungen stehen bei der Methode

Funktionsverfügbarkeit und zusätzliche Zugriffsbedingungen werden bei der Ausführung des Requests geprüft.

Anfragelimit: 20 Requests innerhalb von 60 Sekunden von derselben Adresse.

POST`/api/v1/auth/passkey/login/finish`

## JSON- / Formularfelder

| Das Feld | Typ | Erforderlich | Validierung / Beschreibung |
| --- | --- | --- | --- |
| `session_token` | `string` | ja | required |
| `name` | `string` | nein |  |
| `credential` | `object` | ja | required |

Vorlage für den Request-Body

```json
{
  "session_token": "PLACEHOLDER_SESSION_TOKEN (string)",
  "name": "PLACEHOLDER_NAME (string)",
  "credential": "PLACEHOLDER_CREDENTIAL (object)"
}
```

PLACEHOLDER steht für Ihre Eingabe und deren Typ. Ersetzen Sie die Werte und behalten Sie nur die benötigten optionalen Felder; String-Platzhalter dürfen nicht anstelle von Zahlen, boolean, Objekten oder Arrays gesendet werden.

Request-Schema: `PasskeyFinishRequest`

## Antwort

Die JSON-Antwort enthält code, message und data. Der Inhalt von data wird in den nachfolgenden Schemata beschrieben.

Datenschemata der Antwort: `User`, `AuthResponse`. Felder und Typen finden Sie auf den Seiten „Datenschemata“.

Sind mehrere Antwortvarianten möglich, werden deren Felder in getrennten Schemata aufgeführt; sie dürfen nicht zu einem Objekt zusammengeführt werden.

Besonderheiten: Der Vorgang ändert den Zustand oder setzt eine einmalige Authentifizierung fort; das Beispiel beschreibt den Vertrag und wird nicht ausgeführt.

Besonderheiten: credential stammt aus navigator.credentials; session\_token aus begin. Finish body \<=65536 Bytes; Registrierung und Löschung erfordern ein Passwort.

Die Methode ändert Daten. Erneutes Senden ist nur sicher, wenn bei der Methode Idempotency-Key angegeben ist. Geht die Antwort verloren, prüfen Sie zuerst das Ergebnis (zum Beispiel die Schlüsselliste) und entscheiden Sie erst dann über eine Wiederholung.

**POST /api/v1/auth/refresh** — Tokens erneuern

Zugriff: Ohne Anmeldung; zusätzliche Bedingungen stehen bei der Methode

Funktionsverfügbarkeit und zusätzliche Zugriffsbedingungen werden bei der Ausführung des Requests geprüft.

Anfragelimit: 30 Requests innerhalb von 60 Sekunden von derselben Adresse.

POST`/api/v1/auth/refresh`

## JSON- / Formularfelder

| Das Feld | Typ | Erforderlich | Validierung / Beschreibung |
| --- | --- | --- | --- |
| `refresh_token` | `string` | ja | required |

Vorlage für den Request-Body

```json
{
  "refresh_token": "PLACEHOLDER_REFRESH_TOKEN (string)"
}
```

PLACEHOLDER steht für Ihre Eingabe und deren Typ. Ersetzen Sie die Werte und behalten Sie nur die benötigten optionalen Felder; String-Platzhalter dürfen nicht anstelle von Zahlen, boolean, Objekten oder Arrays gesendet werden.

Request-Schema: `RefreshTokenRequest`

## Antwort

Die JSON-Antwort enthält code, message und data. Der Inhalt von data wird in den nachfolgenden Schemata beschrieben.

Datenschemata der Antwort: `RefreshTokenResponse`. Felder und Typen finden Sie auf den Seiten „Datenschemata“.

Antwortschema mit beispielhaften Werten

```json
{
  "code": 0,
  "message": "success",
  "data": {
    "access_token": "PLACEHOLDER_ACCESS_TOKEN (string)",
    "refresh_token": "PLACEHOLDER_REFRESH_TOKEN (string)",
    "expires_in": "PLACEHOLDER_EXPIRES_IN (integer)",
    "token_type": "PLACEHOLDER_TOKEN_TYPE (string)"
  }
}
```

Besonderheiten: Der Vorgang ändert den Zustand oder setzt eine einmalige Authentifizierung fort; das Beispiel beschreibt den Vertrag und wird nicht ausgeführt.

Die Methode ändert Daten. Erneutes Senden ist nur sicher, wenn bei der Methode Idempotency-Key angegeben ist. Geht die Antwort verloren, prüfen Sie zuerst das Ergebnis (zum Beispiel die Schlüsselliste) und entscheiden Sie erst dann über eine Wiederholung.

**POST /api/v1/auth/register** — Registrierung

Zugriff: Ohne Anmeldung; zusätzliche Bedingungen stehen bei der Methode

Anfragelimit: 5 Requests innerhalb von 60 Sekunden von derselben Adresse.

POST`/api/v1/auth/register`

## JSON- / Formularfelder

| Das Feld | Typ | Erforderlich | Validierung / Beschreibung |
| --- | --- | --- | --- |
| `email` | `string` | ja | required,email |
| `password` | `string` | ja | required,min=6 |
| `verify_code` | `string` | nein |  |
| `turnstile_token` | `string` | nein |  |
| `promo_code` | `string` | nein | ; Aktionscode für die Registrierung |
| `invitation_code` | `string` | nein | ; Einladungscode |

Vorlage für den Request-Body

```json
{
  "email": "PLACEHOLDER_EMAIL (string)",
  "password": "PLACEHOLDER_PASSWORD (string)",
  "verify_code": "PLACEHOLDER_VERIFY_CODE (string)",
  "turnstile_token": "PLACEHOLDER_TURNSTILE_TOKEN (string)",
  "promo_code": "PLACEHOLDER_PROMO_CODE (string)",
  "invitation_code": "PLACEHOLDER_INVITATION_CODE (string)"
}
```

PLACEHOLDER steht für Ihre Eingabe und deren Typ. Ersetzen Sie die Werte und behalten Sie nur die benötigten optionalen Felder; String-Platzhalter dürfen nicht anstelle von Zahlen, boolean, Objekten oder Arrays gesendet werden.

Request-Schema: `RegisterRequest`

## Antwort

Die JSON-Antwort enthält code, message und data. Der Inhalt von data wird in den nachfolgenden Schemata beschrieben.

Datenschemata der Antwort: `User`, `AuthResponse`. Felder und Typen finden Sie auf den Seiten „Datenschemata“.

Sind mehrere Antwortvarianten möglich, werden deren Felder in getrennten Schemata aufgeführt; sie dürfen nicht zu einem Objekt zusammengeführt werden.

Besonderheiten: Der Vorgang ändert den Zustand oder setzt eine einmalige Authentifizierung fort; das Beispiel beschreibt den Vertrag und wird nicht ausgeführt.

Die Methode ändert Daten. Erneutes Senden ist nur sicher, wenn bei der Methode Idempotency-Key angegeben ist. Geht die Antwort verloren, prüfen Sie zuerst das Ergebnis (zum Beispiel die Schlüsselliste) und entscheiden Sie erst dann über eine Wiederholung.

**POST /api/v1/auth/reset-password** — Passwort zurücksetzen

Zugriff: Ohne Anmeldung; zusätzliche Bedingungen stehen bei der Methode

Anfragelimit: 10 Requests innerhalb von 60 Sekunden von derselben Adresse.

POST`/api/v1/auth/reset-password`

## JSON- / Formularfelder

| Das Feld | Typ | Erforderlich | Validierung / Beschreibung |
| --- | --- | --- | --- |
| `email` | `string` | ja | required,email |
| `token` | `string` | ja | required |
| `new_password` | `string` | ja | required,min=6 |

Vorlage für den Request-Body

```json
{
  "email": "PLACEHOLDER_EMAIL (string)",
  "token": "PLACEHOLDER_TOKEN (string)",
  "new_password": "PLACEHOLDER_NEW_PASSWORD (string)"
}
```

PLACEHOLDER steht für Ihre Eingabe und deren Typ. Ersetzen Sie die Werte und behalten Sie nur die benötigten optionalen Felder; String-Platzhalter dürfen nicht anstelle von Zahlen, boolean, Objekten oder Arrays gesendet werden.

Request-Schema: `ResetPasswordRequest`

## Antwort

Die JSON-Antwort enthält code, message und data. Der Inhalt von data wird in den nachfolgenden Schemata beschrieben.

Datenschemata der Antwort: `ResetPasswordResponse`. Felder und Typen finden Sie auf den Seiten „Datenschemata“.

Antwortschema mit beispielhaften Werten

```json
{
  "code": 0,
  "message": "success",
  "data": {
    "message": "PLACEHOLDER_MESSAGE (string)"
  }
}
```

Besonderheiten: Der Vorgang ändert den Zustand oder setzt eine einmalige Authentifizierung fort; das Beispiel beschreibt den Vertrag und wird nicht ausgeführt.

Die Methode ändert Daten. Erneutes Senden ist nur sicher, wenn bei der Methode Idempotency-Key angegeben ist. Geht die Antwort verloren, prüfen Sie zuerst das Ergebnis (zum Beispiel die Schlüsselliste) und entscheiden Sie erst dann über eine Wiederholung.

**POST /api/v1/auth/revoke-all-sessions** — Alle Sitzungen widerrufen

Zugriff: Token des Kundenbereichs

POST`/api/v1/auth/revoke-all-sessions`

Ein Request-Body ist nicht erforderlich.

## Antwort

Die JSON-Antwort enthält code, message und data. Der Inhalt von data wird in den nachfolgenden Schemata beschrieben.

Datenschemata der Antwort: `RevokeAllSessionsResponse`. Felder und Typen finden Sie auf den Seiten „Datenschemata“.

Antwortschema mit beispielhaften Werten

```json
{
  "code": 0,
  "message": "success",
  "data": {
    "message": "PLACEHOLDER_MESSAGE (string)"
  }
}
```

Besonderheiten: Alle personenbezogenen Daten und Objekte sind auf das Subjekt des JWT beschränkt.

Besonderheiten: Der Vorgang ändert den Zustand oder setzt eine einmalige Authentifizierung fort; das Beispiel beschreibt den Vertrag und wird nicht ausgeführt.

Die Methode ändert Daten. Erneutes Senden ist nur sicher, wenn bei der Methode Idempotency-Key angegeben ist. Geht die Antwort verloren, prüfen Sie zuerst das Ergebnis (zum Beispiel die Schlüsselliste) und entscheiden Sie erst dann über eine Wiederholung.

**POST /api/v1/auth/send-verify-code** — Bestätigungscode senden

Zugriff: Ohne Anmeldung; zusätzliche Bedingungen stehen bei der Methode

Anfragelimit: 5 Requests innerhalb von 60 Sekunden von derselben Adresse.

POST`/api/v1/auth/send-verify-code`

## JSON- / Formularfelder

| Das Feld | Typ | Erforderlich | Validierung / Beschreibung |
| --- | --- | --- | --- |
| `email` | `string` | ja | required,email |
| `turnstile_token` | `string` | nein |  |

Vorlage für den Request-Body

```json
{
  "email": "PLACEHOLDER_EMAIL (string)",
  "turnstile_token": "PLACEHOLDER_TURNSTILE_TOKEN (string)"
}
```

PLACEHOLDER steht für Ihre Eingabe und deren Typ. Ersetzen Sie die Werte und behalten Sie nur die benötigten optionalen Felder; String-Platzhalter dürfen nicht anstelle von Zahlen, boolean, Objekten oder Arrays gesendet werden.

Request-Schema: `SendVerifyCodeRequest`

## Antwort

Die JSON-Antwort enthält code, message und data. Der Inhalt von data wird in den nachfolgenden Schemata beschrieben.

Datenschemata der Antwort: `SendVerifyCodeResponse`. Felder und Typen finden Sie auf den Seiten „Datenschemata“.

Antwortschema mit beispielhaften Werten

```json
{
  "code": 0,
  "message": "success",
  "data": {
    "message": "PLACEHOLDER_MESSAGE (string)",
    "countdown": "PLACEHOLDER_COUNTDOWN (integer)"
  }
}
```

Besonderheiten: Der Vorgang ändert den Zustand oder setzt eine einmalige Authentifizierung fort; das Beispiel beschreibt den Vertrag und wird nicht ausgeführt.

Die Methode ändert Daten. Erneutes Senden ist nur sicher, wenn bei der Methode Idempotency-Key angegeben ist. Geht die Antwort verloren, prüfen Sie zuerst das Ergebnis (zum Beispiel die Schlüsselliste) und entscheiden Sie erst dann über eine Wiederholung.

**POST /api/v1/auth/validate-invitation-code** — Einladung prüfen

Zugriff: Ohne Anmeldung; zusätzliche Bedingungen stehen bei der Methode

Funktionsverfügbarkeit und zusätzliche Zugriffsbedingungen werden bei der Ausführung des Requests geprüft.

Anfragelimit: 10 Requests innerhalb von 60 Sekunden von derselben Adresse.

POST`/api/v1/auth/validate-invitation-code`

## JSON- / Formularfelder

| Das Feld | Typ | Erforderlich | Validierung / Beschreibung |
| --- | --- | --- | --- |
| `code` | `string` | ja | required |

Vorlage für den Request-Body

```json
{
  "code": "PLACEHOLDER_CODE (string)"
}
```

PLACEHOLDER steht für Ihre Eingabe und deren Typ. Ersetzen Sie die Werte und behalten Sie nur die benötigten optionalen Felder; String-Platzhalter dürfen nicht anstelle von Zahlen, boolean, Objekten oder Arrays gesendet werden.

Request-Schema: `ValidateInvitationCodeRequest`

## Antwort

Die JSON-Antwort enthält code, message und data. Der Inhalt von data wird in den nachfolgenden Schemata beschrieben.

Datenschemata der Antwort: `ValidateInvitationCodeResponse`. Felder und Typen finden Sie auf den Seiten „Datenschemata“.

Antwortschema mit beispielhaften Werten

```json
{
  "code": 0,
  "message": "success",
  "data": {
    "valid": "PLACEHOLDER_VALID (boolean)",
    "error_code": "PLACEHOLDER_ERROR_CODE (string)"
  }
}
```

Besonderheiten: Die Methode prüft die Einladung und löst den Code nicht ein; das Beispiel beschreibt den Vertrag und wird nicht ausgeführt.

Die Methode prüft nur den Einladungscode und verbraucht ihn nicht. Die Prüfung kann unter Einhaltung des Ratenlimits wiederholt werden; das Ergebnis zeigt den Zustand des Codes zum Zeitpunkt der Anfrage.

**POST /api/v1/auth/validate-promo-code** — Aktionscode prüfen

Zugriff: Ohne Anmeldung; zusätzliche Bedingungen stehen bei der Methode

Funktionsverfügbarkeit und zusätzliche Zugriffsbedingungen werden bei der Ausführung des Requests geprüft.

Anfragelimit: 10 Requests innerhalb von 60 Sekunden von derselben Adresse.

POST`/api/v1/auth/validate-promo-code`

## JSON- / Formularfelder

| Das Feld | Typ | Erforderlich | Validierung / Beschreibung |
| --- | --- | --- | --- |
| `code` | `string` | ja | required |

Vorlage für den Request-Body

```json
{
  "code": "PLACEHOLDER_CODE (string)"
}
```

PLACEHOLDER steht für Ihre Eingabe und deren Typ. Ersetzen Sie die Werte und behalten Sie nur die benötigten optionalen Felder; String-Platzhalter dürfen nicht anstelle von Zahlen, boolean, Objekten oder Arrays gesendet werden.

Request-Schema: `ValidatePromoCodeRequest`

## Antwort

Die JSON-Antwort enthält code, message und data. Der Inhalt von data wird in den nachfolgenden Schemata beschrieben.

Datenschemata der Antwort: `ValidatePromoCodeResponse`. Felder und Typen finden Sie auf den Seiten „Datenschemata“.

Antwortschema mit beispielhaften Werten

```json
{
  "code": 0,
  "message": "success",
  "data": {
    "valid": "PLACEHOLDER_VALID (boolean)",
    "bonus_amount": "PLACEHOLDER_BONUS_AMOUNT (number)",
    "error_code": "PLACEHOLDER_ERROR_CODE (string)",
    "message": "PLACEHOLDER_MESSAGE (string)"
  }
}
```

Besonderheiten: Die Methode prüft den Promocode und schreibt keinen Bonus gut; das Beispiel beschreibt den Vertrag und wird nicht ausgeführt.

Die Methode prüft nur den Promocode und wendet ihn nicht auf das Konto an. Die Prüfung kann unter Einhaltung des Ratenlimits wiederholt werden; das Ergebnis zeigt den Zustand des Codes zum Zeitpunkt der Anfrage.

## Anmeldung und Sitzungen · 2FA

`POST /api/v1/auth/login` → `data`

- `data.requires_2fa === true` → [TotpLoginResponse](https://ailoot.ai/docs/de-at/cabinet/schemas-1/#totploginresponse) → `data.temp_token` → `POST /api/v1/auth/login/2fa` · `{"temp_token": "…", "totp_code": "…"}` → `data.access_token`
- `data.access_token` → [AuthResponse](https://ailoot.ai/docs/de-at/cabinet/schemas-1/#authresponse) → `Authorization: Bearer $TOKEN`

`totp_code`: `string`, `len = 6`. `temp_token ≠ access_token`. [User](https://ailoot.ai/docs/de-at/cabinet/schemas-1/#user)

Noch Fragen? Senden Sie uns die Request ID und eine Beschreibung — wir helfen Ihnen weiter.[Support kontaktieren](mailto:support@ailoot.ai)

## Ailoot · Das Unternehmen und sein Projektportfolio





Ailoot baut auf bewährte Betriebserfahrung, einen großen Kundenstamm, stabilen Service und kontinuierliche KPI-Kontrolle.





Das Unternehmen und sein Projektportfolio: Millionen von Kunden; monatliche Umsätze in Milliardenhöhe.





Ailoot nutzt diese Betriebserfahrung für den API-Zugang zu KI-Funktionen in Kundenprodukten, Agenten, Anwendungen und Automatisierungen.
