List products
get
/api/products Retrieves the collection of Product resources.
Returns a paginated collection of products in the current organization, optionally filtered by channel, collection or status, and with pricing resolved against a given channel/country/time when resolveContext is set.
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. |
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). |
page | integer | - | The collection page number |
itemsPerPage | integer | - | The number of items per page |
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} |
id[] | string[] | - | Only the items with one of these ids, each a UUID or the item IRI. |
category | string | - | Filter by the related "category", given as an IRI or as an identifier. |
category[] | string[] | - | Filter by the related "category", given as an IRI or as an identifier. |
channels | string | - | Filter by the related "channels", given as an IRI or as an identifier. |
channels[] | string[] | - | Filter by the related "channels", given as an IRI or as an identifier. |
collections | string | - | Filter by the related "collections", given as an IRI or as an identifier. |
collections[] | string[] | - | Filter by the related "collections", given as an IRI or as an identifier. |
status | string | - | Product status |
status[] | string[] | - | Product status |
createdAt[after] | string | - | Product createdAt |
createdAt[before] | string | - | Product createdAt |
createdAt[strictly_after] | string | - | Product createdAt |
createdAt[strictly_before] | string | - | Product createdAt |
updatedAt[after] | string | - | Product updatedAt |
updatedAt[before] | string | - | Product updatedAt |
updatedAt[strictly_after] | string | - | Product updatedAt |
updatedAt[strictly_before] | string | - | Product updatedAt |
exists[variants] | boolean | - | Product exists[variants] |
exists[category] | boolean | - | Product exists[category] |
title | string | - | Filter on the translated "title" field (case-insensitive partial match, uses the Flowkiwi-Locale header). |
metafield | object | - | Filter owners by metafield value. Each key is a namespace.key pair from a metafield definition of this owner type; pairs are combined with AND. Scalar types match exactly on the stored string; list types match when the stored array contains the requested value. An unknown namespace.key returns an empty collection. Example: ?metafield[specs.material]=leather. |
order[title] | string | - | Order by translated field "title" (uses the Flowkiwi-Locale header) |
order[createdAt] | string | - | Product order[createdAt] |
order[updatedAt] | string | - | Product order[updatedAt] |
Response
200 - Product collection
| Property | Type | Required | Description | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
search | object | - | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Show | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Property | Type | Required | Description | ||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
@type | string | - | |||||||||||||||||||||
mapping | object[] | - | |||||||||||||||||||||
Show | |||||||||||||||||||||||
| Property | Type | Required | Description |
|---|---|---|---|
@type | string | - | |
property | string | null | - | |
required | boolean | - | |
variable | string | - |
templatestringvariableRepresentationstringtotalItemsintegerviewobjectShow view fields
| Property | Type | Required | Description |
|---|---|---|---|
@id | string | - | |
@type | string | - | |
first | string | null | - | |
last | string | null | - | |
next | string | null | - | |
previous | string | null | - |
memberProduct[]Show member fields
| Property | Type | Required | Description | ||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
@context | string | object | - | |||||||||||||||||||||||||
@id | string | required | |||||||||||||||||||||||||
@type | string | required | |||||||||||||||||||||||||
attributes | ProductAttributeValueResource[] | - | Attribute values for the attribute definitions attached to the product's category (or one of its ancestors). Each item references a definition (IRI) plus either an option (for list definitions) or a value (for string definitions). | ||||||||||||||||||||||||
Show | |||||||||||||||||||||||||||
| Property | Type | Required | Description |
|---|---|---|---|
code | string | null | - | The code of the attribute definition (read-only, mirrors definition.code). |
definition | string | null | required | The attribute definition this value is for. Requires the categories:read scope. Returned null when the scope is missing. |
option | string | null | - | The selected option, for attribute definitions of type list. Must belong to definition. Requires the categories:read scope. Returned null when the scope is missing. |
type | "string" | "list" | null | - | The type of the attribute definition (read-only, mirrors definition.type). |
value | string | null | - | This property supports translations. The free-text value, for attribute definitions of type string. |
categorystring | Category | null?expand=category to embed the full CategoryResource. Requires the categories:read scope. Returned null when the scope is missing.channelsarrayChannel, 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.collectionsarrayCollection, 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.createdAtstringdescriptionstring | nullA description of the product.
idstringmediasarrayMedia, 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.metafieldsarray?expand=metafields to embed full MetafieldResource objects. Requires the metafields:read scope. Returned empty when the scope is missing.optionsarrayProduct 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"tagsstring | nulltitlestring | nullThe name of the product.
updatedAtstringvariantsarrayVariant, 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.No properties.
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 | - |