# Erreurs

Les erreurs de niveau applicatif sont renvoyées sous forme de **RFC 7807 Problem Details**
avec `Content-Type: application/problem+json` :

```json
{
  "type": "about:blank",
  "title": "Case ID not found",
  "status": 404,
  "detail": "No case exists for the given ID.",
  "instance": "/api/v1/upload-service/job-status/7c2f1e4a-…"
}
```

| Champ | Description |
| --- | --- |
| `type` | Une URI identifiant le type de problème, ou `about:blank`. |
| `title` | Résumé court et lisible par un humain. |
| `status` | Le code de statut HTTP, répété dans le corps. |
| `detail` | Explication lisible par un humain pour cette occurrence. |
| `instance` | Le chemin de la requête qui a produit l’erreur. |

Certains problèmes ajoutent des champs supplémentaires. Un `413` porte par exemple les limites configurées :

```json
{
  "type": "https://accessful.de/problems/upload/payload-too-large",
  "title": "Payload Too Large",
  "status": 413,
  "detail": "Maximum upload size exceeded.",
  "maxFileSize": "200MB",
  "maxRequestSize": "815MB",
  "maxFileCount": "1000",
  "limitExceeded": "per-file"
}
```

## Codes de statut courants

| Statut | Quand |
| --- | --- |
| `400 Bad Request` | Entrée mal formée — URL de webhook non valide, fichier non-PDF ou corps de requête mal formé. |
| `401 Unauthorized` | Clé API manquante, mal formée ou révoquée. |
| `403 Forbidden` | Clé valide sans permission pour l’action. |
| `404 Not Found` | `caseId` inconnu ou mal formé, ou aucun résultat encore disponible. |
| `409 Conflict` | La requête entre en conflit avec l’état actuel. |
| `413 Payload Too Large` | Le fichier ou la requête dépasse les [limites de taille](https://docs.accessful.de/fr/limits/). |
| `500 Internal Server Error` | Erreur serveur inattendue — réessayer plus tard sans risque. |

:::note
**401** est produit au niveau du gateway (clé manquante ou non valide), avant que la requête
n’atteigne l’application — il ne porte pas de corps Problem Details ; fiez-vous au code de statut. **403** et toutes les autres erreurs applicatives utilisent le
corps Problem Details ci-dessus.
:::

:::note[Le quota n’est pas un `429`]
Un quota contractuel épuisé ne renvoie **pas** d’erreur HTTP. Les téléversements sont acceptés
avec `200`, puis la tâche se termine dans le [statut](https://docs.accessful.de/fr/reference/api/) `quota_exceeded`.
Voir [Limites](https://docs.accessful.de/fr/limits/).
:::