# Upload by URL

Base URL `https://api.accessful.de/api/v1/upload-service`. Every request needs the `X-API-Key` header — see [Authentication](https://docs.accessful.de/authentication/).

Hand us URLs and we fetch the PDFs ourselves. Downloads run asynchronously.

```http
POST /pdf/upload-by-url-list
Content-Type: application/json
```

```json
{
  "files": [
    { "url": "https://example.com/report.pdf", "filename": "report.pdf" }
  ],
  "callbackUrl": "https://your-app.example.com/hooks/accessful",
  "hmacSignature": "your-webhook-secret"
}
```

- `filename` must match `^[A-Za-z0-9_-]+\.pdf$`.
- `hmacSignature` (the webhook secret) must match `^[A-Za-z0-9_-]{1,64}$`.

**`202 Accepted`**

```json
{
  "accepted": [
    { "uri": "https://example.com/report.pdf", "jobId": "7c2f1e4a-…", "filename": "report.pdf" }
  ],
  "failures": {},
  "callbackResult": null
}
```

Each `jobId` behaves like a `caseId` — poll and download with it.