---
title: "Get product by id"
method: GET
path: "/v1/products/{product_id}"
tags: ["Products"]
---

# Get product by id

`GET /v1/products/{product_id}`

The Get Product By ID API retrieves detailed information about
    a single product by its unique ID. This API helps in viewing the specific details
    of a product, including its attributes, status, and categorization.

## Path parameters

- `product_id` string, required — The unique identifier for the product you want to retrieve.

## Headers

- `x-organization-id` string, nullable, required — The unique identifier for the organization making the request

## Response `200`

Successfully retrieved product by id

- ProductRead
  - `id` string, required
  - `external_id` string, required
  - `sku` string[], nullable, required
  - `code` string, required
  - `name` string, required
  - `description` string, nullable, required
  - `status` 'APPROVED' | 'PARTIALLY_APPROVED' | 'PENDING' | 'ARCHIVED', required
  - `product_category` string, required — Main category of the product. For example, Physical, Digital, etc. You can retrieve supported categories from [GET /products/categories endpoint](/reference/api/products/get-product-categories)
  - `product_subcategory` string, required — Subcategory of the product. For example, General Clothing, UNKNOWN, etc. You can retrieve supported subcategories from [GET /products/categories endpoint](/reference/api/products/get-product-categories)
  - `tax_exempt` boolean, required
  - `source` 'BIGCOMMERCE' | 'BESTBUY' | 'BUNNY' | 'CHARGEBEE' | 'SHOPIFY' | 'SHOPLINE' | 'ECWID' | 'STRIPE' | 'AMAZON' | 'TIKTOK' | 'CUSTOM' | 'UNKNOWN' | 'IMPORT' | 'ZUORA' | 'APIDECK' | 'QUICKBOOKS' | 'API' | 'APPLE_APP_STORE' | 'GOOGLE_APP_STORE' | 'WALMART' | 'PAYPAL' | 'NETSUITE' | 'XERO' | 'MAXIO' | 'RECURLY' | 'SALESFORCE' | 'ETSY' | 'EBAY' | 'WIX' | 'SQUARESPACE' | 'WOOCOMMERCE' | 'MAGENTO' | 'MACYS' | 'BILLING_PLATFORM' | 'DEEL' | 'RIPPLING' | 'GUSTO' | 'FACEBOOK' | 'OTHER' | 'ORDWAY' | 'INSTAGRAM' | 'PINTEREST' | 'WAYFAIR' | 'WISH' | 'POS' | 'TARGET' | 'NEWEGG' | 'GROUPON' | 'GOOGLE_EXPRESS' | 'NOCNOC' | 'MERCADO_LIBRE' | 'MODALYST' | 'NORDSTROM' | 'FAIRE' | 'SHOPWARE' | 'ZOHO' | 'SAGE-INTACCT' | 'AIRWALLEX' | 'ORB' | 'ZENSKAR' | 'MICROSOFT_DYNAMICS_365' | 'KICKSTARTER' | 'INTERNAL_ERP' | 'RILLET' | 'CAMPFIRE' | 'KILL_BILL' | 'PROVISION' | 'VERTEX_O_SERIES' | 'CHECKOUTCHAMP' | 'DUALENTRY' | 'ODOO' | 'BILL_COM' | 'INTUIT_ENTERPRISE_SUITE' | 'ACUMATICA', required
  - `connection_id` string, nullable, required
  - `classification_failed` boolean, nullable, required
  - `store_name` string, nullable
  - `source_taxonomy_type` string, nullable
  - `source_taxonomy_code` string, nullable
  - `source_taxonomy_id` string, nullable
  - `source_taxonomy_name` string, nullable
  - `source_taxonomy_categories` object[], nullable
  - `source_taxonomy_metadata` object, nullable

## Other responses

- `401` — Unauthenticated request.
- `404` — Resource Not Found
- `422` — Validation error
- `500` — Internal server error

## Changes

- **2026-08-29** `6ba4f4c774c3` — 5 breaking, 15 warning, 9 info
  - added the new required `header` request parameter `x-organization-id`
  - response property `classification_failed` list-of-types was widened by adding types `null` to media type `application/json` of response `200`
  - response property `connection_id` list-of-types was widened by adding types `null` to media type `application/json` of response `200`
  - response property `description` list-of-types was widened by adding types `null` to media type `application/json` of response `200`
  - …25 more
  - …this revision’s changelog is incomplete

[Change history](https://skmtc.dev/trykintsugi/apis/tax-platform/changes/v1/products/:product_id/get.md)

---

[API](https://skmtc.dev/trykintsugi/apis/tax-platform.md) · [All operations](https://skmtc.dev/trykintsugi/apis/tax-platform/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/trykintsugi/tax-platform/revisions/0be736131b5a/schema)
