> ## Documentation Index
> Fetch the complete documentation index at: https://docs.0flaw.fr/llms.txt
> Use this file to discover all available pages before exploring further.

# Erreurs

> Format des erreurs et catalogue des codes.

Toutes les erreurs suivent le même format :

```json theme={null}
{ "message": "Scope requis : write:employees", "code": "INSUFFICIENT_SCOPE" }
```

<Warning>
  Basez votre logique sur **`code`**, qui est stable et fait partie du contrat. Le champ `message`
  est destiné aux humains : sa formulation peut changer sans préavis, et il est en français.
</Warning>

## Catalogue

| Statut | Code | Signification | Que faire |
| - | - | - | - |
| 400 | `VALIDATION_ERROR` | Corps de requête invalide | Corrigez le payload - le message indique le premier champ fautif |
| 401 | `API_KEY_MISSING` | Aucune clé transmise | Vérifiez l'en-tête `Authorization` |
| 401 | `API_KEY_INVALID` | Clé inconnue, révoquée ou expirée | Créez une nouvelle clé au dashboard |
| 403 | `INSUFFICIENT_SCOPE` | La clé ne porte pas la permission requise | Recréez une clé avec le scope indiqué |
| 403 | `QUOTA_MAXIMUM_ATTEINT` | Le lot dépasserait votre nombre de sièges | **Aucune écriture n'a été faite.** Réduisez le lot ou augmentez le quota |
| 404 | `NOT_FOUND` | Endpoint inconnu | Vérifiez la méthode et le chemin |
| 404 | `EMPLOYEE_NOT_FOUND` | Employé absent de votre entreprise | Vérifiez l'identifiant ou l'`external_id` |
| 409 | `SSO_ACCOUNT` | L'employé se connecte via Google/Microsoft | Aucune invitation par mot de passe n'est possible |
| 409 | `EMPLOYEE_ARCHIVED` | L'employé est archivé | Réactivez-le avant de l'inviter |
| 409 | `ALREADY_ACTIVE` | L'employé s'est déjà connecté | Utilisez `force: true` pour écraser son mot de passe, sinon laissez-le utiliser « mot de passe oublié » |
| 413 | `TOO_MANY_RECORDS` | Plus de 1000 employés en un appel | Découpez votre liste |
| 429 | `RATE_LIMIT_EXCEEDED` | Limite de débit atteinte | Attendez la fenêtre indiquée par `RateLimit-Reset` |
| 502 | `EMAIL_SEND_FAILED` | L'email d'invitation n'a pas pu partir | **Le mot de passe n'a pas été modifié** : rejouez l'appel |

## Deux garanties utiles

<CardGroup cols={2}>
  <Card title="Le quota ne laisse jamais un import à moitié fait" icon="shield-check">
    Le contrôle de sièges a lieu **avant** toute écriture. Si le lot dépasse votre quota, vous
    recevez `QUOTA_MAXIMUM_ATTEINT` et rien n'a été créé.
  </Card>

  <Card title="Un envoi d'email en échec ne casse rien" icon="envelope">
    Sur `EMAIL_SEND_FAILED`, le mot de passe de l'employé n'est pas modifié. Vous pouvez rejouer
    l'appel sans risquer de le laisser avec des identifiants qu'il n'a jamais reçus.
  </Card>
</CardGroup>

## Erreurs par employé

Sur les opérations de masse, une erreur individuelle **n'interrompt pas** le lot : elle apparaît
dans `results[]` avec son motif.

| Motif | Signification |
| - | - |
| `email_conflict_other_tenant` | Cet email appartient déjà à une autre entreprise 0flaw |
| `email_exists_non_employe` | Cet email correspond à un compte existant qui n'est pas un employé |
| `duplicate_in_payload` | Le même employé apparaît deux fois dans votre liste |
| `insert_failed` / `update_failed` | Échec technique sur cette ligne - les autres sont traitées |


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.