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

[API du tableau de bord](https://ailoot.ai/docs/fr/) 

# Connexion et sessions

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

Méthodes, champs des requêtes et réponses.

Cette rubrique comporte 14 méthodes. Ouvrez une méthode pour consulter les conditions d’accès, les champs de la requête et la réponse.

| Méthode et chemin | Description | Accès |
| --- | --- | --- |
| `POST /api/v1/auth/forgot-password` | Demande de réinitialisation du mot de passe | Sans connexion ; les conditions supplémentaires sont précisées pour la méthode |
| `POST /api/v1/auth/login` | Connexion par adresse e-mail et mot de passe | Sans connexion ; les conditions supplémentaires sont précisées pour la méthode |
| `POST /api/v1/auth/login/2fa` | Finalisation de la connexion avec TOTP | Sans connexion ; les conditions supplémentaires sont précisées pour la méthode |
| `POST /api/v1/auth/logout` | Déconnexion et révocation du refresh token | Sans connexion ; les conditions supplémentaires sont précisées pour la méthode |
| `GET /api/v1/auth/me` | Utilisateur actuel, solde et limites | Token de l’espace personnel |
| `POST /api/v1/auth/passkey/login/begin` | Début de la connexion avec une clé d’accès | Sans connexion ; les conditions supplémentaires sont précisées pour la méthode |
| `POST /api/v1/auth/passkey/login/finish` | Finalisation de la connexion avec une clé d’accès | Sans connexion ; les conditions supplémentaires sont précisées pour la méthode |
| `POST /api/v1/auth/refresh` | Renouvellement des tokens | Sans connexion ; les conditions supplémentaires sont précisées pour la méthode |
| `POST /api/v1/auth/register` | Inscription | Sans connexion ; les conditions supplémentaires sont précisées pour la méthode |
| `POST /api/v1/auth/reset-password` | Réinitialisation du mot de passe | Sans connexion ; les conditions supplémentaires sont précisées pour la méthode |
| `POST /api/v1/auth/revoke-all-sessions` | Révocation de toutes les sessions | Token de l’espace personnel |
| `POST /api/v1/auth/send-verify-code` | Envoi du code de vérification | Sans connexion ; les conditions supplémentaires sont précisées pour la méthode |
| `POST /api/v1/auth/validate-invitation-code` | Vérification de l’invitation | Sans connexion ; les conditions supplémentaires sont précisées pour la méthode |
| `POST /api/v1/auth/validate-promo-code` | Vérification du code promotionnel | Sans connexion ; les conditions supplémentaires sont précisées pour la méthode |

**POST /api/v1/auth/forgot-password** — Demande de réinitialisation du mot de passe

Accès : sans connexion ; les conditions supplémentaires sont précisées pour la méthode

Limite de fréquence : 5 requêtes par 60 secondes depuis une même adresse.

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

## Champs JSON / du formulaire

| Le champ | Type | Obligatoire | Validation / description |
| --- | --- | --- | --- |
| `email` | `string` | oui | required,email |
| `turnstile_token` | `string` | non |  |

Modèle du corps de la requête

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

PLACEHOLDER représente votre saisie et son type. Remplacez les valeurs et ne conservez que les champs facultatifs nécessaires ; les marqueurs textuels ne doivent pas remplacer des nombres, des boolean, des objets ou des tableaux.

Schéma de la requête : `ForgotPasswordRequest`

## Réponse

La réponse JSON contient code, message et data. Le contenu de data est décrit dans les schémas ci-dessous.

Schémas des données de réponse : `ForgotPasswordResponse`. Les champs et les types figurent sur les pages « Schémas de données ».

Schéma de la réponse, avec des valeurs fictives

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

Particularités : cette opération modifie l’état ou poursuit une autorisation à usage unique ; l’exemple décrit le contrat et n’est pas exécuté.

Cette méthode modifie les données. Un nouvel envoi n’est sûr que lorsque la méthode indique Idempotency-Key. Si la réponse a été perdue, vérifiez d’abord le résultat, par exemple la liste des clés, puis décidez s’il faut renvoyer la requête.

**POST /api/v1/auth/login** — Connexion par adresse e-mail et mot de passe

Accès : sans connexion ; les conditions supplémentaires sont précisées pour la méthode

La disponibilité de la fonction et les conditions d’accès supplémentaires sont vérifiées lors de l’exécution de la requête.

Limite de fréquence : 20 requêtes par 60 secondes depuis une même adresse.

POST`/api/v1/auth/login`

## Champs JSON / du formulaire

| Le champ | Type | Obligatoire | Validation / description |
| --- | --- | --- | --- |
| `email` | `string` | oui | required,email |
| `password` | `string` | oui | required |
| `turnstile_token` | `string` | non |  |

Modèle du corps de la requête

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

PLACEHOLDER représente votre saisie et son type. Remplacez les valeurs et ne conservez que les champs facultatifs nécessaires ; les marqueurs textuels ne doivent pas remplacer des nombres, des boolean, des objets ou des tableaux.

Schéma de la requête : `LoginRequest`

## Réponse

La réponse JSON contient code, message et data. Le contenu de data est décrit dans les schémas ci-dessous.

Schémas des données de réponse : `TotpLoginResponse`, `User`, `AuthResponse`. Les champs et les types figurent sur les pages « Schémas de données ».

Si plusieurs variantes de réponse sont possibles, leurs champs sont décrits dans des schémas distincts ; ne les fusionnez pas dans un même objet.

Particularités : cette opération modifie l’état ou poursuit une autorisation à usage unique ; l’exemple décrit le contrat et n’est pas exécuté.

Cette méthode modifie les données. Un nouvel envoi n’est sûr que lorsque la méthode indique Idempotency-Key. Si la réponse a été perdue, vérifiez d’abord le résultat, par exemple la liste des clés, puis décidez s’il faut renvoyer la requête.

**POST /api/v1/auth/login/2fa** — Finalisation de la connexion avec TOTP

Accès : sans connexion ; les conditions supplémentaires sont précisées pour la méthode

La disponibilité de la fonction et les conditions d’accès supplémentaires sont vérifiées lors de l’exécution de la requête.

Limite de fréquence : 20 requêtes par 60 secondes depuis une même adresse.

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

## Champs JSON / du formulaire

| Le champ | Type | Obligatoire | Validation / description |
| --- | --- | --- | --- |
| `temp_token` | `string` | oui | required |
| `totp_code` | `string` | oui | required,len=6 |

Modèle du corps de la requête

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

PLACEHOLDER représente votre saisie et son type. Remplacez les valeurs et ne conservez que les champs facultatifs nécessaires ; les marqueurs textuels ne doivent pas remplacer des nombres, des boolean, des objets ou des tableaux.

Schéma de la requête : `Login2FARequest`

## Réponse

La réponse JSON contient code, message et data. Le contenu de data est décrit dans les schémas ci-dessous.

Schémas des données de réponse : `User`, `AuthResponse`. Les champs et les types figurent sur les pages « Schémas de données ».

Si plusieurs variantes de réponse sont possibles, leurs champs sont décrits dans des schémas distincts ; ne les fusionnez pas dans un même objet.

Particularités : cette opération modifie l’état ou poursuit une autorisation à usage unique ; l’exemple décrit le contrat et n’est pas exécuté.

Cette méthode modifie les données. Un nouvel envoi n’est sûr que lorsque la méthode indique Idempotency-Key. Si la réponse a été perdue, vérifiez d’abord le résultat, par exemple la liste des clés, puis décidez s’il faut renvoyer la requête.

**POST /api/v1/auth/logout** — Déconnexion et révocation du refresh token

Accès : sans connexion ; les conditions supplémentaires sont précisées pour la méthode

POST`/api/v1/auth/logout`

## Champs JSON / du formulaire

| Le champ | Type | Obligatoire | Validation / description |
| --- | --- | --- | --- |
| `refresh_token` | `string` | non | ; Facultatif : révoquer le token de renouvellement indiqué |

Modèle du corps de la requête

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

PLACEHOLDER représente votre saisie et son type. Remplacez les valeurs et ne conservez que les champs facultatifs nécessaires ; les marqueurs textuels ne doivent pas remplacer des nombres, des boolean, des objets ou des tableaux.

Schéma de la requête : `LogoutRequest`

## Réponse

La réponse JSON contient code, message et data. Le contenu de data est décrit dans les schémas ci-dessous.

Schémas des données de réponse : `LogoutResponse`. Les champs et les types figurent sur les pages « Schémas de données ».

Schéma de la réponse, avec des valeurs fictives

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

Particularités : cette opération modifie l’état ou poursuit une autorisation à usage unique ; l’exemple décrit le contrat et n’est pas exécuté.

Cette méthode modifie les données. Un nouvel envoi n’est sûr que lorsque la méthode indique Idempotency-Key. Si la réponse a été perdue, vérifiez d’abord le résultat, par exemple la liste des clés, puis décidez s’il faut renvoyer la requête.

**GET /api/v1/auth/me** — Utilisateur actuel, solde et limites

Accès : token de l’espace personnel

GET`/api/v1/auth/me`

Lecture ; l’ID provient de votre réponse précédente

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

Aucun corps de requête n’est nécessaire. Transmettez les paramètres ci-dessus dans l’URL.

## Réponse

La réponse JSON contient code, message et data. Le contenu de data est décrit dans les schémas ci-dessous.

Schémas des données de réponse : `User`, `UserProfileResponse`. Les champs et les types figurent sur les pages « Schémas de données ».

Schéma de la réponse, avec des valeurs fictives

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

Particularités : toutes les données personnelles et tous les objets sont limités au sujet du JWT.

Particularités : les plafonds de dépenses des clés, quota et quota\_used, figurent dans la réponse des clés, et non dans le profil. frozen\_balance est un montant réservé et ne doit pas être considéré comme un solde disponible.

**POST /api/v1/auth/passkey/login/begin** — Début de la connexion avec une clé d’accès

Accès : sans connexion ; les conditions supplémentaires sont précisées pour la méthode

La disponibilité de la fonction et les conditions d’accès supplémentaires sont vérifiées lors de l’exécution de la requête.

Limite de fréquence : 20 requêtes par 60 secondes depuis une même adresse.

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

## Champs JSON / du formulaire

| Le champ | Type | Obligatoire | Validation / description |
| --- | --- | --- | --- |
| `turnstile_token` | `string` | non |  |

Modèle du corps de la requête

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

PLACEHOLDER représente votre saisie et son type. Remplacez les valeurs et ne conservez que les champs facultatifs nécessaires ; les marqueurs textuels ne doivent pas remplacer des nombres, des boolean, des objets ou des tableaux.

Schéma de la requête : `PasskeyBeginLoginRequest`

## Réponse

La réponse JSON contient code, message et data. Le contenu de data est décrit dans les schémas ci-dessous.

Schémas des données de réponse : `PasskeyOptionsResponse`. Les champs et les types figurent sur les pages « Schémas de données ».

Schéma de la réponse, avec des valeurs fictives

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

Particularités : cette opération modifie l’état ou poursuit une autorisation à usage unique ; l’exemple décrit le contrat et n’est pas exécuté.

Particularités : credential provient de navigator.credentials ; session\_token provient de begin. Le corps de finish doit faire \<=65536 octets ; l’enregistrement et la suppression nécessitent le mot de passe.

Cette méthode modifie les données. Un nouvel envoi n’est sûr que lorsque la méthode indique Idempotency-Key. Si la réponse a été perdue, vérifiez d’abord le résultat, par exemple la liste des clés, puis décidez s’il faut renvoyer la requête.

**POST /api/v1/auth/passkey/login/finish** — Finalisation de la connexion avec une clé d’accès

Accès : sans connexion ; les conditions supplémentaires sont précisées pour la méthode

La disponibilité de la fonction et les conditions d’accès supplémentaires sont vérifiées lors de l’exécution de la requête.

Limite de fréquence : 20 requêtes par 60 secondes depuis une même adresse.

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

## Champs JSON / du formulaire

| Le champ | Type | Obligatoire | Validation / description |
| --- | --- | --- | --- |
| `session_token` | `string` | oui | required |
| `name` | `string` | non |  |
| `credential` | `object` | oui | required |

Modèle du corps de la requête

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

PLACEHOLDER représente votre saisie et son type. Remplacez les valeurs et ne conservez que les champs facultatifs nécessaires ; les marqueurs textuels ne doivent pas remplacer des nombres, des boolean, des objets ou des tableaux.

Schéma de la requête : `PasskeyFinishRequest`

## Réponse

La réponse JSON contient code, message et data. Le contenu de data est décrit dans les schémas ci-dessous.

Schémas des données de réponse : `User`, `AuthResponse`. Les champs et les types figurent sur les pages « Schémas de données ».

Si plusieurs variantes de réponse sont possibles, leurs champs sont décrits dans des schémas distincts ; ne les fusionnez pas dans un même objet.

Particularités : cette opération modifie l’état ou poursuit une autorisation à usage unique ; l’exemple décrit le contrat et n’est pas exécuté.

Particularités : credential provient de navigator.credentials ; session\_token provient de begin. Le corps de finish doit faire \<=65536 octets ; l’enregistrement et la suppression nécessitent le mot de passe.

Cette méthode modifie les données. Un nouvel envoi n’est sûr que lorsque la méthode indique Idempotency-Key. Si la réponse a été perdue, vérifiez d’abord le résultat, par exemple la liste des clés, puis décidez s’il faut renvoyer la requête.

**POST /api/v1/auth/refresh** — Renouvellement des tokens

Accès : sans connexion ; les conditions supplémentaires sont précisées pour la méthode

La disponibilité de la fonction et les conditions d’accès supplémentaires sont vérifiées lors de l’exécution de la requête.

Limite de fréquence : 30 requêtes par 60 secondes depuis une même adresse.

POST`/api/v1/auth/refresh`

## Champs JSON / du formulaire

| Le champ | Type | Obligatoire | Validation / description |
| --- | --- | --- | --- |
| `refresh_token` | `string` | oui | required |

Modèle du corps de la requête

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

PLACEHOLDER représente votre saisie et son type. Remplacez les valeurs et ne conservez que les champs facultatifs nécessaires ; les marqueurs textuels ne doivent pas remplacer des nombres, des boolean, des objets ou des tableaux.

Schéma de la requête : `RefreshTokenRequest`

## Réponse

La réponse JSON contient code, message et data. Le contenu de data est décrit dans les schémas ci-dessous.

Schémas des données de réponse : `RefreshTokenResponse`. Les champs et les types figurent sur les pages « Schémas de données ».

Schéma de la réponse, avec des valeurs fictives

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

Particularités : cette opération modifie l’état ou poursuit une autorisation à usage unique ; l’exemple décrit le contrat et n’est pas exécuté.

Cette méthode modifie les données. Un nouvel envoi n’est sûr que lorsque la méthode indique Idempotency-Key. Si la réponse a été perdue, vérifiez d’abord le résultat, par exemple la liste des clés, puis décidez s’il faut renvoyer la requête.

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

Accès : sans connexion ; les conditions supplémentaires sont précisées pour la méthode

Limite de fréquence : 5 requêtes par 60 secondes depuis une même adresse.

POST`/api/v1/auth/register`

## Champs JSON / du formulaire

| Le champ | Type | Obligatoire | Validation / description |
| --- | --- | --- | --- |
| `email` | `string` | oui | required,email |
| `password` | `string` | oui | required,min=6 |
| `verify_code` | `string` | non |  |
| `turnstile_token` | `string` | non |  |
| `promo_code` | `string` | non | ; Code promotionnel d’inscription |
| `invitation_code` | `string` | non | ; Code d’invitation |

Modèle du corps de la requête

```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 représente votre saisie et son type. Remplacez les valeurs et ne conservez que les champs facultatifs nécessaires ; les marqueurs textuels ne doivent pas remplacer des nombres, des boolean, des objets ou des tableaux.

Schéma de la requête : `RegisterRequest`

## Réponse

La réponse JSON contient code, message et data. Le contenu de data est décrit dans les schémas ci-dessous.

Schémas des données de réponse : `User`, `AuthResponse`. Les champs et les types figurent sur les pages « Schémas de données ».

Si plusieurs variantes de réponse sont possibles, leurs champs sont décrits dans des schémas distincts ; ne les fusionnez pas dans un même objet.

Particularités : cette opération modifie l’état ou poursuit une autorisation à usage unique ; l’exemple décrit le contrat et n’est pas exécuté.

Cette méthode modifie les données. Un nouvel envoi n’est sûr que lorsque la méthode indique Idempotency-Key. Si la réponse a été perdue, vérifiez d’abord le résultat, par exemple la liste des clés, puis décidez s’il faut renvoyer la requête.

**POST /api/v1/auth/reset-password** — Réinitialisation du mot de passe

Accès : sans connexion ; les conditions supplémentaires sont précisées pour la méthode

Limite de fréquence : 10 requêtes par 60 secondes depuis une même adresse.

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

## Champs JSON / du formulaire

| Le champ | Type | Obligatoire | Validation / description |
| --- | --- | --- | --- |
| `email` | `string` | oui | required,email |
| `token` | `string` | oui | required |
| `new_password` | `string` | oui | required,min=6 |

Modèle du corps de la requête

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

PLACEHOLDER représente votre saisie et son type. Remplacez les valeurs et ne conservez que les champs facultatifs nécessaires ; les marqueurs textuels ne doivent pas remplacer des nombres, des boolean, des objets ou des tableaux.

Schéma de la requête : `ResetPasswordRequest`

## Réponse

La réponse JSON contient code, message et data. Le contenu de data est décrit dans les schémas ci-dessous.

Schémas des données de réponse : `ResetPasswordResponse`. Les champs et les types figurent sur les pages « Schémas de données ».

Schéma de la réponse, avec des valeurs fictives

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

Particularités : cette opération modifie l’état ou poursuit une autorisation à usage unique ; l’exemple décrit le contrat et n’est pas exécuté.

Cette méthode modifie les données. Un nouvel envoi n’est sûr que lorsque la méthode indique Idempotency-Key. Si la réponse a été perdue, vérifiez d’abord le résultat, par exemple la liste des clés, puis décidez s’il faut renvoyer la requête.

**POST /api/v1/auth/revoke-all-sessions** — Révocation de toutes les sessions

Accès : token de l’espace personnel

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

Aucun corps de requête n’est nécessaire.

## Réponse

La réponse JSON contient code, message et data. Le contenu de data est décrit dans les schémas ci-dessous.

Schémas des données de réponse : `RevokeAllSessionsResponse`. Les champs et les types figurent sur les pages « Schémas de données ».

Schéma de la réponse, avec des valeurs fictives

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

Particularités : toutes les données personnelles et tous les objets sont limités au sujet du JWT.

Particularités : cette opération modifie l’état ou poursuit une autorisation à usage unique ; l’exemple décrit le contrat et n’est pas exécuté.

Cette méthode modifie les données. Un nouvel envoi n’est sûr que lorsque la méthode indique Idempotency-Key. Si la réponse a été perdue, vérifiez d’abord le résultat, par exemple la liste des clés, puis décidez s’il faut renvoyer la requête.

**POST /api/v1/auth/send-verify-code** — Envoi du code de vérification

Accès : sans connexion ; les conditions supplémentaires sont précisées pour la méthode

Limite de fréquence : 5 requêtes par 60 secondes depuis une même adresse.

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

## Champs JSON / du formulaire

| Le champ | Type | Obligatoire | Validation / description |
| --- | --- | --- | --- |
| `email` | `string` | oui | required,email |
| `turnstile_token` | `string` | non |  |

Modèle du corps de la requête

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

PLACEHOLDER représente votre saisie et son type. Remplacez les valeurs et ne conservez que les champs facultatifs nécessaires ; les marqueurs textuels ne doivent pas remplacer des nombres, des boolean, des objets ou des tableaux.

Schéma de la requête : `SendVerifyCodeRequest`

## Réponse

La réponse JSON contient code, message et data. Le contenu de data est décrit dans les schémas ci-dessous.

Schémas des données de réponse : `SendVerifyCodeResponse`. Les champs et les types figurent sur les pages « Schémas de données ».

Schéma de la réponse, avec des valeurs fictives

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

Particularités : cette opération modifie l’état ou poursuit une autorisation à usage unique ; l’exemple décrit le contrat et n’est pas exécuté.

Cette méthode modifie les données. Un nouvel envoi n’est sûr que lorsque la méthode indique Idempotency-Key. Si la réponse a été perdue, vérifiez d’abord le résultat, par exemple la liste des clés, puis décidez s’il faut renvoyer la requête.

**POST /api/v1/auth/validate-invitation-code** — Vérification de l’invitation

Accès : sans connexion ; les conditions supplémentaires sont précisées pour la méthode

La disponibilité de la fonction et les conditions d’accès supplémentaires sont vérifiées lors de l’exécution de la requête.

Limite de fréquence : 10 requêtes par 60 secondes depuis une même adresse.

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

## Champs JSON / du formulaire

| Le champ | Type | Obligatoire | Validation / description |
| --- | --- | --- | --- |
| `code` | `string` | oui | required |

Modèle du corps de la requête

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

PLACEHOLDER représente votre saisie et son type. Remplacez les valeurs et ne conservez que les champs facultatifs nécessaires ; les marqueurs textuels ne doivent pas remplacer des nombres, des boolean, des objets ou des tableaux.

Schéma de la requête : `ValidateInvitationCodeRequest`

## Réponse

La réponse JSON contient code, message et data. Le contenu de data est décrit dans les schémas ci-dessous.

Schémas des données de réponse : `ValidateInvitationCodeResponse`. Les champs et les types figurent sur les pages « Schémas de données ».

Schéma de la réponse, avec des valeurs fictives

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

Particularités : cette méthode vérifie l’invitation sans consommer le code ; l’exemple décrit le contrat et n’est pas exécuté.

Cette méthode vérifie uniquement le code d’invitation sans le consommer. La vérification peut être répétée en respectant la limite de fréquence ; le résultat reflète l’état du code au moment de la requête.

**POST /api/v1/auth/validate-promo-code** — Vérification du code promotionnel

Accès : sans connexion ; les conditions supplémentaires sont précisées pour la méthode

La disponibilité de la fonction et les conditions d’accès supplémentaires sont vérifiées lors de l’exécution de la requête.

Limite de fréquence : 10 requêtes par 60 secondes depuis une même adresse.

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

## Champs JSON / du formulaire

| Le champ | Type | Obligatoire | Validation / description |
| --- | --- | --- | --- |
| `code` | `string` | oui | required |

Modèle du corps de la requête

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

PLACEHOLDER représente votre saisie et son type. Remplacez les valeurs et ne conservez que les champs facultatifs nécessaires ; les marqueurs textuels ne doivent pas remplacer des nombres, des boolean, des objets ou des tableaux.

Schéma de la requête : `ValidatePromoCodeRequest`

## Réponse

La réponse JSON contient code, message et data. Le contenu de data est décrit dans les schémas ci-dessous.

Schémas des données de réponse : `ValidatePromoCodeResponse`. Les champs et les types figurent sur les pages « Schémas de données ».

Schéma de la réponse, avec des valeurs fictives

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

Particularités : cette méthode vérifie le code promotionnel sans créditer de bonus ; l’exemple décrit le contrat et n’est pas exécuté.

Cette méthode vérifie uniquement le code promotionnel sans l’appliquer au compte. La vérification peut être répétée en respectant la limite de fréquence ; le résultat reflète l’état du code au moment de la requête.

## Connexion et sessions · 2FA

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

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

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

Encore des questions ? Envoyez le Request ID et une description : nous vous aiderons à comprendre.[Contacter l’assistance](mailto:support@ailoot.ai)

## Ailoot · L’entreprise et son portefeuille de projets





Ailoot s’appuie sur une expérience opérationnelle éprouvée, une large clientèle, un service stable et un suivi continu des KPI.





L’entreprise et son portefeuille de projets : des millions de clients ; des ventes qui se chiffrent en milliards chaque mois.





Ailoot met cette expérience opérationnelle au service de l’accès API aux fonctions d’IA dans les produits des clients, leurs agents, applications et automatisations.
