Retrieve a product
get
/api/products/{id} Retrieves a Product resource.
Returns a single product by id. Pass expand=variants to embed variants, and resolveContext[*] to populate resolvedPrice on each embedded variant for the chosen channel, country and timestamp.
Headers
| Name | Type | Required | Description |
|---|---|---|---|
Flowkiwi-Locale | string | - | Specifies the locale for properties that support localization. If not provided, the default locale will be used. |
Path parameters
| Name | Type | Required | Description |
|---|---|---|---|
id | string | required | Product identifier |
Query parameters
| Name | Type | Required | Description |
|---|---|---|---|
resolveContext[channel] | string | - | Channel IRI used to resolve the variant price. Required together with resolveContext[country]. |
resolveContext[country] | string | - | Country IRI used to resolve the variant price. Required together with resolveContext[channel]. |
resolveContext[at] | string | - | ISO 8601 UTC timestamp at which the price is resolved. Defaults to the current time when omitted. |
expand | string | - | Comma-separated list of relations to embed as full objects instead of IRI strings. Supported values: variants, options, optionValues, medias, category, collections, channels, metafields, metaobject. Tokens are independent; unknown values are silently ignored. optionValues only has a visible effect when combined with variants. medias and metafields apply to the product and, when combined with variants, to each variant. metaobject only has a visible effect when combined with metafields (it embeds the referenced metaobject on each metafield of type metaobject_reference or list__metaobject_reference). |
properties[] | string[] | - | Allows you to reduce the response to contain only the properties you need. If your desired property is nested, you can address it using nested arrays. Example: properties[]={propertyName}&properties[]={anotherPropertyName}&properties[{nestedPropertyParent}][]={nestedProperty} |
Response
200 - Product resource
| Property | Type | Required | Description |
|---|---|---|---|
@context | string | object | - | |
@id | string | required | |
@type | string | required | |
category | string | Category | null | - | The category to which this product belongs. Serialized as IRI string by default; pass ?expand=category to embed the full CategoryResource. Requires the categories:read scope. Returned null when the scope is missing. |
channels | array | - | A list of Channel, each one representing a channel associated with the product. Serialized as IRI strings by default; pass ?expand=channels to embed full ChannelResource objects. Requires the channels:read scope. Returned empty when the scope is missing. |
collections | array | - | A list of Collection, each one representing a collection associated with the product. Serialized as IRI strings by default; pass ?expand=collections to embed full CollectionResource objects. Requires the collections:read scope. Returned empty when the scope is missing. |
createdAt | string | - | The date and time when the resource was created (ISO 8601 format). |
description | string | null | - | This property supports translations. A description of the product. |
id | string | - | Stable UUID of the product. |
medias | array | - | A list of Media, ordered by position. Only media of type "image" can be associated with a product. Returned as IRI strings by default; pass ?expand=medias to embed full Media objects. Requires the medias:read scope. Returned empty when the scope is missing. |
metafields | array | - | Metafields owned by this product. Serialized as IRI strings by default; pass ?expand=metafields to embed full MetafieldResource objects. Requires the metafields:read scope. Returned empty when the scope is missing. |
options | array | - | A list of Product Option, each one representing an option associated with the product. Serialized as IRI strings by default; pass ?expand=options to embed the full Product Option objects. Requires the products:read scope. Returned empty when the scope is missing. |
status | "/api/statuses/DRAFT" | "/api/statuses/ACTIVE" | "/api/statuses/ARCHIVED" | - | The status of the product. |
tags | string | null | - | A string of comma-separated tags. |
title | string | null | - | This property supports translations. The name of the product. |
updatedAt | string | - | The date and time when the resource was last modified (ISO 8601 format). |
variants | array | - | A list of Variant, each one representing a variant associated with the product. Serialized as IRI strings by default; pass ?expand=variants to embed the full Variant objects (including resolvedPrice, lowestPriceLast30Days, medias, and metafields when composed with ?expand=metafields). Requires the products:read scope. Returned empty when the scope is missing. |
| Property | Type | Required | Description |
|---|---|---|---|
category | string | Category | null | - | The category to which this product belongs. Serialized as IRI string by default; pass ?expand=category to embed the full CategoryResource. Requires the categories:read scope. Returned null when the scope is missing. |
channels | array | - | A list of Channel, each one representing a channel associated with the product. Serialized as IRI strings by default; pass ?expand=channels to embed full ChannelResource objects. Requires the channels:read scope. Returned empty when the scope is missing. |
collections | array | - | A list of Collection, each one representing a collection associated with the product. Serialized as IRI strings by default; pass ?expand=collections to embed full CollectionResource objects. Requires the collections:read scope. Returned empty when the scope is missing. |
createdAt | string | - | The date and time when the resource was created (ISO 8601 format). |
description | string | null | - | This property supports translations. A description of the product. |
id | string | - | Stable UUID of the product. |
medias | array | - | A list of Media, ordered by position. Only media of type "image" can be associated with a product. Returned as IRI strings by default; pass ?expand=medias to embed full Media objects. Requires the medias:read scope. Returned empty when the scope is missing. |
metafields | array | - | Metafields owned by this product. Serialized as IRI strings by default; pass ?expand=metafields to embed full MetafieldResource objects. Requires the metafields:read scope. Returned empty when the scope is missing. |
options | array | - | A list of Product Option, each one representing an option associated with the product. Serialized as IRI strings by default; pass ?expand=options to embed the full Product Option objects. Requires the products:read scope. Returned empty when the scope is missing. |
status | "/api/statuses/DRAFT" | "/api/statuses/ACTIVE" | "/api/statuses/ARCHIVED" | - | The status of the product. |
tags | string | null | - | A string of comma-separated tags. |
title | string | null | - | This property supports translations. The name of the product. |
updatedAt | string | - | The date and time when the resource was last modified (ISO 8601 format). |
variants | array | - | A list of Variant, each one representing a variant associated with the product. Serialized as IRI strings by default; pass ?expand=variants to embed the full Variant objects (including resolvedPrice, lowestPriceLast30Days, medias, and metafields when composed with ?expand=metafields). Requires the products:read scope. Returned empty when the scope is missing. |
Errors
403 - Access denied. The caller is missing one or more permissions required for this operation.
Content-Type: application/problem+json
| Property | Type | Required | Description |
|---|---|---|---|
@context | string | object | - | |
@id | string | required | |
@type | string | required | |
detail | string | - | |
missingPermissions | string[] | - | Permissions that the caller is missing for this operation. Present only when the 403 is caused by a denied permission. |
status | integer | - | |
title | string | - | |
type | string | - |
404 - Not found
| Property | Type | Required | Description |
|---|---|---|---|
@context | string | object | - | |
@id | string | required | |
@type | string | required | |
code | string | - | Stable identifier of the error in the error code catalogue (see /api/error-codes). Present on catalogued errors only. |
description | string | null | - | |
detail | string | null | - | A human-readable explanation specific to this occurrence of the problem. |
instance | string | null | - | A URI reference that identifies the specific occurrence of the problem. It may or may not yield further information if dereferenced. |
message | string | - | End-user message localized in the request locale, with this occurrence's values substituted. Present on catalogued errors only. |
slug | string | - | Stable, readable key of the error in the error code catalogue. Present on catalogued errors only. |
status | integer | null | - | |
title | string | null | - | A short, human-readable summary of the problem. For a catalogued error it repeats the slug. |
type | string | - | A URI reference that identifies the problem type. For a catalogued error it is the error code resource, /api/error-codes/{code}. |
| Property | Type | Required | Description |
|---|---|---|---|
code | string | - | Stable identifier of the error in the error code catalogue (see /api/error-codes). Present on catalogued errors only. |
detail | string | null | - | A human-readable explanation specific to this occurrence of the problem. |
instance | string | null | - | A URI reference that identifies the specific occurrence of the problem. It may or may not yield further information if dereferenced. |
message | string | - | End-user message localized in the request locale, with this occurrence's values substituted. Present on catalogued errors only. |
slug | string | - | Stable, readable key of the error in the error code catalogue. Present on catalogued errors only. |
status | integer | null | - | |
title | string | null | - | A short, human-readable summary of the problem. For a catalogued error it repeats the slug. |
type | string | - | A URI reference that identifies the problem type. For a catalogued error it is the error code resource, /api/error-codes/{code}. |