---
title: Pass suspendieren
description: Pass reversibel suspendieren — öffentlicher Viewer gibt HTTP 423 mit strukturiertem Body zurück. Für Rückrufe, Streitfälle, Holds, Qualitätsuntersuchungen.
canonical: "https://www.tracepass.eu/de/docs/suspend-passport"
locale: de
source: "https://www.tracepass.eu/de/docs/suspend-passport"
---

# Pass suspendieren

> Pass reversibel suspendieren — öffentlicher Viewer gibt HTTP 423 mit strukturiertem Body zurück. Für Rückrufe, Streitfälle, Holds, Qualitätsuntersuchungen.

```http
POST /api/v1/passports/{id}/suspend
```

Reversibles Suspendieren. Der öffentliche Viewer schaltet auf die Suspended-Seite (HTTP 423 mit strukturiertem Body); QR-Scans sterben effektiv, ohne dass die URL auf 404 geht. Verwenden Sie das für Rückrufe, Streitigkeiten, interne Holds oder Qualitätsuntersuchungen. Erneut veröffentlichen über das Dashboard nach der Klärung.

Optionaler Body `{ reason: string }` — erscheint im `passport.suspended`-Webhook-Payload und im Audit-Trail des Dashboards (auf 500 Zeichen gekürzt). Leerer Body ist OK; das Suspend feuert den Webhook trotzdem. Zählt als ein v1-Schreibvorgang. Unterstützt Idempotency-Key. Das passende `POST /api/v1/passports/by-serial/{serial}/suspend` ist die By-Serial-Alternative.

## Parameters

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `Authorization` | header | string | yes | `Bearer <token>` — entweder ein `tp_` API-Schlüssel (Developer → API Keys; am einfachsten, für Server-zu-Server) oder ein OAuth-2.0-Access-Token (Developer → OAuth Apps; für nutzerautorisierte Apps, scoped und widerrufbar). Die Authentication-Seite enthält den vollständigen OAuth-Flow und die Scope-Liste. |
| `Idempotency-Key` | header | string | no | UUID v4. |
| `id` | path | ObjectId | yes | Pass-ID. |
| `reason` | body | string (≤ 500) | no | Freitext-Suspendierungsgrund. |

## Examples

```bash
curl -sS -X POST \
  https://app.tracepass.eu/api/v1/passports/6650b2c3d4e5f6a7b8c9d0e1/suspend \
  -H "Authorization: Bearer tp_REDACTED_xxxxxxxxxxxx" \
  -H "Content-Type: application/json" \
  -d '{ "reason": "Quality investigation pending — batch BB-2026-04-12." }'
```

```typescript
await fetch(
  `https://app.tracepass.eu/api/v1/passports/${id}/suspend`,
  {
    method: "POST",
    headers: {
      Authorization: `Bearer ${process.env.TRACEPASS_API_KEY}`,
      "Content-Type": "application/json",
    },
    body: JSON.stringify({ reason: "Quality investigation pending" }),
  },
);
```

```python
import os, requests
res = requests.post(
    f"https://app.tracepass.eu/api/v1/passports/{passport_id}/suspend",
    headers={"Authorization": f"Bearer {os.environ['TRACEPASS_API_KEY']}"},
    json={"reason": "Quality investigation pending"},
)
res.raise_for_status()
```

## Responses

### 200 — Suspendiert

```json
{
  "_id": "6650b2c3d4e5f6a7b8c9d0e1",
  "status": "suspended",
  "suspendedAt": "2026-05-09T16:00:00.000Z",
  "suspensionReason": "Quality investigation pending — batch BB-2026-04-12."
}
```

### 422 — Falscher Status

```json
{ "error": "Cannot suspend passport in status 'archived'" }
```

### 404 — Nicht gefunden

```json
{ "error": "Passport not found" }
```

## Related

- [Pass archivieren (unumkehrbar)](https://www.tracepass.eu/de/docs/archive-passport.md)
- [Pass lesen](https://www.tracepass.eu/de/docs/get-passport.md)
