---
title: "Read one product."
method: GET
path: "/api/v1/products/{id}"
tags: ["Products"]
---

# Read one product.

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

## Request

- Base URL: `https://app.tracepass.eu`
- URL: `https://app.tracepass.eu/api/v1/products/{id}`
- Auth: one of:
  - HTTP bearer
  - OAuth 2 (authorization code, authorization URL `https://app.tracepass.eu/api/oauth/authorize`, token URL `https://app.tracepass.eu/api/oauth/token`, scopes: `passports:read`)

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

## Response `200`

Product.

- Product
  - `_id` string: MongoDB ObjectId hex string (24 chars).
  - `name` string
  - `model` string
  - `category` string
  - `templateId` string: MongoDB ObjectId hex string (24 chars).
  - `defaultFieldValues` object: Seed values for passports created from this product, keyed by template field. Each value is checked against the template: a numeric string for a number field is stored as a number, and any other value the template rejects answers 400 `Invalid default field values` with `details` (in a batch, that item's result is an error).
  - `imageUrls` string[]
  - `passportCount` integer
  - `status` 'active' | 'archived'
  - `sourceLocale` string
  - `createdAt` string, date-time
  - `updatedAt` string, date-time

## Other responses

- `401`: Missing or invalid API key.
- `404`: Resource doesn't exist or is in a different workspace.
- `429`: Daily v1 write or passport-read budget exhausted. Resets at 00:00 UTC.

---

[API](https://skmtc.dev/tracepass/apis/tracepass-api.md) · [All operations](https://skmtc.dev/tracepass/apis/tracepass-api/llms.txt) · [OpenAPI document](https://skmtc.dev/tracepass/apis/tracepass-api/revisions/60ddeb25638b?raw)
