Get a product
Changed onRetrieve a single product from your connected store's catalog by its store product id.
Includes detail fields not returned by the list endpoint: description, tags, options, image, images, and media, plus per-variant barcode, inventory_policy, position, product_id, taxable, image_id, and updated_at.
Requires a connected Shopify or BigCommerce store — without one, this endpoint returns 404 no_connected_store.
The response shape is the same on both platforms; detail fields BigCommerce does not supply (media, per-variant inventory_policy, position, taxable, image_id, updated_at) are null or empty.
Required scope: products_read
Request
- Base URLhttps://api.privy.com/v1
- AuthHTTP bearer
Path parameters
The store's product id (returned as id in product responses).
Headers
Target a subaccount instead of the main connected account. Pass a subaccount id from get_account's subaccounts list. Only direct subaccounts of the connected account are reachable — omit this for the main account itself.
Response
The product.
Example response
{
"data": {
"id": 7890123456789,
"title": "Classic T-Shirt",
"handle": "classic-t-shirt",
"status": "active",
"product_type": "Shirts",
"vendor": "Acme Apparel",
"url": "https://mystore.com/products/classic-t-shirt",
"image_url": "https://cdn.shopify.com/s/files/1/0001/products/tshirt.jpg",
"price_range": {
"min": "10.00",
"max": "15.00",
"currency_code": "USD"
},
"total_inventory": 42,
"tracks_inventory": true,
"variants_count": 3,
"variants": [
{
"id": 40012345678901,
"title": "Small",
"price": "10.00",
"compare_at_price": "15.00",
"sku": "TSHIRT-S",
"inventory_quantity": 12,
"available": true,
"barcode": "0123456789012",
"inventory_policy": "deny",
"position": 1,
"product_id": 7890123456789,
"taxable": true,
"image_id": 30012345678901,
"updated_at": "2026-06-01T09:00:00Z"
}
],
"created_at": "2026-01-10T09:00:00Z",
"updated_at": "2026-06-01T09:00:00Z",
"description": "A timeless crew-neck tee in heavyweight cotton.",
"tags": [
"cotton",
"summer"
],
"options": [
{
"id": 10012345678901,
"name": "Size",
"position": 1,
"values": [
"Small",
"Large"
]
}
],
"image": {
"id": 30012345678901,
"url": "https://cdn.shopify.com/s/files/1/0001/products/tshirt.jpg",
"alt_text": "Front of the classic t-shirt",
"width": 1600,
"height": 1200
},
"images": [
{
"id": 30012345678901,
"url": "https://cdn.shopify.com/s/files/1/0001/products/tshirt.jpg",
"alt_text": "Front of the classic t-shirt",
"width": 1600,
"height": 1200
}
],
"media": [
{
"id": 20012345678901,
"media_content_type": "image",
"alt": "Front of the classic t-shirt",
"preview_image_url": "https://cdn.shopify.com/s/files/1/0001/products/tshirt.jpg"
}
]
}
}Changes
- warning
added the new
forbiddenenum value to the/response property for the response status - warning
added the new
forbiddenenum value to the/response property for the response status - warning
added the new
forbiddenenum value to the/response property for the response status - warning
added the new
forbiddenenum value to the/response property for the response status - warning
added the new
forbiddenenum value to the/response property for the response status - warning
added the new
segment_builder_requiredenum value to the/response property for the response status - warning
added the new
segment_builder_requiredenum value to the/response property for the response status - warning
added the new
segment_builder_requiredenum value to the/response property for the response status - warning
added the new
segment_builder_requiredenum value to the/response property for the response status - warning
added the new
segment_builder_requiredenum value to the/response property for the response status
- warning
- info
endpoint added
- info