Get Product
GET/api/v2/products/:product
Get a single product with default relations loaded (brand, primaryImage, primaryCategory, tags, defaultSupplierProduct.supplier, totalInventory).
products:readGrant this scope to your token under Settings → Developer → Personal Access Tokens.
Authentication: Requires Bearer token.
Use the with query parameter to load additional relations.
Load productAttributeValues.attribute.attributeGroup and productAttributeValues.attribute.values to include product_attributes in the response. Each entry carries the stored value plus the attribute's editing metadata:
type— stored data type:string,longtext,numeric,integer,date,datetime,checkboxdisplay_options—has_options,type(SingleorMulti),option_display_type(e.g.swatch),allow_custom_value,is_html,is_link,sort_ordervalidation— optional constraints:limit(max characters),precision(decimal places),min,maxoptions— the configured option list with per-option swatch data (value,swatch_hex,swatch_image_url,sort_order); empty when the attribute is not option-backed or whenproductAttributeValues.attribute.valueswas not requestedgroup_id/group_name— the attribute group the attribute belongs to
Multi-value attributes (display_options.type = Multi) hold every selected value in a single newline-separated string.
Request
Responses
- 200
- 401
- 403
- 404
- 429
OK
Response Headers
Unauthenticated — the bearer token is missing, revoked, expired, or malformed. Never retry automatically; fix the credential. See the Errors guide.
Forbidden — the token lacks a required scope, the endpoint is not available to API tokens, or the user behind the token lacks the permission. A human must adjust the token scopes or user permissions; do not retry.
Not Found
Response Headers
Rate limited — platform limit is 1,000 requests/min; individual tokens may carry lower limits. Honor the Retry-After header before retrying. See the Rate Limits guide.