Source: https://ailoot.ai/docs/nl/cabinet/auth/
Canonical: https://ailoot.ai/docs/nl/cabinet/auth/
Language: nl

[Dashboard-API](https://ailoot.ai/docs/nl/) 

# Inloggen en sessies

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

Methoden, verzoekvelden en antwoorden.

Dit onderdeel bevat 14 methoden. Open een methode om de toegangsvoorwaarden, verzoekvelden en het antwoord te bekijken.

| Methode en pad | Beschrijving | Toegang |
| --- | --- | --- |
| `POST /api/v1/auth/forgot-password` | Verzoek om het wachtwoord opnieuw in te stellen | Zonder inloggen; aanvullende voorwaarden staan bij de methode |
| `POST /api/v1/auth/login` | Inloggen met e-mailadres en wachtwoord | Zonder inloggen; aanvullende voorwaarden staan bij de methode |
| `POST /api/v1/auth/login/2fa` | Inloggen met TOTP voltooien | Zonder inloggen; aanvullende voorwaarden staan bij de methode |
| `POST /api/v1/auth/logout` | Uitloggen en refresh token intrekken | Zonder inloggen; aanvullende voorwaarden staan bij de methode |
| `GET /api/v1/auth/me` | Huidige gebruiker, saldo en limieten | Dashboardtoken |
| `POST /api/v1/auth/passkey/login/begin` | Inloggen met een passkey starten | Zonder inloggen; aanvullende voorwaarden staan bij de methode |
| `POST /api/v1/auth/passkey/login/finish` | Inloggen met een passkey voltooien | Zonder inloggen; aanvullende voorwaarden staan bij de methode |
| `POST /api/v1/auth/refresh` | Tokens vernieuwen | Zonder inloggen; aanvullende voorwaarden staan bij de methode |
| `POST /api/v1/auth/register` | Registreren | Zonder inloggen; aanvullende voorwaarden staan bij de methode |
| `POST /api/v1/auth/reset-password` | Wachtwoord opnieuw instellen | Zonder inloggen; aanvullende voorwaarden staan bij de methode |
| `POST /api/v1/auth/revoke-all-sessions` | Alle sessies intrekken | Dashboardtoken |
| `POST /api/v1/auth/send-verify-code` | Bevestigingscode versturen | Zonder inloggen; aanvullende voorwaarden staan bij de methode |
| `POST /api/v1/auth/validate-invitation-code` | Uitnodiging controleren | Zonder inloggen; aanvullende voorwaarden staan bij de methode |
| `POST /api/v1/auth/validate-promo-code` | Promotiecode controleren | Zonder inloggen; aanvullende voorwaarden staan bij de methode |

**POST /api/v1/auth/forgot-password** — Verzoek om het wachtwoord opnieuw in te stellen

Toegang: zonder inloggen; aanvullende voorwaarden staan bij de methode

Frequentielimiet: 5 verzoeken per 60 seconden vanaf één adres.

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

## JSON- / formuliervelden

| Veld | Type | Verplicht | Validatie / beschrijving |
| --- | --- | --- | --- |
| `email` | `string` | ja | required,email |
| `turnstile_token` | `string` | nee |  |

Sjabloon voor de verzoekbody

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

PLACEHOLDER geeft jouw invoer en het bijbehorende type aan. Vervang de waarden en behoud alleen de benodigde optionele velden; verstuur stringmarkeringen niet in plaats van getallen, boolean, objecten of arrays.

Verzoekschema: `ForgotPasswordRequest`

## Antwoord

Het JSON-antwoord bevat code, message en data. De inhoud van data wordt beschreven in de schema’s hieronder.

Gegevensschema’s van het antwoord: `ForgotPasswordResponse`. Velden en typen staan op de pagina’s “Gegevensschema’s”.

Antwoordschema met voorbeeldwaarden

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

Bijzonderheden: de bewerking wijzigt de toestand of zet een eenmalige autorisatie voort; het voorbeeld beschrijft het contract en wordt niet uitgevoerd.

De methode wijzigt gegevens. Opnieuw versturen is alleen veilig als bij de methode Idempotency-Key is vermeld. Als het antwoord is verdwenen, controleer dan eerst het resultaat (bijvoorbeeld de sleutellijst) en beslis daarna of je het verzoek opnieuw verstuurt.

**POST /api/v1/auth/login** — Inloggen met e-mailadres en wachtwoord

Toegang: zonder inloggen; aanvullende voorwaarden staan bij de methode

De beschikbaarheid van de functie en aanvullende toegangsvoorwaarden worden tijdens het verzoek gecontroleerd.

Frequentielimiet: 20 verzoeken per 60 seconden vanaf één adres.

POST`/api/v1/auth/login`

## JSON- / formuliervelden

| Veld | Type | Verplicht | Validatie / beschrijving |
| --- | --- | --- | --- |
| `email` | `string` | ja | required,email |
| `password` | `string` | ja | required |
| `turnstile_token` | `string` | nee |  |

Sjabloon voor de verzoekbody

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

PLACEHOLDER geeft jouw invoer en het bijbehorende type aan. Vervang de waarden en behoud alleen de benodigde optionele velden; verstuur stringmarkeringen niet in plaats van getallen, boolean, objecten of arrays.

Verzoekschema: `LoginRequest`

## Antwoord

Het JSON-antwoord bevat code, message en data. De inhoud van data wordt beschreven in de schema’s hieronder.

Gegevensschema’s van het antwoord: `TotpLoginResponse`, `User`, `AuthResponse`. Velden en typen staan op de pagina’s “Gegevensschema’s”.

Bij meerdere mogelijke antwoordvarianten staan de velden daarvan in afzonderlijke schema’s; voeg ze niet samen tot één object.

Bijzonderheden: de bewerking wijzigt de toestand of zet een eenmalige autorisatie voort; het voorbeeld beschrijft het contract en wordt niet uitgevoerd.

De methode wijzigt gegevens. Opnieuw versturen is alleen veilig als bij de methode Idempotency-Key is vermeld. Als het antwoord is verdwenen, controleer dan eerst het resultaat (bijvoorbeeld de sleutellijst) en beslis daarna of je het verzoek opnieuw verstuurt.

**POST /api/v1/auth/login/2fa** — Inloggen met TOTP voltooien

Toegang: zonder inloggen; aanvullende voorwaarden staan bij de methode

De beschikbaarheid van de functie en aanvullende toegangsvoorwaarden worden tijdens het verzoek gecontroleerd.

Frequentielimiet: 20 verzoeken per 60 seconden vanaf één adres.

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

## JSON- / formuliervelden

| Veld | Type | Verplicht | Validatie / beschrijving |
| --- | --- | --- | --- |
| `temp_token` | `string` | ja | required |
| `totp_code` | `string` | ja | required,len=6 |

Sjabloon voor de verzoekbody

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

PLACEHOLDER geeft jouw invoer en het bijbehorende type aan. Vervang de waarden en behoud alleen de benodigde optionele velden; verstuur stringmarkeringen niet in plaats van getallen, boolean, objecten of arrays.

Verzoekschema: `Login2FARequest`

## Antwoord

Het JSON-antwoord bevat code, message en data. De inhoud van data wordt beschreven in de schema’s hieronder.

Gegevensschema’s van het antwoord: `User`, `AuthResponse`. Velden en typen staan op de pagina’s “Gegevensschema’s”.

Bij meerdere mogelijke antwoordvarianten staan de velden daarvan in afzonderlijke schema’s; voeg ze niet samen tot één object.

Bijzonderheden: de bewerking wijzigt de toestand of zet een eenmalige autorisatie voort; het voorbeeld beschrijft het contract en wordt niet uitgevoerd.

De methode wijzigt gegevens. Opnieuw versturen is alleen veilig als bij de methode Idempotency-Key is vermeld. Als het antwoord is verdwenen, controleer dan eerst het resultaat (bijvoorbeeld de sleutellijst) en beslis daarna of je het verzoek opnieuw verstuurt.

**POST /api/v1/auth/logout** — Uitloggen en refresh token intrekken

Toegang: zonder inloggen; aanvullende voorwaarden staan bij de methode

POST`/api/v1/auth/logout`

## JSON- / formuliervelden

| Veld | Type | Verplicht | Validatie / beschrijving |
| --- | --- | --- | --- |
| `refresh_token` | `string` | nee | ; Optioneel: de opgegeven refresh token intrekken |

Sjabloon voor de verzoekbody

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

PLACEHOLDER geeft jouw invoer en het bijbehorende type aan. Vervang de waarden en behoud alleen de benodigde optionele velden; verstuur stringmarkeringen niet in plaats van getallen, boolean, objecten of arrays.

Verzoekschema: `LogoutRequest`

## Antwoord

Het JSON-antwoord bevat code, message en data. De inhoud van data wordt beschreven in de schema’s hieronder.

Gegevensschema’s van het antwoord: `LogoutResponse`. Velden en typen staan op de pagina’s “Gegevensschema’s”.

Antwoordschema met voorbeeldwaarden

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

Bijzonderheden: de bewerking wijzigt de toestand of zet een eenmalige autorisatie voort; het voorbeeld beschrijft het contract en wordt niet uitgevoerd.

De methode wijzigt gegevens. Opnieuw versturen is alleen veilig als bij de methode Idempotency-Key is vermeld. Als het antwoord is verdwenen, controleer dan eerst het resultaat (bijvoorbeeld de sleutellijst) en beslis daarna of je het verzoek opnieuw verstuurt.

**GET /api/v1/auth/me** — Huidige gebruiker, saldo en limieten

Toegang: dashboardtoken

GET`/api/v1/auth/me`

Leesbewerking; de ID komt uit je vorige antwoord

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

Er is geen verzoekbody nodig. Geef de hierboven genoemde parameters mee in de URL.

## Antwoord

Het JSON-antwoord bevat code, message en data. De inhoud van data wordt beschreven in de schema’s hieronder.

Gegevensschema’s van het antwoord: `User`, `UserProfileResponse`. Velden en typen staan op de pagina’s “Gegevensschema’s”.

Antwoordschema met voorbeeldwaarden

```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)"
  }
}
```

Bijzonderheden: alle persoonsgegevens en objecten zijn beperkt tot het subject van de JWT.

Bijzonderheden: de bestedingslimieten van sleutels (quota, quota\_used) staan in het sleutelantwoord, niet in het profiel. frozen\_balance is het gereserveerde bedrag; je kunt dat niet als vrij saldo beschouwen.

**POST /api/v1/auth/passkey/login/begin** — Inloggen met een passkey starten

Toegang: zonder inloggen; aanvullende voorwaarden staan bij de methode

De beschikbaarheid van de functie en aanvullende toegangsvoorwaarden worden tijdens het verzoek gecontroleerd.

Frequentielimiet: 20 verzoeken per 60 seconden vanaf één adres.

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

## JSON- / formuliervelden

| Veld | Type | Verplicht | Validatie / beschrijving |
| --- | --- | --- | --- |
| `turnstile_token` | `string` | nee |  |

Sjabloon voor de verzoekbody

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

PLACEHOLDER geeft jouw invoer en het bijbehorende type aan. Vervang de waarden en behoud alleen de benodigde optionele velden; verstuur stringmarkeringen niet in plaats van getallen, boolean, objecten of arrays.

Verzoekschema: `PasskeyBeginLoginRequest`

## Antwoord

Het JSON-antwoord bevat code, message en data. De inhoud van data wordt beschreven in de schema’s hieronder.

Gegevensschema’s van het antwoord: `PasskeyOptionsResponse`. Velden en typen staan op de pagina’s “Gegevensschema’s”.

Antwoordschema met voorbeeldwaarden

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

Bijzonderheden: de bewerking wijzigt de toestand of zet een eenmalige autorisatie voort; het voorbeeld beschrijft het contract en wordt niet uitgevoerd.

Bijzonderheden: credential komt uit navigator.credentials; session\_token uit begin. De finish-body is \<=65536 bytes; passkeyregistratie en -verwijdering vereisen een wachtwoord.

De methode wijzigt gegevens. Opnieuw versturen is alleen veilig als bij de methode Idempotency-Key is vermeld. Als het antwoord is verdwenen, controleer dan eerst het resultaat (bijvoorbeeld de sleutellijst) en beslis daarna of je het verzoek opnieuw verstuurt.

**POST /api/v1/auth/passkey/login/finish** — Inloggen met een passkey voltooien

Toegang: zonder inloggen; aanvullende voorwaarden staan bij de methode

De beschikbaarheid van de functie en aanvullende toegangsvoorwaarden worden tijdens het verzoek gecontroleerd.

Frequentielimiet: 20 verzoeken per 60 seconden vanaf één adres.

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

## JSON- / formuliervelden

| Veld | Type | Verplicht | Validatie / beschrijving |
| --- | --- | --- | --- |
| `session_token` | `string` | ja | required |
| `name` | `string` | nee |  |
| `credential` | `object` | ja | required |

Sjabloon voor de verzoekbody

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

PLACEHOLDER geeft jouw invoer en het bijbehorende type aan. Vervang de waarden en behoud alleen de benodigde optionele velden; verstuur stringmarkeringen niet in plaats van getallen, boolean, objecten of arrays.

Verzoekschema: `PasskeyFinishRequest`

## Antwoord

Het JSON-antwoord bevat code, message en data. De inhoud van data wordt beschreven in de schema’s hieronder.

Gegevensschema’s van het antwoord: `User`, `AuthResponse`. Velden en typen staan op de pagina’s “Gegevensschema’s”.

Bij meerdere mogelijke antwoordvarianten staan de velden daarvan in afzonderlijke schema’s; voeg ze niet samen tot één object.

Bijzonderheden: de bewerking wijzigt de toestand of zet een eenmalige autorisatie voort; het voorbeeld beschrijft het contract en wordt niet uitgevoerd.

Bijzonderheden: credential komt uit navigator.credentials; session\_token uit begin. De finish-body is \<=65536 bytes; passkeyregistratie en -verwijdering vereisen een wachtwoord.

De methode wijzigt gegevens. Opnieuw versturen is alleen veilig als bij de methode Idempotency-Key is vermeld. Als het antwoord is verdwenen, controleer dan eerst het resultaat (bijvoorbeeld de sleutellijst) en beslis daarna of je het verzoek opnieuw verstuurt.

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

Toegang: zonder inloggen; aanvullende voorwaarden staan bij de methode

De beschikbaarheid van de functie en aanvullende toegangsvoorwaarden worden tijdens het verzoek gecontroleerd.

Frequentielimiet: 30 verzoeken per 60 seconden vanaf één adres.

POST`/api/v1/auth/refresh`

## JSON- / formuliervelden

| Veld | Type | Verplicht | Validatie / beschrijving |
| --- | --- | --- | --- |
| `refresh_token` | `string` | ja | required |

Sjabloon voor de verzoekbody

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

PLACEHOLDER geeft jouw invoer en het bijbehorende type aan. Vervang de waarden en behoud alleen de benodigde optionele velden; verstuur stringmarkeringen niet in plaats van getallen, boolean, objecten of arrays.

Verzoekschema: `RefreshTokenRequest`

## Antwoord

Het JSON-antwoord bevat code, message en data. De inhoud van data wordt beschreven in de schema’s hieronder.

Gegevensschema’s van het antwoord: `RefreshTokenResponse`. Velden en typen staan op de pagina’s “Gegevensschema’s”.

Antwoordschema met voorbeeldwaarden

```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)"
  }
}
```

Bijzonderheden: de bewerking wijzigt de toestand of zet een eenmalige autorisatie voort; het voorbeeld beschrijft het contract en wordt niet uitgevoerd.

De methode wijzigt gegevens. Opnieuw versturen is alleen veilig als bij de methode Idempotency-Key is vermeld. Als het antwoord is verdwenen, controleer dan eerst het resultaat (bijvoorbeeld de sleutellijst) en beslis daarna of je het verzoek opnieuw verstuurt.

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

Toegang: zonder inloggen; aanvullende voorwaarden staan bij de methode

Frequentielimiet: 5 verzoeken per 60 seconden vanaf één adres.

POST`/api/v1/auth/register`

## JSON- / formuliervelden

| Veld | Type | Verplicht | Validatie / beschrijving |
| --- | --- | --- | --- |
| `email` | `string` | ja | required,email |
| `password` | `string` | ja | required,min=6 |
| `verify_code` | `string` | nee |  |
| `turnstile_token` | `string` | nee |  |
| `promo_code` | `string` | nee | ; Promotiecode voor registratie |
| `invitation_code` | `string` | nee | ; Uitnodigingscode |

Sjabloon voor de verzoekbody

```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 geeft jouw invoer en het bijbehorende type aan. Vervang de waarden en behoud alleen de benodigde optionele velden; verstuur stringmarkeringen niet in plaats van getallen, boolean, objecten of arrays.

Verzoekschema: `RegisterRequest`

## Antwoord

Het JSON-antwoord bevat code, message en data. De inhoud van data wordt beschreven in de schema’s hieronder.

Gegevensschema’s van het antwoord: `User`, `AuthResponse`. Velden en typen staan op de pagina’s “Gegevensschema’s”.

Bij meerdere mogelijke antwoordvarianten staan de velden daarvan in afzonderlijke schema’s; voeg ze niet samen tot één object.

Bijzonderheden: de bewerking wijzigt de toestand of zet een eenmalige autorisatie voort; het voorbeeld beschrijft het contract en wordt niet uitgevoerd.

De methode wijzigt gegevens. Opnieuw versturen is alleen veilig als bij de methode Idempotency-Key is vermeld. Als het antwoord is verdwenen, controleer dan eerst het resultaat (bijvoorbeeld de sleutellijst) en beslis daarna of je het verzoek opnieuw verstuurt.

**POST /api/v1/auth/reset-password** — Wachtwoord opnieuw instellen

Toegang: zonder inloggen; aanvullende voorwaarden staan bij de methode

Frequentielimiet: 10 verzoeken per 60 seconden vanaf één adres.

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

## JSON- / formuliervelden

| Veld | Type | Verplicht | Validatie / beschrijving |
| --- | --- | --- | --- |
| `email` | `string` | ja | required,email |
| `token` | `string` | ja | required |
| `new_password` | `string` | ja | required,min=6 |

Sjabloon voor de verzoekbody

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

PLACEHOLDER geeft jouw invoer en het bijbehorende type aan. Vervang de waarden en behoud alleen de benodigde optionele velden; verstuur stringmarkeringen niet in plaats van getallen, boolean, objecten of arrays.

Verzoekschema: `ResetPasswordRequest`

## Antwoord

Het JSON-antwoord bevat code, message en data. De inhoud van data wordt beschreven in de schema’s hieronder.

Gegevensschema’s van het antwoord: `ResetPasswordResponse`. Velden en typen staan op de pagina’s “Gegevensschema’s”.

Antwoordschema met voorbeeldwaarden

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

Bijzonderheden: de bewerking wijzigt de toestand of zet een eenmalige autorisatie voort; het voorbeeld beschrijft het contract en wordt niet uitgevoerd.

De methode wijzigt gegevens. Opnieuw versturen is alleen veilig als bij de methode Idempotency-Key is vermeld. Als het antwoord is verdwenen, controleer dan eerst het resultaat (bijvoorbeeld de sleutellijst) en beslis daarna of je het verzoek opnieuw verstuurt.

**POST /api/v1/auth/revoke-all-sessions** — Alle sessies intrekken

Toegang: dashboardtoken

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

Er is geen verzoekbody nodig.

## Antwoord

Het JSON-antwoord bevat code, message en data. De inhoud van data wordt beschreven in de schema’s hieronder.

Gegevensschema’s van het antwoord: `RevokeAllSessionsResponse`. Velden en typen staan op de pagina’s “Gegevensschema’s”.

Antwoordschema met voorbeeldwaarden

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

Bijzonderheden: alle persoonsgegevens en objecten zijn beperkt tot het subject van de JWT.

Bijzonderheden: de bewerking wijzigt de toestand of zet een eenmalige autorisatie voort; het voorbeeld beschrijft het contract en wordt niet uitgevoerd.

De methode wijzigt gegevens. Opnieuw versturen is alleen veilig als bij de methode Idempotency-Key is vermeld. Als het antwoord is verdwenen, controleer dan eerst het resultaat (bijvoorbeeld de sleutellijst) en beslis daarna of je het verzoek opnieuw verstuurt.

**POST /api/v1/auth/send-verify-code** — Bevestigingscode versturen

Toegang: zonder inloggen; aanvullende voorwaarden staan bij de methode

Frequentielimiet: 5 verzoeken per 60 seconden vanaf één adres.

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

## JSON- / formuliervelden

| Veld | Type | Verplicht | Validatie / beschrijving |
| --- | --- | --- | --- |
| `email` | `string` | ja | required,email |
| `turnstile_token` | `string` | nee |  |

Sjabloon voor de verzoekbody

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

PLACEHOLDER geeft jouw invoer en het bijbehorende type aan. Vervang de waarden en behoud alleen de benodigde optionele velden; verstuur stringmarkeringen niet in plaats van getallen, boolean, objecten of arrays.

Verzoekschema: `SendVerifyCodeRequest`

## Antwoord

Het JSON-antwoord bevat code, message en data. De inhoud van data wordt beschreven in de schema’s hieronder.

Gegevensschema’s van het antwoord: `SendVerifyCodeResponse`. Velden en typen staan op de pagina’s “Gegevensschema’s”.

Antwoordschema met voorbeeldwaarden

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

Bijzonderheden: de bewerking wijzigt de toestand of zet een eenmalige autorisatie voort; het voorbeeld beschrijft het contract en wordt niet uitgevoerd.

De methode wijzigt gegevens. Opnieuw versturen is alleen veilig als bij de methode Idempotency-Key is vermeld. Als het antwoord is verdwenen, controleer dan eerst het resultaat (bijvoorbeeld de sleutellijst) en beslis daarna of je het verzoek opnieuw verstuurt.

**POST /api/v1/auth/validate-invitation-code** — Uitnodiging controleren

Toegang: zonder inloggen; aanvullende voorwaarden staan bij de methode

De beschikbaarheid van de functie en aanvullende toegangsvoorwaarden worden tijdens het verzoek gecontroleerd.

Frequentielimiet: 10 verzoeken per 60 seconden vanaf één adres.

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

## JSON- / formuliervelden

| Veld | Type | Verplicht | Validatie / beschrijving |
| --- | --- | --- | --- |
| `code` | `string` | ja | required |

Sjabloon voor de verzoekbody

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

PLACEHOLDER geeft jouw invoer en het bijbehorende type aan. Vervang de waarden en behoud alleen de benodigde optionele velden; verstuur stringmarkeringen niet in plaats van getallen, boolean, objecten of arrays.

Verzoekschema: `ValidateInvitationCodeRequest`

## Antwoord

Het JSON-antwoord bevat code, message en data. De inhoud van data wordt beschreven in de schema’s hieronder.

Gegevensschema’s van het antwoord: `ValidateInvitationCodeResponse`. Velden en typen staan op de pagina’s “Gegevensschema’s”.

Antwoordschema met voorbeeldwaarden

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

Bijzonderheden: de methode controleert de uitnodiging zonder de code als gebruikt te markeren; het voorbeeld beschrijft het contract en wordt niet uitgevoerd.

De methode controleert alleen de uitnodigingscode en verbruikt deze niet. Je kunt de controle herhalen zolang je de frequentielimiet respecteert; het resultaat geeft de status van de code op het moment van het verzoek weer.

**POST /api/v1/auth/validate-promo-code** — Promotiecode controleren

Toegang: zonder inloggen; aanvullende voorwaarden staan bij de methode

De beschikbaarheid van de functie en aanvullende toegangsvoorwaarden worden tijdens het verzoek gecontroleerd.

Frequentielimiet: 10 verzoeken per 60 seconden vanaf één adres.

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

## JSON- / formuliervelden

| Veld | Type | Verplicht | Validatie / beschrijving |
| --- | --- | --- | --- |
| `code` | `string` | ja | required |

Sjabloon voor de verzoekbody

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

PLACEHOLDER geeft jouw invoer en het bijbehorende type aan. Vervang de waarden en behoud alleen de benodigde optionele velden; verstuur stringmarkeringen niet in plaats van getallen, boolean, objecten of arrays.

Verzoekschema: `ValidatePromoCodeRequest`

## Antwoord

Het JSON-antwoord bevat code, message en data. De inhoud van data wordt beschreven in de schema’s hieronder.

Gegevensschema’s van het antwoord: `ValidatePromoCodeResponse`. Velden en typen staan op de pagina’s “Gegevensschema’s”.

Antwoordschema met voorbeeldwaarden

```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)"
  }
}
```

Bijzonderheden: de methode controleert de promotiecode zonder een bonus toe te kennen; het voorbeeld beschrijft het contract en wordt niet uitgevoerd.

De methode controleert alleen de promotiecode en past deze niet toe op het account. Je kunt de controle herhalen zolang je de frequentielimiet respecteert; het resultaat geeft de status van de code op het moment van het verzoek weer.

## Inloggen en sessies · 2FA

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

- `data.requires_2fa === true` → [TotpLoginResponse](https://ailoot.ai/docs/nl/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/nl/cabinet/schemas-1/#authresponse) → `Authorization: Bearer $TOKEN`

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

Nog vragen? Stuur de Request ID en een beschrijving — we helpen je verder.[Contact opnemen met support](mailto:support@ailoot.ai)

## Ailoot · Het bedrijf en zijn projectenportefeuille





Ailoot bouwt op opgebouwde operationele ervaring, een groot klantenbestand, een stabiele dienst en doorlopende KPI-controle.





Het bedrijf en zijn projectenportefeuille: miljoenen klanten; maandelijkse verkopen in de miljarden.





Ailoot gebruikt die operationele ervaring voor API-toegang tot AI-functies in klantproducten, agents, applicaties en automatiseringen.
