---
title: Pass-QR rendern
description: Den QR-Code eines Passes als SVG, PNG oder JSON rendern — optional in der Markenfarbe oder einem expliziten Hex. Kodiert die GS1-Digital-Link-URI.
canonical: "https://www.tracepass.eu/de/docs/passport-qr"
locale: de
source: "https://www.tracepass.eu/de/docs/passport-qr"
---

# Pass-QR rendern

> Den QR-Code eines Passes als SVG, PNG oder JSON rendern — optional in der Markenfarbe oder einem expliziten Hex. Kodiert die GS1-Digital-Link-URI.

```http
GET /api/v1/passports/{id}/qr
```

Liefert einen frisch gerenderten QR-Code für den Pass, der dessen `gs1.digitalLinkUri` kodiert. Nutzen Sie dies, wenn Sie unseren Renderer wollen (konsistente Quiet Zone, Fehlerkorrektur, optionales Branding), statt die URI selbst zu kodieren. Standard ist `image/svg+xml`; `?format=png` liefert ein PNG und `?format=json` einen `{ result: "<svg>" }`-Wrapper zum Einbetten.

Standardmäßig ist der QR schwarz auf transparentem Hintergrund. Mit `?useCompanyBranding=true` wird die Markenfarbe verwendet, oder `?color=FF6600` (6-stelliges Hex, ohne `#`) für eine explizite Vordergrundfarbe — ein explizites `color` schlägt das Branding. `?backgroundColor=FFFFFF` ergänzt eine deckende Hintergrundfarbe (8-stelliges Hex = RGBA für Teiltransparenz).

Alternative Adressierung: `GET /api/v1/passports/by-serial/{serial}/qr` nimmt dieselben Query-Params und akzeptiert den `?gtin=`-Disambiguator, wenn eine Seriennummer über Ihre GTINs hinweg nicht eindeutig ist. Jeder Aufruf zählt als ein Pass-Lesevorgang gegen das Tageslimit.

## 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. |
| `id` | path | ObjectId | yes | Pass-ID. |
| `format` | query | string | no | `svg` (Standard), `png` oder `json`. |
| `useCompanyBranding` | query | boolean | no | Den QR in der Markenfarbe statt Schwarz rendern. |
| `color` | query | string (hex, no #) | no | Explizite 6-stellige Hex-Vordergrundfarbe — schlägt das Branding. |
| `backgroundColor` | query | string (hex, no #) | no | Deckende Hintergrundfarbe, 6- oder 8-stelliges Hex (8 = RGBA). |

## Examples

```bash
# SVG (default)
curl -sS https://app.tracepass.eu/api/v1/passports/6650b2c3d4e5f6a7b8c9d0e1/qr \
  -H "Authorization: Bearer tp_REDACTED_xxxxxxxxxxxx" -o passport-qr.svg

# Branded PNG
curl -sS \
  "https://app.tracepass.eu/api/v1/passports/6650b2c3d4e5f6a7b8c9d0e1/qr?format=png&color=FF6600" \
  -H "Authorization: Bearer tp_REDACTED_xxxxxxxxxxxx" -o passport-qr.png
```

```typescript
const url = new URL(
  `https://app.tracepass.eu/api/v1/passports/${id}/qr`,
);
url.searchParams.set("format", "png");
url.searchParams.set("useCompanyBranding", "true");

const res = await fetch(url, {
  headers: { Authorization: `Bearer ${process.env.TRACEPASS_API_KEY}` },
});
const pngBytes = new Uint8Array(await res.arrayBuffer());
```

```python
import os, requests
res = requests.get(
    f"https://app.tracepass.eu/api/v1/passports/{passport_id}/qr",
    headers={"Authorization": f"Bearer {os.environ['TRACEPASS_API_KEY']}"},
    params={"format": "png", "useCompanyBranding": "true"},
)
res.raise_for_status()
open("passport-qr.png", "wb").write(res.content)
```

## Responses

### 200 — SVG

```json
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 29 29">
  <!-- QR modules encoding the GS1 Digital Link URI -->
</svg>
```

### 200 — ?format=json

```json
{ "result": "<svg xmlns=\"http://www.w3.org/2000/svg\" ...></svg>" }
```

### 400 — Ungültige Farbe

```json
{ "error": "Invalid color (expect hex without '#', e.g. FF6600)" }
```

### 404 — Nicht gefunden

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

## Related

- [Einzelnen Pass lesen](https://www.tracepass.eu/de/docs/get-passport.md)
- [Pass anlegen](https://www.tracepass.eu/de/docs/create-passport.md)
