| Time | Status | User Agent | |
|---|---|---|---|
Retrieving recent requests… | |||
Use this API to create Stock Keeping Units (SKUs) for products, services, or events. SKUs represent the sellable or trackable units in your catalogue and can be associated with brands, categories, and custom attributes.
You can create SKUs in bulk, with support for up to 100 SKUs per request. This batch limit is configurable using the CONF_PRODUCT_CREATE_UPDATE_BATCH_SIZE configuration.
What this API supports
- Bulk creation of SKUs in a single request
- Association with existing brands and categories
- Assignment of custom attributes and attribute values
- Optional returnability settings and product metadata
- Organisation unit (OU)–scoped SKU creation when OU support is enabled
Organisation unit (OU) support
You can scope SKUs to a specific organisation unit using ouCode.
To use OU-scoped SKUs, you must:
- Mark the concept as OU-enabled
- Enable OU-level inventory configuration
If ouCode is not provided, the SKU is created at the organisation level by default.
Example request
curl --location 'https://{host}/v2/product/skus' \
--data '[
{
"sku": "Colourcode",
"ean": "test",
"price": "100",
"ouCode": "krishna.ou1",
"description": "test sku",
"longDescription": "detailed description",
"brandCode": "Airpods",
"categoryCode": "Apparel",
"attributes": [
{
"code": "producttype12",
"value": "producttypecode1"
}
],
"returnable": "true",
"returnableDays": "2",
"imageUrl": "http://newimage.com/abc.png"
}
]
'curl --location 'https://{Host}/v2/product/skus' \
--header 'Content-Type: application/json' \
--header 'Authorization: Basic bmVlcmFqa3Jpc2huYTpkY2VhNmU1ODlhM2U0M2JhODdkMTFkMTM2ODI2NmMxOQ==' \
--data '
[
{
"sku": "SHIRT-001",
"description": "Cotton T-Shirt",
"price": 29.99
}
]'curl --location 'https://{Host}/v2/product/skus' \
--header 'Content-Type: application/json' \
--header 'Authorization: Basic bmVlcmFqa3Jpc2huYTpkY2VhNmU1ODlhM2U0M2JhODdkMTFkMTM2ODI2NmMxOQ==' \
--data '[
{
"sku": "SHIRT-BLUE-M",
"ean": "1234567890123",
"price": 29.99,
"description": "Blue Cotton T-Shirt",
"longDescription": "Premium quality cotton t-shirt in blue color",
"imageUrl": "https://example.com/images/shirt-blue-m.jpg",
"returnable": true,
"returnableDays": 30,
"brandCode": "BRANDX",
"categoryCode": "APPAREL",
"colorCode": "BLUE",
"styleCode": "CASUAL",
"sizeCode": "M"
},
{
"sku": "SHIRT-RED-L",
"ean": "1234567890124",
"price": 29.99,
"description": "Red Cotton T-Shirt",
"longDescription": "Premium quality cotton t-shirt in red color",
"imageUrl": "https://example.com/images/shirt-red-l.jpg",
"returnable": true,
"returnableDays": 30,
"brandCode": "BRANDX",
"categoryCode": "APPAREL",
"colorCode": "RED",
"styleCode": "CASUAL",
"sizeCode": "L"
}
]'curl --location 'https://{Host}/v2/product/skus' \
--header 'Content-Type: application/json' \
--header 'Authorization: Basic bmVlcmFqa3Jpc2huYTpkY2VhNmU1ODlhM2U0M2JhODdkMTFkMTM2ODI2NmMxOQ==' \
--data '[
{
"sku": "LAPTOP-001",
"description": "Gaming Laptop",
"price": 1299.99,
"brandCode": "TECHCORP",
"categoryCode": "ELECTRONICS",
"attributes": [
{
"code": "processor",
"value": "Intel i7"
},
{
"code": "ram",
"value": "16GB"
},
{
"code": "storage",
"value": "512GB SSD"
}
]
}
]'curl --location 'https://{Host}/v2/product/skus' \
--header 'Content-Type: application/json' \
--header 'Authorization: Basic bmVlcmFqa3Jpc2huYTpkY2VhNmU1ODlhM2U0M2JhODdkMTFkMTM2ODI2NmMxOQ==' \
--data '[
{
"sku": "STORE-EXCLUSIVE-001",
"description": "Store Exclusive Product",
"price": 49.99,
"ouCode": "STORE_NORTH"
}
]'Prerequisites
- Authentication credentials (Basic or OAuth).
Request Body Parameters
The request body accepts an Array of SKU objects.
| Field | Type | Required | Description |
|---|---|---|---|
sku | string | Yes | Defines the unique identifier for the product article, for example, "TSHIRT-RED-001". This field cannot be changed once created, and is limited to 100 characters. |
ean | string | Optional | Specifies the European Article Number, acting as a unique barcode identifier. It must be unique across the request, and cannot be updated via PUT requests. |
price | string | Optional | Indicates the monetary value assigned to the SKU. Must be a positive value or zero; if not provided, the system defaults it to 0 and issues a warning in the response body. |
description | string | Optional | Defines a short text summary for the item like "Men's Cotton Polo Shirt".There is no strict character limit. |
longDescription | string | Optional | Specifies more details about the SKU, such as materials or care instructions. There is no strict character limit. |
ouCode | string | Optional | Specifies the concept code of the organisation unit. This is applicable only if OU support for product inventory is enabled. For more information, see OU support for product inventory. |
brandCode | string | Yes | Defines the identifier for the brand associated with the product. The brand must be pre-created via the Add product brand API; the SKU creation will fail if the code is invalid or non-existent. |
categoryCode | string | Optional | Specifies the classification code for hierarchical product grouping (e.g., "Audio"). The category must already exist in the system. You can retrive the existing categories of products via Get product categories API |
imageUrl | string | Optional | Indicates the web address for the product's image asset. Must be a valid URL supporting formats like JPG, JPEG, and PNG. |
returnable | enum | Optional | Defines whether the product is eligible for return. |
returnableDays | string | Optional | Specifies the duration of the return window. Defaults to -1. |
attributes | array | Optional | Indicates an array of custom key-value pairs, the attribute, and attribute values must be pre-created via the add Add product attribute API. |
.code | string | Conditional | Defines the unique identifier for a specific custom attribute. Required if the attributes array is used. |
.value | string | Conditional | Specifies the actual data assigned to the attribute code. |
API Quick Reference
{{https://{host}/v2/product/skus}}
└─ {{Request body}} (Batch Array)
├─ {{sku}} (string)
├─ {{ean}} (string)
├─ {{price}} (string)
├─ {{description}} (string)
├─ {{longDescription}} (string)
├─ {{ouCode}} (string)
├─ {{brandCode}} (string)
├─ {{categoryCode}} (string)
├─ {{imageUrl}} (string)
├─ {{returnable}} (boolean)
├─ {{returnableDays}} (string)
├─ {{attributes}} []
│ ├─ {{attributeCode}} (string)
│ └─ {{attributeValue}} (string)
└─ {{Response body}}
├─ {{created}} []
│ ├─ {{responseId}} (integer)
│ ├─ {{responseCode}} (string)
│ ├─ {{responseOuCode}} (string)
│ └─ {{responseOuId}} (integer)
├─ {{summary}}
│ ├─ {{totalRequested}} (integer)
│ ├─ {{successCount}} (integer)
│ └─ {{failureCount}} (integer)
├─ {{warnings}} []
└─ {{errors}} []Example response
{
"created": [
{
"ouCode": "krishna.ou1",
"id": 32510109,
"ouId": 50025951,
"code": "1212jo12212"
}
],
"summary": {
"totalRequested": 1,
"successCount": 1,
"failureCount": 0
},
"warnings": [],
"errors": []
}Response parameters
| Field | Type | Required | Description |
|---|---|---|---|
sku | string | Yes | Defines the unique identifier for the product article (e.g., "TSHIRT-RED-001"). This field is mandatory and cannot be changed once created, and limited to 50 characters. |
ean | string | Yes | Specifies the European Article Number, acting as a unique barcode identifier. It is mandatory, must be unique across the request, and cannot be updated via PUT requests. |
price | string | Optional | Indicates the monetary value or cost assigned to the SKU. Must be a positive value or zero; if not provided, the system defaults it to 0 and issues a warning. |
description | string | Optional | Defines a short text summary for the item (e.g., "Men's Cotton Polo Shirt"). This is an optional field typically limited to 100 characters. |
longDescription | string | Optional | Specifies comprehensive details about the SKU, such as materials or care instructions. There is no strict character limit. |
ouCode | string | Optional | Specifies the concept code of the organisation unit. This is applicable only if OU support for product inventory is enabled. |
brandCode | string | Optional | Defines the identifier for the brand associated with the product. The brand must be pre-created via Add product API; the SKU creation will fail if the code is invalid or non-existent. |
categoryCode | string | Optional | Specifies the classification code for hierarchical product grouping (e.g., "Electronics > Audio"). The category must already exist in the system. |
imageUrl | string | Optional | Indicates the web address for the product's image asset. Must be a valid URL supporting formats like JPG, JPEG, and PNG (EXE or PDF are rejected). |
returnable | string | Optional | Defines whether the product is eligible for return according to company policy. Defaults to the standard organizational policy if not explicitly passed. |
returnableDays | string | Optional | Specifies the duration of the window during which a customer can return the item. Defaults to -1 (returnable any day). Cannot be any value less than -1. |
attributes | array | Optional | Indicates an array of custom key-value pairs used for additional product specifications. Attributes must be already created via Add attribute API. |
.code | string | Conditional | Defines the unique identifier for a specific custom attribute. Required if the attributes array is used. Max 50 characters. |
.value | string | Conditional | Specifies the actual data assigned to the attribute code. Required if attributes are used; must be a valid, pre-existing value associated with that attribute code. |
Error codes
| Code | Description |
|---|---|
| 10001 | Description: The provided ouCode is invalid or does not exist. Verify the Organization Unit (OU) code in your settings. Ensure you are passing the correct code for the specific store or warehouse. |
| 10002 | Description: OU level product filtering is disabled for your organization, but an ouCode was provided. Remove the ouCode parameter or contact your administrator. |
| 10003 | Description: Duplicate entity found in the request for the same OU. Remove duplicate entries of the same item from your JSON request body before hitting the API. |
| 10101 | Description: At least one SKU must be present in the request. Include a valid SKU object in the request body. |
| 10102 | Description: Request exceeds the limit of 100 SKUs. Reduce the batch size to 100 or fewer. |
| 10103 | Description: SKU code cannot be empty. Provide a valid string for the sku field. |
| 10104 | Description: SKU already exists in the database. Use a unique SKU code for new items, or use the Update API if you intend to modify the existing SKU. |
| 10106 | Description: SKU code exceeds the maximum length of 100 characters. Shorten the SKU code to 100 characters or fewer. Use a concise naming convention for your inventory. |
| 10107 | Description: EAN already exists in the database. Ensure the European Article Number (EAN) is unique across your catalog. Check if the product has already been registered. |
| 10109 | Description: EAN code exceeds the maximum length of 100 characters. Validate the EAN format. Standard EANs are 8 or 13 digits; ensure no extra metadata is being appended to the string. |
| 10110 | Description: Price must be a positive value. Ensure the price field contains a value greater than 0. Check for negative signs or "0" values in your source data. |
| 10112 | Description: Fields colorPalletteId, styleCode, sizeCode, and baseSkuCode are not supported. Remove these deprecated or unsupported fields from your request payload to comply with the current API schema. |
| 10113 | Description: Too many custom attributes specified for this SKU. Reduce the number of attributes to within the allowed limit. |
| 10115 | Description: Invalid image URL provided. Ensure the imageUrl is a valid URL pointing to a supported format such as JPG, JPEG, or PNG. |
| 10116 | Description: Image URL exceeds the maximum length. Shorten the URL and try again. |
| 10120 | Description: Attribute with the specified code not found. Verify that the custom attribute code exists in the system configuration before associating it with a product. |
| 10121 | Description: Attribute value with the specified code not found. Verify the attribute value exists before associating it with a product. |
| 10122 | Description: Category with the specified code not found. Check the category hierarchy in the master data. Ensure the categoryCode passed in the request is already created and active. |
| 10127 | Description: Attribute value is required for the attribute. Provide a value for the value field in the attributes array. |
| 10125 | Description: Brand with the specified code not found. Ensure the brandCode exists in the brand master list. If it is a new brand, create it first via the Brand API or Dashboard. |
Warning codes
| Code | Description |
|---|---|
| 10111 | Description: Price not provided, defaulting to 0. If the item should have a price, update the request to include a valid numeric value; otherwise, it will remain listed as free (0). |
| 10117 | Description: Returnable days value less than -1 was provided; set to -1. Ensure the returnableDays field is either a positive integer or -1 (signifying no return window limit). Values lower than -1 are invalid. |
**Note: **
When you provide reference codes (brandCode, categoryCode, colorCode, etc.) that don't exist in the system, the API returns warnings but still creates the SKU. The SKU will be created without those associations. This allows for flexible SKU creation workflows where referenced entities might not be set up yet.
200Successful operation
