---
title: Pässe auflisten
description: Paginierte Pass-Liste. Filter nach productId, Status oder Freitext über GTIN + Seriennummer. Zählt gegen das tägliche Pass-Lese-Budget.
canonical: "https://www.tracepass.eu/de/docs/list-passports"
locale: de
source: "https://www.tracepass.eu/de/docs/list-passports"
---

# Pässe auflisten

> Paginierte Pass-Liste. Filter nach productId, Status oder Freitext über GTIN + Seriennummer. Zählt gegen das tägliche Pass-Lese-Budget.

```http
GET /api/v1/passports
```

Paginierte Liste der Pässe des Workspaces. Filter nach `productId`, `status` oder Freitextsuche über GTIN und Seriennummer. Wird gegen das tägliche Passport-Lese-Budget gezählt (`maxV1PassportsPerDay`); die Antwort-Items verwenden dieselbe Form wie der Einzel-Lese-Endpoint, aber auf die Listing-Felder gekürzt.

## 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. |
| `page` | query | number (default 1) | no | 1-basierte Seitennummer. |
| `limit` | query | number (1-100, default 20) | no | Elemente pro Seite. |
| `productId` | query | ObjectId | no | Filter nach Produkt. |
| `status` | query | enum | no | `draft`, `in_review`, `approved`, `published`, `suspended`, `expired`, `archived`. |
| `search` | query | string | no | Freitext über GTIN + Seriennummer. |

## Examples

```bash
curl -sS \
  "https://app.tracepass.eu/api/v1/passports?status=published&limit=50" \
  -H "Authorization: Bearer tp_REDACTED_xxxxxxxxxxxx"
```

```typescript
const url = new URL("https://app.tracepass.eu/api/v1/passports");
url.searchParams.set("status", "published");
url.searchParams.set("limit", "50");

const res = await fetch(url, {
  headers: { Authorization: `Bearer ${process.env.TRACEPASS_API_KEY}` },
});
const { data } = await res.json();
```

```python
import os, requests
res = requests.get(
    "https://app.tracepass.eu/api/v1/passports",
    headers={"Authorization": f"Bearer {os.environ['TRACEPASS_API_KEY']}"},
    params={"status": "published", "limit": 50},
)
res.raise_for_status()
items = res.json()["data"]["items"]
```

## Responses

### 200 — OK

```json
{
  "data": {
    "items": [
      {
        "_id": "6650b2c3d4e5f6a7b8c9d0e1",
        "productId": "6650a1b2c3d4e5f6a7b8c9d0",
        "gs1": {
          "gtin": "04012345000016",
          "serialNumber": "BP-48V-100-000001",
          "digitalLinkUri": "https://id.tracepass.eu/p/01/04012345000016/21/BP-48V-100-000001"
        },
        "status": "published",
        "completionPercentage": 87,
        "publishedAt": "2026-04-11T10:00:00.000Z"
      }
    ],
    "total": 1,
    "page": 1,
    "limit": 50,
    "totalPages": 1
  }
}
```

## Related

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