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

# Erreurs

> Gérez les erreurs de l’API Chataigne avec les statuts HTTP, les types d’erreur stables et les identifiants de requête.

L’API Chataigne utilise les codes de statut HTTP habituels et renvoie un corps JSON structuré lorsqu’une requête échoue.

```json theme={null}
{
  "error": {
    "type": "invalid_request_error",
    "code": "parameter_invalid",
    "message": "currency must be one of CHF, EUR, GBP, BRL, USD, or MXN.",
    "param": "currency",
    "request_id": "req_9c4a1e22"
  }
}
```

## Champs d’erreur

<ResponseField name="error.type" type="string">
  Catégorie générale adaptée au traitement programmatique.
</ResponseField>

<ResponseField name="error.code" type="string">
  Motif stable au sein de la catégorie.
</ResponseField>

<ResponseField name="error.message" type="string">
  Explication lisible destinée aux développeurs. Ne basez pas la logique applicative sur ce texte.
</ResponseField>

<ResponseField name="error.param" type="string | null">
  Champ de la requête associé à l’échec, le cas échéant.
</ResponseField>

<ResponseField name="error.request_id" type="string">
  Identifiant utilisé pour tracer la requête. Il correspond à l’en-tête de réponse `X-Request-Id`.
</ResponseField>

## Codes de statut

| Statut | Type d’erreur                           | Signification                                                               | Réessayer ?                                   |
| ------ | --------------------------------------- | --------------------------------------------------------------------------- | --------------------------------------------- |
| `400`  | `invalid_request_error`                 | La requête ou l’un de ses paramètres est invalide.                          | Non ; corrigez la requête.                    |
| `401`  | `authentication_error`                  | La clé API est absente ou invalide.                                         | Non ; corrigez l’identifiant.                 |
| `403`  | `authorization_error`                   | Le périmètre ou les permissions de la clé n’autorisent pas l’action.        | Non ; utilisez les accès appropriés.          |
| `404`  | `not_found_error`                       | La ressource n’existe pas ou n’est pas disponible pour la clé.              | Non ; vérifiez l’identifiant et le périmètre. |
| `409`  | `conflict_error` ou `idempotency_error` | La requête entre en conflit avec l’état actuel ou les règles d’idempotence. | Selon le code.                                |
| `429`  | `rate_limit_error`                      | La clé a dépassé sa limite de requêtes.                                     | Oui, après `Retry-After`.                     |
| `500`  | `api_error`                             | Chataigne n’a pas pu terminer la requête.                                   | Oui, avec une attente bornée.                 |

## Traitement recommandé

1. Basez-vous sur le statut HTTP, puis sur `error.type` et `error.code` si nécessaire.
2. Affichez les erreurs de validation près de `error.param` lorsqu’il est présent.
3. Réessayez uniquement les échecs transitoires (`429` et certaines réponses `5xx`), avec une attente exponentielle et une part aléatoire.
4. Enregistrez `error.request_id` avec vos propres identifiants d’opération, sans journaliser la clé API ni des données client inutiles.
5. Communiquez l’identifiant de requête lorsque vous contactez l’assistance Chataigne.

```javascript Node.js theme={null}
const response = await fetch('https://server.chataigne.ai/v1/locations', {
  headers: { 'x-api-key': process.env.CHATAIGNE_API_KEY },
});
const body = await response.json();

if (!response.ok) {
  console.error({
    status: response.status,
    type: body.error?.type,
    code: body.error?.code,
    requestId: body.error?.request_id,
  });
  throw new Error(body.error?.message ?? 'Échec de la requête à l’API Chataigne');
}
```

Consultez [Identifiants de requête](/fr/concepts/request-ids), [Limites de débit](/fr/concepts/rate-limits) et [Idempotence](/fr/concepts/idempotency) pour les détails liés aux nouvelles tentatives.
