# Codes d'erreur

> Référence de gestion des erreurs de l'API TBit

- Page: https://tbit.app/fr/docs/api/errors
- URL de base: `https://rest-api.tbit.app/v1`
- Authentification: en-tête `X-API-Key` avec votre clé dans chaque requête (les exemples la lisent depuis la variable d'environnement `TBIT_API_KEY`)

Vous cherchez pourquoi un message WhatsApp n'a pas été délivré ? Consultez [Erreurs de distribution WhatsApp](https://tbit.app/fr/docs/erreurs-distribution-whatsapp-message-non-envoye).

## Format de réponse d'erreur

Toutes les erreurs suivent une structure JSON cohérente :

```json
{
  "error": {
    "code": "NOT_FOUND",
    "message": "Activity not found"
  }
}
```

## Codes d'erreur

| Statut | Code | Description |
| --- | --- | --- |
| `400` | `VALIDATION_ERROR` | Corps de requête ou paramètres de requête invalides |
| `401` | `UNAUTHORIZED` | Clé API manquante ou invalide |
| `404` | `NOT_FOUND` | Ressource introuvable ou n'appartenant pas à votre agent |
| `405` | `METHOD_NOT_ALLOWED` | Méthode HTTP non prise en charge par cet endpoint |
| `409` | `CONFLICT` | La ressource existe déjà (p. ex. un contact avec ce canal) |
| `422` | `SEND_FAILED` | Échec de l'envoi du modèle (p. ex. pas de fenêtre de messagerie) |
| `429` | `RATE_LIMITED` | Limite de débit dépassée (100 requêtes/minute) |
| `500` | `INTERNAL_ERROR` | Erreur serveur inattendue |

## En-têtes de limite de débit

Chaque réponse inclut les informations de limite de débit dans ses en-têtes :

| En-tête | Description |
| --- | --- |
| `X-RateLimit-Remaining` | Requêtes restantes dans la fenêtre en cours |
| `X-RateLimit-Reset` | Horodatage (ms) de réinitialisation de la fenêtre |

## Gestion des erreurs

Bonnes pratiques pour gérer les erreurs d'API :

- Vérifiez toujours le code de statut HTTP avant d'analyser le corps de la réponse
- Mettez en place un backoff exponentiel pour les erreurs 429 (limite de débit)
- Journalisez les codes et messages d'erreur pour le débogage
- Ne retentez pas les erreurs 400 ou 401 : corrigez d'abord la requête
