---
title: Renderizzare il QR del passaporto
description: "Renderizzare il QR di un passaporto come SVG, PNG o JSON — nel colore del marchio o in un hex esplicito. Codifica l'URI GS1 Digital Link."
canonical: "https://www.tracepass.eu/it/docs/passport-qr"
locale: it
source: "https://www.tracepass.eu/it/docs/passport-qr"
---

# Renderizzare il QR del passaporto

> Renderizzare il QR di un passaporto come SVG, PNG o JSON — nel colore del marchio o in un hex esplicito. Codifica l'URI GS1 Digital Link.

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

Restituisce un codice QR appena renderizzato per il passaporto, che codifica il suo `gs1.digitalLinkUri`. Usatelo quando volete il nostro renderer (quiet zone coerente, correzione d'errore, branding facoltativo) invece di codificare voi l'URI. Il default è `image/svg+xml`; `?format=png` restituisce un PNG e `?format=json` un wrapper `{ result: "<svg>" }` da incorporare.

Per default il QR è nero su sfondo trasparente. Impostate `?useCompanyBranding=true` per usare il colore del marchio, oppure passate `?color=FF6600` (hex a 6 caratteri, senza `#`) per un primo piano esplicito — un `color` esplicito prevale sul branding. `?backgroundColor=FFFFFF` aggiunge uno sfondo pieno (hex a 8 caratteri = RGBA per trasparenza parziale).

Indirizzamento alternativo: `GET /api/v1/passports/by-serial/{serial}/qr` accetta gli stessi parametri di query e il disambiguatore `?gtin=` quando un seriale non è univoco tra i vostri GTIN. Ogni chiamata conta come una lettura di passaporto sul limite giornaliero.

## Parameters

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `Authorization` | header | string | yes | `Bearer <token>` — una chiave API `tp_` (Developer → API Keys; più semplice, per server-to-server) oppure un access token OAuth 2.0 (Developer → OAuth Apps; per app autorizzate dall'utente, scoped e revocabili). La pagina Authentication contiene il flusso OAuth completo e l'elenco degli scopes. |
| `id` | path | ObjectId | yes | ID del passaporto. |
| `format` | query | string | no | `svg` (default), `png` o `json`. |
| `useCompanyBranding` | query | boolean | no | Renderizza il QR nel colore del marchio invece del nero. |
| `color` | query | string (hex, no #) | no | Primo piano hex esplicito a 6 caratteri — prevale sul branding. |
| `backgroundColor` | query | string (hex, no #) | no | Sfondo pieno, hex a 6 o 8 caratteri (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 — Colore non valido

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

### 404 — Non trovato

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

## Related

- [Leggere un passaporto](https://www.tracepass.eu/it/docs/get-passport.md)
- [Creare un passaporto](https://www.tracepass.eu/it/docs/create-passport.md)
