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

# Référence des erreurs

> Toutes les erreurs que l'API publique /v1 de Living Security peut renvoyer, avec leur code machine stable, leur statut HTTP et la marche à suivre pour les résoudre.

Chaque réponse d'erreur `/v1` est `application/problem+json` ([RFC 9457](https://www.rfc-editor.org/rfc/rfc9457)) et comporte un ensemble de champs fixe :

```json theme={null}
{
  "type": "https://docs.livingsecurity.com/developers/v1/errors/resource_not_found",
  "title": "Not Found",
  "status": 404,
  "detail": "No such organization.",
  "code": "resource_not_found",
  "request_id": "req_...",
  "doc_url": "https://docs.livingsecurity.com/developers/v1/errors/resource_not_found",
  "retryable": false
}
```

Appuyez-vous sur `code`, jamais sur `detail` : `code` constitue un contrat machine stable, alors que `detail` est destiné aux utilisateurs et peut évoluer. `param` est présent lorsque l'erreur est imputable à un paramètre précis de la requête. Indiquez `request_id` lorsque vous contactez le support.

## Codes d'erreur

| Code | Statut HTTP | Nouvelle tentative possible |
| - | - | - |
| [`unauthorized`](/fr/developers/v1/errors/unauthorized) | 401 | Non |
| [`credential_inactive`](/fr/developers/v1/errors/credential_inactive) | 401 | Non |
| [`credential_expired`](/fr/developers/v1/errors/credential_expired) | 401 | Non |
| [`credential_revoked`](/fr/developers/v1/errors/credential_revoked) | 401 | Non |
| [`not_entitled`](/fr/developers/v1/errors/not_entitled) | 403 | Non |
| [`insufficient_permission`](/fr/developers/v1/errors/insufficient_permission) | 403 | Non |
| [`permission_denied`](/fr/developers/v1/errors/permission_denied) | 403 | Non |
| [`resource_not_found`](/fr/developers/v1/errors/resource_not_found) | 404 | Non |
| [`invalid_request`](/fr/developers/v1/errors/invalid_request) | 400 ou 409 | Non |
| [`invalid_filter`](/fr/developers/v1/errors/invalid_filter) | 400 | Non |
| [`unsupported_version`](/fr/developers/v1/errors/unsupported_version) | 400 | Non |
| [`idempotency_key_reuse`](/fr/developers/v1/errors/idempotency_key_reuse) | 409 | Selon le conflit |
| [`rate_limited`](/fr/developers/v1/errors/rate_limited) | 429 | Oui |
| [`service_unavailable`](/fr/developers/v1/errors/service_unavailable) | 503 | Oui |
| [`internal_error`](/fr/developers/v1/errors/internal_error) | 500 | Oui |

L'ensemble de codes est fermé : tout nouveau code constitue une modification du contrat public et est annoncé dans le journal des modifications de l'API. Une réponse `retryable: true` signifie que la situation peut se résoudre d'elle-même ; elle ne prouve pas qu'une écriture n'a eu aucun effet. Relancez les lectures avec un nombre de tentatives et un budget de temps limités, en appliquant un backoff exponentiel avec jitter. Respectez `Retry-After` lorsqu'il est présent, y compris sur une réponse `409` ou `429` pour laquelle une nouvelle tentative est possible.

Pour les mutations, suivez le contrat d'idempotence et de reprise documenté de l'opération. Conservez la clé d'origine et la requête d'origine lorsque cela est pris en charge. Ne générez pas de nouvelle clé après un délai d'attente dépassé ou un `5xx` : vous risqueriez de répéter une écriture ayant abouti. Un en-tête `Idempotency-Key` n'offre aucune protection sur une opération qui ne le prend pas en charge.


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