# Erreurs

> Le format des erreurs de l’API Fileverity, les statuts HTTP et le tableau complet des codes d’erreur, avec des indications sur les erreurs à réessayer.

Source : https://fileverity.com/fr/docs/errors

Les erreurs utilisent un statut HTTP standard et un corps JSON avec un `code` stable. Basez votre logique sur `code`, pas sur `message` : les messages peuvent changer.

**Réponse d’erreur**

```json
{
  "error": {
    "type": "invalid_request_error",
    "code": "invalid_parameter",
    "message": "Unrecognized parameter: files.",
    "param": "files",
    "request_id": "req_4mQ9cX2vB7nP1sK8tL3wR6yZ"
  }
}
```

| Champ | Description |
| --- | --- |
| `error.type` | La catégorie. Un type correspond à une famille de statuts HTTP, listée ci-dessous. |
| `error.code` | Un identifiant stable, lisible par machine. |
| `error.message` | Une explication lisible par un humain. Elle peut nommer le champ ou la limite concernés. |
| `error.param` | Le champ de la requête à l’origine de l’erreur, ou `null`. |
| `error.request_id` | L’ID de cette requête, également présent dans l’en-tête de réponse `x-request-id`. Indiquez-le lorsque vous contactez l’assistance à l’adresse [hello@fileverity.com](mailto:hello@fileverity.com). |

## Types d’erreur

| Type | Statut | Signification |
| --- | --- | --- |
| `invalid_request_error` | 400, 413, 415, 422 | La requête est mal formée ou dépasse une limite. Corrigez la requête ; la renvoyer telle quelle échouera de nouveau. |
| `authentication_error` | 401 | La clé d’API est absente ou invalide. |
| `billing_error` | 402 | Le solde ou une limite de dépense bloque la requête. Ajoutez des fonds ou relevez la limite. |
| `not_found_error` | 404 | La ressource n’existe pas, a expiré ou appartient à un autre espace de travail. |
| `conflict_error` | 409 | La requête est en conflit avec l’état actuel. |
| `rate_limit_error` | 429 | Trop de requêtes ou trop de téléversements en attente. Pour `rate_limited`, attendez le nombre de secondes indiqué par `retry-after`. `pending_files_limit` ne comporte pas de `retry-after` : utilisez les fichiers, supprimez-les ou attendez leur expiration. |
| `api_error` | 500, 502, 503 | Un problème de notre côté ou une capacité saturée. Ces requêtes n’ont pas été facturées. Réessayez en espaçant progressivement les tentatives. `service_unavailable` s’accompagne d’un en-tête `retry-after`. |

## Ce qu’il faut réessayer

- **Réessayez** `rate_limited` après le nombre de secondes indiqué par `retry-after`, et `internal_error`, `analysis_failed` et `service_unavailable` avec un backoff exponentiel (pour `service_unavailable`, commencez par le nombre de secondes de `retry-after`). Envoyez la même `Idempotency-Key` afin qu’une nouvelle tentative ne s’exécute pas deux fois. Voir [Idempotence](https://fileverity.com/fr/docs/idempotency.md).
- **Réessayez après avoir attendu** `idempotency_in_progress`.
- **Ne réessayez pas** les autres erreurs `4xx` tant que vous n’avez pas modifié la requête ou l’état du compte.
- Une vérification qui se termine par une erreur n’est pas facturée.

Toujours bloqué ? Écrivez à [hello@fileverity.com](mailto:hello@fileverity.com) ou utilisez la [page de contact](https://fileverity.com/fr/contact), en indiquant l’ID de requête.

## Codes d’erreur

Ce tableau est généré à partir des définitions d’erreur propres à l’API.

| Code | Statut | Type | Message |
| --- | --- | --- | --- |
| `invalid_json` | 400 | `invalid_request_error` | Le corps de la requête doit être un objet JSON. |
| `missing_parameter` | 400 | `invalid_request_error` | Un paramètre obligatoire est manquant. |
| `invalid_parameter` | 400 | `invalid_request_error` | Un paramètre a une valeur invalide. |
| `text_too_short` | 400 | `invalid_request_error` | Le texte est trop court pour être évalué. Envoyez au moins 100 mots. |
| `text_too_long` | 413 | `invalid_request_error` | Le texte dépasse 100 000 caractères. Divisez-le en plusieurs requêtes. |
| `unsupported_media_type` | 415 | `invalid_request_error` | Envoyez le corps de la requête au format JSON avec l’en-tête "Content-Type: application/json". |
| `unsupported_language` | 400 | `invalid_request_error` | Le texte n’est pas rédigé dans une langue prise en charge. Les langues prises en charge sont en, fr, de, es et zh. |
| `file_not_found` | 400 | `invalid_request_error` | Le fichier téléversé est introuvable ou a expiré. Téléversez-le à nouveau. |
| `unsupported_file` | 415 | `invalid_request_error` | Ce format de fichier n’est pas pris en charge par ce modèle. |
| `file_too_large` | 413 | `invalid_request_error` | Le fichier dépasse la taille maximale autorisée pour ce modèle. |
| `too_many_pixels` | 413 | `invalid_request_error` | L’image dépasse 40 mégapixels. |
| `too_many_pages` | 413 | `invalid_request_error` | Le document dépasse 100 pages. |
| `document_too_long` | 413 | `invalid_request_error` | Le document contient trop de texte pour être analysé en une seule requête. |
| `invalid_file` | 422 | `invalid_request_error` | Le fichier est endommagé ou illisible. |
| `password_required` | 422 | `invalid_request_error` | Le document est chiffré. Envoyez son mot de passe pour l’analyser. |
| `wrong_password` | 422 | `invalid_request_error` | Le mot de passe du document est incorrect. |
| `not_examinable` | 422 | `invalid_request_error` | Le document ne contient ni texte, ni photos, ni structure pouvant être examinés. Rien ne vous a été facturé. |
| `missing_api_key` | 401 | `authentication_error` | Aucune clé d’API fournie. Envoyez-la dans l’en-tête "Authorization: Bearer fv_live_...". |
| `invalid_api_key` | 401 | `authentication_error` | La clé d’API est invalide ou a été révoquée. |
| `insufficient_balance` | 402 | `billing_error` | Votre solde est insuffisant pour cette requête. Rechargez votre solde dans la Console. |
| `spend_limit_reached` | 402 | `billing_error` | Cette clé d’API a atteint sa limite de dépense mensuelle. Augmentez la limite dans la Console ou attendez le mois suivant (UTC). |
| `not_found` | 404 | `not_found_error` | La ressource demandée n’existe pas. |
| `model_not_found` | 404 | `not_found_error` | Le modèle n’existe pas ou n’est pas disponible. |
| `not_cancelable` | 409 | `conflict_error` | L’analyse ne peut plus être annulée. |
| `canceled` | 409 | `conflict_error` | L’analyse a été annulée. Rien ne vous a été facturé. |
| `idempotency_mismatch` | 409 | `conflict_error` | Cette Idempotency-Key a déjà été utilisée avec un corps de requête différent. |
| `idempotency_in_progress` | 409 | `conflict_error` | Une requête portant cette Idempotency-Key est encore en cours de traitement. Réessayez dans un instant. |
| `pending_files_limit` | 429 | `rate_limit_error` | Cet espace de travail compte trop de téléversements en attente. Analysez ou supprimez les fichiers téléversés, ou attendez jusqu’à 24 heures qu’ils expirent. |
| `rate_limited` | 429 | `rate_limit_error` | Trop de requêtes. Réessayez après le nombre de secondes indiqué dans l’en-tête Retry-After. |
| `internal_error` | 500 | `api_error` | La requête n’a pas pu aboutir. Réessayez ; si le problème persiste, contactez l’assistance en indiquant l’ID de requête. |
| `analysis_failed` | 502 | `api_error` | L’analyse n’a pas pu aboutir. Rien ne vous a été facturé ; réessayez-la et, si elle échoue de nouveau, contactez l’assistance en indiquant l’ID de requête. |
| `service_unavailable` | 503 | `api_error` | Le service est temporairement indisponible ou saturé. Rien ne vous a été facturé ; réessayez après le nombre de secondes indiqué dans l’en-tête Retry-After. |

## Codes propres à la Console

Ces codes sont renvoyés par les points d’accès propres à la Console, qui fonctionnent avec votre session de connexion. Les requêtes effectuées avec une clé d’API ne les renvoient pas.

| Code | Statut | Type | Message |
| --- | --- | --- | --- |
| `session_required` | 401 | `authentication_error` | Connectez-vous pour continuer. |
| `forbidden` | 403 | `permission_error` | Vous n’avez pas l’autorisation d’effectuer cette action. |
| `invite_invalid` | 404 | `not_found_error` | Cette invitation est invalide, expirée ou déjà utilisée. |
| `invite_mismatch` | 403 | `permission_error` | Cette invitation a été envoyée à une autre adresse courriel. |
| `invite_limit` | 409 | `conflict_error` | Cet espace de travail a déjà atteint le nombre maximal d’invitations en attente. Révoquez-en d’abord une. |
| `last_owner` | 409 | `conflict_error` | Un espace de travail doit garder au moins un propriétaire. Nommez d’abord un autre membre propriétaire. |
| `webhook_limit` | 409 | `conflict_error` | Cet espace de travail a déjà atteint le nombre maximal de points de terminaison webhook. Supprimez-en d’abord un. |
| `key_limit` | 409 | `conflict_error` | Cet espace de travail a déjà atteint le nombre maximal de clés d’API actives. Révoquez-en d’abord une. |

