# Fehler

Fehler auf Anwendungsebene werden als **RFC 7807 Problem Details** mit
`Content-Type: application/problem+json` zurückgegeben:

```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-…"
}
```

| Feld | Beschreibung |
| --- | --- |
| `type` | Eine URI, die den Problemtyp identifiziert, oder `about:blank`. |
| `title` | Kurze, menschenlesbare Zusammenfassung. |
| `status` | Der HTTP-Statuscode, im Body wiederholt. |
| `detail` | Menschenlesbare Erklärung für diesen Fall. |
| `instance` | Der Anfragepfad, der den Fehler erzeugt hat. |

Manche Probleme ergänzen weitere Felder. Ein `413` trägt z. B. die konfigurierten Limits:

```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"
}
```

## Häufige Statuscodes

| Status | Wann |
| --- | --- |
| `400 Bad Request` | Fehlerhafte Eingabe — ungültige Webhook-URL, Nicht-PDF-Datei oder fehlerhafter Request-Body. |
| `401 Unauthorized` | Fehlender, ungültiger oder widerrufener API-Key. |
| `403 Forbidden` | Gültiger Key ohne Berechtigung für die Aktion. |
| `404 Not Found` | Unbekannte oder ungültige `caseId`, oder noch kein Ergebnis verfügbar. |
| `409 Conflict` | Die Anfrage kollidiert mit dem aktuellen Zustand. |
| `413 Payload Too Large` | Datei oder Anfrage überschreitet die [Größenlimits](https://docs.accessful.de/de/limits/). |
| `500 Internal Server Error` | Unerwarteter Serverfehler — später erneut versuchen. |

:::note
**401** entsteht am Gateway (fehlender oder ungültiger Key), bevor die Anfrage die Anwendung
erreicht — es trägt **keinen** Problem-Details-Body; verlasse dich auf den Statuscode. **403** und alle anderen Anwendungsfehler nutzen den obigen
Problem-Details-Body.
:::

:::note[Kontingent ist kein `429`]
Ein erschöpftes Vertragskontingent liefert **keinen** HTTP-Fehler. Uploads werden mit `200`
angenommen, danach endet der Job im Status `quota_exceeded`
([Status](https://docs.accessful.de/de/reference/job-status/)). Siehe [Limits](https://docs.accessful.de/de/limits/).
:::