---
title: "Get product"
method: GET
path: "/product/{id}"
tags: ["Product"]
---

# Get product

`GET /product/{id}`

Get a product by ID from the Terminal shop.

## Path parameters

- `id` string, required — ID of the product to get.

## Response `200`

The requested product.

- object
  - `data` Product, required — Product sold in the Terminal shop.
    - `id` string, required — Unique object identifier. The format and length of IDs may change over time.
    - `name` string, required — Name of the product.
    - `description` string, required — Description of the product.
    - `variants` ProductVariant[], required — List of variants of the product.
      - `id` string, required — Unique object identifier. The format and length of IDs may change over time.
      - `name` string, required — Name of the product variant.
      - `price` integer, required — Price of the product variant in cents (USD).
      - `tags` object — Tags for the product variant.
        - `app` string
        - `market_na` boolean
        - `market_eu` boolean
        - `market_global` boolean
    - `order` integer — Order of the product used when displaying a sorted list of products.
    - `subscription` 'allowed' | 'required' — Whether the product must be or can be subscribed to.
    - `tags` object — Tags for the product.
      - `app` string
      - `color` string
      - `featured` boolean
      - `market_na` boolean
      - `market_eu` boolean
      - `market_global` boolean
    - `timeHidden` string — Timestamp when the product was hidden from public view.

## Other responses

- `404` — Not Found
- `429` — Too Many Requests
- `500` — Internal Server Error

## Changes

- **2025-08-05** `84ef614abb97` — 1 warning, 1 info
  - removed the optional property `data/allOf[#/components/schemas/Product]/variants/items/description` from the response with the `200` status
  - added the optional property `data/allOf[#/components/schemas/Product]/timeHidden` to the response with the `200` status
- **2025-04-24** `007e5b747998` — 1 info
  - added the optional property `data/allOf[#/components/schemas/Product]/variants/items/description` to the response with the `200` status
- **2025-04-24** `128873249a64` — 2 info
  - added the optional property `data/allOf[#/components/schemas/Product]/tags/market_global` to the response with the `200` status
  - added the optional property `data/allOf[#/components/schemas/Product]/variants/items/tags` to the response with the `200` status
- **2025-03-19** `1c6726b12e29` — 3 breaking, 18 info
  - the response's body type/format changed from ``/`` to `object`/`` for status `404`
  - the response's body type/format changed from ``/`` to `object`/`` for status `429`
  - the response's body type/format changed from ``/`` to `object`/`` for status `500`
  - removed `#/components/schemas/ErrorResponse` from the response body `allOf` list for the response status `404`
  - …17 more
- **2025-03-13** `cb50019f2425` — 1 warning
  - removed the optional property `data/allOf[#/components/schemas/Product]/tags/type` from the response with the `200` status

[Full history](https://skmtc.dev/terminaldotshop/apis/terminal-api/changes/product/:id/get.md)

---

[API](https://skmtc.dev/terminaldotshop/apis/terminal-api.md) · [All operations](https://skmtc.dev/terminaldotshop/apis/terminal-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/terminaldotshop/terminal-api/revisions/84ef614abb97/schema)
