Products
Products are the central element of the system. Product entities contain attribute data, classifications in categories and variants. The data model for products are described by product structures.
By default, ids for archived products are not returned
Include archived products
false
GET /v1/products/ids HTTP/1.1
Host:
Authorization: YOUR_API_KEY
Accept: */*
OK
[
1
]
Id of product to return
GET /v1/products/{id} HTTP/1.1
Host:
Authorization: YOUR_API_KEY
Accept: */*
OK
{
"Id": 1,
"Name": {
"ANY_ADDITIONAL_PROPERTY": "text"
},
"Created": "2025-06-27T08:04:15.171Z",
"CreatedBy": "text",
"LastModified": "2025-06-27T08:04:15.171Z",
"LastModifiedBy": "text",
"VariationDefinitionUid": "123e4567-e89b-12d3-a456-426614174000",
"IsArchived": true,
"ArchiveReason": "123e4567-e89b-12d3-a456-426614174000",
"ProductStructureUid": "123e4567-e89b-12d3-a456-426614174000",
"WorkflowStateUid": "123e4567-e89b-12d3-a456-426614174000",
"BusinessUnits": [
{
"AccessPolicy": "text",
"BusinessUnitUid": "123e4567-e89b-12d3-a456-426614174000"
}
],
"Classifications": [
{
"CategoryId": 1,
"IsPrimary": true,
"OwnerReference": "text",
"SortOrder": 1,
"IsMasterCatalogue": true,
"CatalogueUid": "123e4567-e89b-12d3-a456-426614174000",
"IsDynamicCategory": true
}
]
}
Id of product
Update model containing the updates to make on a product. Note that properties with null values will be ignored and will not cause an update. This means you should only set properties that shall be updated on the product
Product structure to set on product
Variation definition to set on product
Indicate whether the product shall be archived or un-archived
Reference to the archive reason when archiving product (if IsArchived is true)
Workflow state to set on the product
PATCH /v1/products/{id} HTTP/1.1
Host:
Authorization: YOUR_API_KEY
Content-Type: application/json-patch+json
Accept: */*
Content-Length: 576
{
"ProductStructureUid": "123e4567-e89b-12d3-a456-426614174000",
"VariationDefinitionUid": "123e4567-e89b-12d3-a456-426614174000",
"IsArchived": true,
"ArchiveReason": "123e4567-e89b-12d3-a456-426614174000",
"ClassificationsUpdate": {
"Classifications": [
{
"CategoryId": 1,
"IsPrimary": true,
"OwnerReference": "text",
"SortOrder": 1
}
],
"UpdateMethod": 0,
"RemoveWhereOwnerReferenceIs": "text"
},
"WorkflowStateUid": "123e4567-e89b-12d3-a456-426614174000",
"BusinessUnits": [
{
"AccessPolicy": "text",
"BusinessUnitUid": "123e4567-e89b-12d3-a456-426614174000"
}
],
"Values": {
"ANY_ADDITIONAL_PROPERTY": "anything"
}
}
OK
No content
POST /v1/products/batch HTTP/1.1
Host:
Authorization: YOUR_API_KEY
Content-Type: application/json-patch+json
Accept: */*
Content-Length: 3
[
1
]
OK
[
{
"Id": 1,
"Name": {
"ANY_ADDITIONAL_PROPERTY": "text"
},
"Created": "2025-06-27T08:04:15.171Z",
"CreatedBy": "text",
"LastModified": "2025-06-27T08:04:15.171Z",
"LastModifiedBy": "text",
"VariationDefinitionUid": "123e4567-e89b-12d3-a456-426614174000",
"IsArchived": true,
"ArchiveReason": "123e4567-e89b-12d3-a456-426614174000",
"ProductStructureUid": "123e4567-e89b-12d3-a456-426614174000",
"WorkflowStateUid": "123e4567-e89b-12d3-a456-426614174000",
"BusinessUnits": [
{
"AccessPolicy": "text",
"BusinessUnitUid": "123e4567-e89b-12d3-a456-426614174000"
}
],
"Classifications": [
{
"CategoryId": 1,
"IsPrimary": true,
"OwnerReference": "text",
"SortOrder": 1,
"IsMasterCatalogue": true,
"CatalogueUid": "123e4567-e89b-12d3-a456-426614174000",
"IsDynamicCategory": true
}
]
}
]
No more than 5000 products can be requested at a time. If no limit is provided, the default limit of 1000 will be used. By default, archived products are not returned
Include archived products
false
Number of products to return
1000
Only return products with id larger than this value
GET /v1/products HTTP/1.1
Host:
Authorization: YOUR_API_KEY
Accept: */*
OK
{
"Products": [
{
"Id": 1,
"Name": {
"ANY_ADDITIONAL_PROPERTY": "text"
},
"Created": "2025-06-27T08:04:15.171Z",
"CreatedBy": "text",
"LastModified": "2025-06-27T08:04:15.171Z",
"LastModifiedBy": "text",
"VariationDefinitionUid": "123e4567-e89b-12d3-a456-426614174000",
"IsArchived": true,
"ArchiveReason": "123e4567-e89b-12d3-a456-426614174000",
"ProductStructureUid": "123e4567-e89b-12d3-a456-426614174000",
"WorkflowStateUid": "123e4567-e89b-12d3-a456-426614174000",
"BusinessUnits": [
{
"AccessPolicy": "text",
"BusinessUnitUid": "123e4567-e89b-12d3-a456-426614174000"
}
],
"Classifications": [
{
"CategoryId": 1,
"IsPrimary": true,
"OwnerReference": "text",
"SortOrder": 1,
"IsMasterCatalogue": true,
"CatalogueUid": "123e4567-e89b-12d3-a456-426614174000",
"IsDynamicCategory": true
}
]
}
],
"Total": 1,
"Remaining": 1,
"LastId": 1
}
A maximum of 5000 products can be created in one request
Model used to create a new product
Product structure to use for product
Variation definition to use for product
Workflow state to set on the product
POST /v1/products HTTP/1.1
Host:
Authorization: YOUR_API_KEY
Content-Type: application/json-patch+json
Accept: */*
Content-Length: 425
[
{
"ProductStructureUid": "123e4567-e89b-12d3-a456-426614174000",
"VariationDefinitionUid": "123e4567-e89b-12d3-a456-426614174000",
"Classifications": [
{
"CategoryId": 1,
"IsPrimary": true,
"OwnerReference": "text",
"SortOrder": 1
}
],
"WorkflowStateUid": "123e4567-e89b-12d3-a456-426614174000",
"BusinessUnits": [
{
"AccessPolicy": "text",
"BusinessUnitUid": "123e4567-e89b-12d3-a456-426614174000"
}
],
"Values": {
"ANY_ADDITIONAL_PROPERTY": "anything"
}
}
]
OK
[
1
]
Update model for a product
Id of product to update
PATCH /v1/products HTTP/1.1
Host:
Authorization: YOUR_API_KEY
Content-Type: application/json-patch+json
Accept: */*
Content-Length: 608
[
{
"ProductId": 1,
"UpdateModel": {
"ProductStructureUid": "123e4567-e89b-12d3-a456-426614174000",
"VariationDefinitionUid": "123e4567-e89b-12d3-a456-426614174000",
"IsArchived": true,
"ArchiveReason": "123e4567-e89b-12d3-a456-426614174000",
"ClassificationsUpdate": {
"Classifications": [
{
"CategoryId": 1,
"IsPrimary": true,
"OwnerReference": "text",
"SortOrder": 1
}
],
"UpdateMethod": 0,
"RemoveWhereOwnerReferenceIs": "text"
},
"WorkflowStateUid": "123e4567-e89b-12d3-a456-426614174000",
"BusinessUnits": [
{
"AccessPolicy": "text",
"BusinessUnitUid": "123e4567-e89b-12d3-a456-426614174000"
}
],
"Values": {
"ANY_ADDITIONAL_PROPERTY": "anything"
}
}
}
]
OK
No content
Alias of identifier type
GET /v1/products/identifiers/{identifierAlias} HTTP/1.1
Host:
Authorization: YOUR_API_KEY
Accept: */*
OK
{
"ANY_ADDITIONAL_PROPERTY": 1
}
Alias of identifier type
Identifier value
GET /v1/products/identifiers/{identifierAlias}/{identifier} HTTP/1.1
Host:
Authorization: YOUR_API_KEY
Accept: */*
OK
1
Provide an identifier alias along with an array of identifiers to get the internal entity ids matching those identifiers
The alias of the identifier
Array of identifiers to return internal ids for
POST /v1/products/batch/identifiers HTTP/1.1
Host:
Authorization: YOUR_API_KEY
Content-Type: application/json-patch+json
Accept: */*
Content-Length: 49
{
"IdentifierAlias": "text",
"Identifiers": [
"text"
]
}
OK
{
"ANY_ADDITIONAL_PROPERTY": 1
}
Id of product
Indicate if only uids of referenced to global list values shall be returned instead of the materialized values
false
GET /v1/products/{id}/attributevalues HTTP/1.1
Host:
Authorization: YOUR_API_KEY
Accept: */*
OK
{
"ProductId": 1,
"Values": {
"ANY_ADDITIONAL_PROPERTY": "anything"
}
}
No more than 5000 products can be requested at a time.
Define which categories to fetch data for and what data to fetch
Ids of products to return
Defines which attribute values to return
If IncludeValues is Scopes, define which scopes to return values for here
If IncludeValues is Aliases, define aliases of the attributes to include values for
If IncludeValues is Uids, define uids of the attributes to include values for
Only return values for specific languages
Only return values for specific dimension segments
Indicate if only uids of referenced to global list values shall be returned instead of the materialized values
Get attribute values back in time
POST /v1/products/batch/attributevalues HTTP/1.1
Host:
Authorization: YOUR_API_KEY
Content-Type: application/json-patch+json
Accept: */*
Content-Length: 259
{
"ProductIds": [
1
],
"IncludeValues": 1,
"Scopes": [
"text"
],
"Aliases": [
"text"
],
"Uids": [
"123e4567-e89b-12d3-a456-426614174000"
],
"LimitToCultureCodes": [
"text"
],
"LimitToSegments": [
"text"
],
"GlobalListValueReferencesOnly": true,
"FromTimestamp": "2025-06-27T08:04:15.171Z"
}
OK
[
{
"ProductId": 1,
"Values": {
"ANY_ADDITIONAL_PROPERTY": "anything"
}
}
]
Id of product
GET /v1/products/{id}/classifications HTTP/1.1
Host:
Authorization: YOUR_API_KEY
Accept: */*
OK
[
{
"CategoryId": 1,
"IsPrimary": true,
"OwnerReference": "text",
"SortOrder": 1,
"IsMasterCatalogue": true,
"CatalogueUid": "123e4567-e89b-12d3-a456-426614174000",
"IsDynamicCategory": true
}
]
Id of product
Model for adding or updating a classification of a product
Id of category the product is placed in
Indication whether this classification is the primary classification for the product
A reference to where this classification comes from. If the classification is made in the PIM interface, this will be null. When creating or updating classifications of products through API this can be set to any value. Thus, classifications made from the API can be distinguished from those made directly in the UI
Sort order of the product in this category
POST /v1/products/{id}/classifications HTTP/1.1
Host:
Authorization: YOUR_API_KEY
Content-Type: application/json-patch+json
Accept: */*
Content-Length: 73
[
{
"CategoryId": 1,
"IsPrimary": true,
"OwnerReference": "text",
"SortOrder": 1
}
]
No content
Id of product
DELETE /v1/products/{id}/classifications HTTP/1.1
Host:
Authorization: YOUR_API_KEY
Content-Type: application/json-patch+json
Accept: */*
Content-Length: 3
[
1
]
OK
No content
POST /v1/products/batch/classifications HTTP/1.1
Host:
Authorization: YOUR_API_KEY
Content-Type: application/json-patch+json
Accept: */*
Content-Length: 3
[
1
]
OK
{
"ANY_ADDITIONAL_PROPERTY": [
{
"CategoryId": 1,
"IsPrimary": true,
"OwnerReference": "text",
"SortOrder": 1,
"IsMasterCatalogue": true,
"CatalogueUid": "123e4567-e89b-12d3-a456-426614174000",
"IsDynamicCategory": true
}
]
}
POST /v1/products/classifications HTTP/1.1
Host:
Authorization: YOUR_API_KEY
Content-Type: application/json-patch+json
Accept: */*
Content-Length: 101
{
"ANY_ADDITIONAL_PROPERTY": [
{
"CategoryId": 1,
"IsPrimary": true,
"OwnerReference": "text",
"SortOrder": 1
}
]
}
OK
No content
Model for removing classifications for a product
Id to remove classifications from
Categories to remove product from
DELETE /v1/products/classifications HTTP/1.1
Host:
Authorization: YOUR_API_KEY
Content-Type: application/json-patch+json
Accept: */*
Content-Length: 35
[
{
"ProductId": 1,
"CategoryIds": [
1
]
}
]
OK
No content
Id of product
Return ids of archived variants as well
false
GET /v1/products/{id}/variants HTTP/1.1
Host:
Authorization: YOUR_API_KEY
Accept: */*
OK
[
1
]
Return ids of archived variants as well
false
POST /v1/products/batch/variants HTTP/1.1
Host:
Authorization: YOUR_API_KEY
Content-Type: application/json-patch+json
Accept: */*
Content-Length: 3
[
1
]
OK
{
"ANY_ADDITIONAL_PROPERTY": [
1
]
}
#Available from v.3.11.0
Id of product
Return ids of archived variant groups as well
false
GET /v1/products/{id}/variantgroups HTTP/1.1
Host:
Authorization: YOUR_API_KEY
Accept: */*
OK
[
1
]
#Available from v.3.11.0
Return ids of archived variant groups as well
false
POST /v1/products/batch/variantgroups HTTP/1.1
Host:
Authorization: YOUR_API_KEY
Content-Type: application/json-patch+json
Accept: */*
Content-Length: 3
[
1
]
OK
{
"ANY_ADDITIONAL_PROPERTY": [
1
]
}
#Available from v.3.5.0
Id of product
GET /v1/products/{id}/references HTTP/1.1
Host:
Authorization: YOUR_API_KEY
Accept: */*
OK
{
"ProductId": 1,
"ReferencingCategories": [
{
"EntityId": 1,
"AttributeUid": "123e4567-e89b-12d3-a456-426614174000"
}
],
"ReferencingProducts": [
{
"EntityId": 1,
"AttributeUid": "123e4567-e89b-12d3-a456-426614174000"
}
],
"ReferencingVariantGroups": [
{
"EntityId": 1,
"AttributeUid": "123e4567-e89b-12d3-a456-426614174000"
}
],
"ReferencingVariants": [
{
"EntityId": 1,
"AttributeUid": "123e4567-e89b-12d3-a456-426614174000"
}
],
"ReferencingAssets": [
{
"EntityId": 1,
"AttributeUid": "123e4567-e89b-12d3-a456-426614174000"
}
],
"ReferencingGlobalListValues": [
"123e4567-e89b-12d3-a456-426614174000"
]
}
#Available from v.3.5.0 No more than 5000 values can be requested at a time.
POST /v1/products/batch/references HTTP/1.1
Host:
Authorization: YOUR_API_KEY
Content-Type: application/json-patch+json
Accept: */*
Content-Length: 3
[
1
]
OK
[
{
"ProductId": 1,
"ReferencingCategories": [
{
"EntityId": 1,
"AttributeUid": "123e4567-e89b-12d3-a456-426614174000"
}
],
"ReferencingProducts": [
{
"EntityId": 1,
"AttributeUid": "123e4567-e89b-12d3-a456-426614174000"
}
],
"ReferencingVariantGroups": [
{
"EntityId": 1,
"AttributeUid": "123e4567-e89b-12d3-a456-426614174000"
}
],
"ReferencingVariants": [
{
"EntityId": 1,
"AttributeUid": "123e4567-e89b-12d3-a456-426614174000"
}
],
"ReferencingAssets": [
{
"EntityId": 1,
"AttributeUid": "123e4567-e89b-12d3-a456-426614174000"
}
],
"ReferencingGlobalListValues": [
"123e4567-e89b-12d3-a456-426614174000"
]
}
]
Search model used for searching products or variants in PIM
Include archived items in result
POST /v1/products/search HTTP/1.1
Host:
Authorization: YOUR_API_KEY
Content-Type: application/json-patch+json
Accept: */*
Content-Length: 59
{
"IncludeArchived": true,
"QueryModel": {
"BooleanOperator": 0
}
}
OK
[
1
]
Get paged result of products matching certain criteria. Result mapped with headers and item results
Extended search model used for searching products or variants in PIM with support for paging and sorting
Include archived items in result
POST /v1/products/search/paged HTTP/1.1
Host:
Authorization: YOUR_API_KEY
Content-Type: application/json-patch+json
Accept: */*
Content-Length: 148
{
"Page": 1,
"PageSize": 1,
"FieldUids": [
"text"
],
"SortByFieldUid": "text",
"SortDescending": true,
"IncludeArchived": true,
"QueryModel": {
"BooleanOperator": 0
}
}
OK
{
"TotalHits": 1,
"Page": 1,
"PageSize": 1,
"TotalPages": 1,
"ItemListHeaders": [
{
"FieldUid": "text",
"FieldName": "text",
"FieldType": "text",
"SupportsSearching": true,
"SupportsSorting": true
}
],
"ListItems": [
{
"Id": 1,
"ShownValues": [
"text"
]
}
]
}
#Available from v.3.5.0
Id of product to get insights for
GET /v1/products/{id}/enrichmentinsights HTTP/1.1
Host:
Authorization: YOUR_API_KEY
Accept: */*
OK
[
{
"EnrichmentInsightSetupUid": "123e4567-e89b-12d3-a456-426614174000",
"EntityId": 1,
"Completeness": 1,
"MissingData": [
{
"Type": "text",
"DataReference": "text"
}
],
"Ignored": true
}
]
#Available from v.3.5.0
POST /v1/products/batch/enrichmentinsights HTTP/1.1
Host:
Authorization: YOUR_API_KEY
Content-Type: application/json-patch+json
Accept: */*
Content-Length: 3
[
1
]
OK
[
{
"EnrichmentInsightSetupUid": "123e4567-e89b-12d3-a456-426614174000",
"EntityId": 1,
"Completeness": 1,
"MissingData": [
{
"Type": "text",
"DataReference": "text"
}
],
"Ignored": true
}
]
#Available from v.3.5.0
Uid of enrichment insight to get for batch of products
POST /v1/products/batch/enrichmentinsights/{enrichmentInsightUid} HTTP/1.1
Host:
Authorization: YOUR_API_KEY
Content-Type: application/json-patch+json
Accept: */*
Content-Length: 3
[
1
]
OK
[
{
"EnrichmentInsightSetupUid": "123e4567-e89b-12d3-a456-426614174000",
"EntityId": 1,
"Completeness": 1,
"MissingData": [
{
"Type": "text",
"DataReference": "text"
}
],
"Ignored": true
}
]
#Available from v.3.5.0
Id of product
Uid of enrichment insight to toggle ignore for
Indicate whether to ignore the insight for the given enrichment insight and products
PATCH /v1/products/{id}/enrichmentinsights/{enrichmentInsightSetupUid}/{ignore} HTTP/1.1
Host:
Authorization: YOUR_API_KEY
Accept: */*
OK
No content
#Available from v.3.5.0
Uid of enrichment insight to toggle ignore for
Indicate whether to ignore the insight for the given enrichment insight and products
PATCH /v1/products/batch/enrichmentinsights/{enrichmentInsightSetupUid}/{ignore} HTTP/1.1
Host:
Authorization: YOUR_API_KEY
Content-Type: application/json-patch+json
Accept: */*
Content-Length: 3
[
1
]
OK
No content