# PDF hochladen

Basis-URL `https://api.accessful.de/api/v1/upload-service`. Jede Anfrage benötigt den `X-API-Key`-Header — siehe [Authentifizierung](https://docs.accessful.de/de/authentication/).

```http
POST /pdf/upload
Content-Type: multipart/form-data
```

| Feld | Typ | Pflicht | Hinweise |
| --- | --- | --- | --- |
| `files` | file | **ja** | Ein oder mehrere PDFs (`application/pdf`). |
| `webhookUrl` | string | nein | Callback-URL für [Webhook](https://docs.accessful.de/de/webhooks/)-Events. |
| `secret` | string | nein | Dein HMAC-Signing-Secret (für Webhooks erforderlich). |
| `folder-name` | string | nein | Optionaler Ordner zum Gruppieren des Cases. |

**`200 OK`**

```json
{
  "successfulUploads": ["7c2f1e4a-9b0d-4a1e-8f3c-2d6b5a9e1c40"],
  "duplicateFiles": [{ "fileName": "dokument.pdf", "fileHash": "ab12cd34…" }],
  "message": "Upload completed successfully. Uploaded 1 files. 1 duplicates found.",
  "callbackUrl": "https://deine-app.example.com/hooks/accessful"
}
```

- `successfulUploads` — eine **`caseId`** pro akzeptierter Datei. Tracking und Download über diese ID.
- `duplicateFiles` — Dateien, die übersprungen wurden, weil derselbe Inhalt mit deinem Key
  bereits hochgeladen wurde.

Fehler: `400` (Nicht-PDF oder ungültige Webhook-URL), `413` ([zu groß](https://docs.accessful.de/de/limits/)).
Das Kontingent wird **nach** dem Upload geprüft — ein erschöpftes Kontingent lässt diesen
Aufruf nicht fehlschlagen; der Job endet stattdessen im Status `quota_exceeded`
([Status](https://docs.accessful.de/de/reference/job-status/)). Siehe [Limits](https://docs.accessful.de/de/limits/).