---
title: List category templates
description: List every DPP category template — field count, required-field count, governing regulation, and version. Discover requirements before you build a passport.
canonical: "https://www.tracepass.eu/docs/list-templates"
locale: en
source: "https://www.tracepass.eu/docs/list-templates"
---

# List category templates

> List every DPP category template — field count, required-field count, governing regulation, and version. Discover requirements before you build a passport.

```http
GET /api/v1/templates
```

Lists the DPP category templates — the regulatory field schemas (battery, textile, electronics, …). Each entry gives the category key, its English label, the total and required field counts, the governing regulation, and the template version. Templates are global reference data, not company-scoped.

Use this to discover what a compliant passport in a category needs *before* you create products and passports. To read the full field-by-field schema for one category, call `GET /api/v1/templates/{category}`.

This is a low-frequency discovery call, so it does not count against your daily read cap. Authentication is a `tp_` API key or an OAuth token with the `passports:read` scope.

## Parameters

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `Authorization` | header | string | yes | `Bearer <token>` — either a `tp_` API key (Developer → API Keys; simplest, for server-to-server) or an OAuth 2.0 access token (Developer → OAuth Apps; for user-authorized apps, scoped + revocable). The Authentication page has the full OAuth flow and scope list. |

## Examples

```bash
curl -sS https://app.tracepass.eu/api/v1/templates \
  -H "Authorization: Bearer tp_REDACTED_xxxxxxxxxxxx"
```

```typescript
const res = await fetch("https://app.tracepass.eu/api/v1/templates", {
  headers: { Authorization: `Bearer ${process.env.TRACEPASS_API_KEY}` },
});
const { templates } = await res.json();
```

```python
import os, requests
res = requests.get(
    "https://app.tracepass.eu/api/v1/templates",
    headers={"Authorization": f"Bearer {os.environ['TRACEPASS_API_KEY']}"},
)
res.raise_for_status()
templates = res.json()["templates"]
```

## Responses

### 200 — Success

```json
{
  "templates": [
    {
      "category": "battery",
      "categoryLabel": "Battery",
      "fieldCount": 93,
      "requiredFieldCount": 64,
      "regulation": "EU Battery Regulation 2023/1542",
      "version": 3
    },
    {
      "category": "textile",
      "categoryLabel": "Textile",
      "fieldCount": 61,
      "requiredFieldCount": 38,
      "regulation": "ESPR 2024/1781",
      "version": 2
    }
  ]
}
```

## Related

- [Get a category template](https://www.tracepass.eu/docs/get-template.md)
- [Create a product](https://www.tracepass.eu/docs/create-product.md)
