---
title: Get a single product
description: Read one product by ID. Returns the full document including default field values, image URLs, template reference, and the running passportCount.
canonical: "https://www.tracepass.eu/docs/get-product"
locale: en
source: "https://www.tracepass.eu/docs/get-product"
---

# Get a single product

> Read one product by ID. Returns the full document including default field values, image URLs, template reference, and the running passportCount.

```http
GET /api/v1/products/{id}
```

Read one product by ID. Returns the full document including default field values, image URLs, template reference, and the running `passportCount`. Counts as one v1 read.

## 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. |
| `id` | path | ObjectId | yes | Product ID. |

## Examples

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

```typescript
const res = await fetch(`https://app.tracepass.eu/api/v1/products/${id}`, {
  headers: { Authorization: `Bearer ${process.env.TRACEPASS_API_KEY}` },
});
if (res.status === 404) return null;
if (!res.ok) throw new Error(`Read failed: ${res.status}`);
const product = await res.json();
```

```python
import os, requests
res = requests.get(
    f"https://app.tracepass.eu/api/v1/products/{product_id}",
    headers={"Authorization": f"Bearer {os.environ['TRACEPASS_API_KEY']}"},
)
if res.status_code == 404:
    raise SystemExit("Not found")
res.raise_for_status()
product = res.json()
```

## Responses

### 200 — OK

```json
{
  "_id": "6650a1b2c3d4e5f6a7b8c9d0",
  "name": "Li-Ion 48V Battery Pack",
  "model": "BP-48V-100",
  "category": "batteries",
  "templateId": "6650a1b2c3d4e5f6a7b8c9d1",
  "defaultFieldValues": {
    "batteryChemistry": "NMC",
    "nominalVoltage": 48
  },
  "imageUrls": [
    "https://cdn.example.com/products/battery-pack-hero.jpg"
  ],
  "passportCount": 12,
  "status": "active",
  "createdAt": "2026-04-10T14:30:00.000Z",
  "updatedAt": "2026-04-12T09:15:00.000Z"
}
```

### 404 — Not found

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

## Related

- [List products](https://www.tracepass.eu/docs/list-products.md)
- [Update a product](https://www.tracepass.eu/docs/update-product.md)
