Item Sync
Use this API to create or update product master data from Excel. The payload is hierarchical: item, then SKU variants, then selling units for each SKU.
At A Glance
PUT
/v2/items/sync-data| Area | Detail |
|---|---|
| Purpose | Sync items, SKUs, and selling units. |
| Content type | application/json |
| Authentication | x-api-key request header |
| Request body | Array of item objects |
| Item grouping key | Excel No |
| SKU grouping key | Unique Size + Colour_Name combination |
Headers
Content-Type: application/json
x-api-key: YOUR_API_KEY
Request Body
The endpoint expects an array. Each item may contain multiple SKUs, and each SKU may contain multiple selling units.
- JSON Body
- cURL
Request body
[
{
"itemName": "Sample Item 1004",
"description": "Sample Item 1004",
"brandName": "Sample Brand",
"subBrandName": "Sample Sub Brand",
"categoryName": "Sample Category",
"subCategoryName": "Sample Subcategory",
"itemImageSource": "OTHERS",
"itemImageLink": ["link"],
"syncId": "ITEM-1001",
"itemLastUpdatedAt": "2026-08-03T06:41:38.654Z",
"attributes": {
"Attribute 1": "Value 1",
"Attribute 2": "Value 2"
},
"skus": []
}
]
Item sync request
curl --request PUT \
--url 'https://api.mulltiply.com/v2/items/sync-data' \
--header 'Content-Type: application/json' \
--header 'x-api-key: YOUR_API_KEY' \
--data '[{"itemName":"Sample Item 1004","description":"Sample Item 1004","brandName":"Sample Brand","subBrandName":"Sample Sub Brand","categoryName":"Sample Category","subCategoryName":"Sample Subcategory","itemImageSource":"OTHERS","itemImageLink":["link"],"syncId":"ITEM-1001","itemLastUpdatedAt":"2026-08-03T06:41:38.654Z","attributes":{"Attribute 1":"Value 1","Attribute 2":"Value 2"},"skus":[]}]'
Item Mapping
| API field | Excel source | Required | Rule |
|---|---|---|---|
itemName | Article Name | Yes | Product display name. |
description | Description | No | Product description. |
brandName | Brand | Yes | Brand name. |
subBrandName | Sub Brand | No | Sub-brand name. |
categoryName | Segment / Master Category | Yes | Product category. |
subCategoryName | Gender | No | Product sub-category. |
syncId | No | Yes | Unique item identifier. |
itemImageSource | Image source | No | Google Drive or another source. |
itemImageLink | Public image link | No | Array of image links when available. |
itemLastUpdatedAt | TBD | Yes | ISO 8601 timestamp of the last item update. |
attributes | TBD | No | Key/value pairs of additional item attributes. |
SKU Mapping
| API field | Excel source | Required | Rule |
|---|---|---|---|
skuName | Variant Description / SKU | Yes | Full SKU name. |
skuNickName | Derived | No | Item name + item code + colour code. |
sellerSKU | No + Code | No | Seller SKU. |
tags | TBD | No | Tags. |
productCode | No + Code | No | Product code. |
barCode | TBD | No | Barcode. |
hsnCode | HSNSACCode | No | HSN code. |
gst | GSTGroupCode | No | GST percentage. |
variantType1 | Static | No | Size. |
variantValue1 | Size | No | First variant value. |
variantType2 | Static | No | Colour_Name. |
variantValue2 | Colour_Name | No | Second variant value. |
syncId | No + Code | Yes | Unique SKU identifier. |
skuImageSource | Image source | No | Google Drive or another source. |
skuImageLink | Public image link | No | Array of image links when available. |
Up to 10 variant type/value pairs are allowed.
Selling Unit Mapping
| API field | Excel source | Required | Rule |
|---|---|---|---|
name | BaseUnitofMeasure or static value | Yes | Unit name, usually PAIR or CTN. |
multiplier | Alternate_UOM_Per_Quantity | Yes | Unit multiplier. |
mrp | MRP | Yes | Maximum retail price. |
sellingPrice | Price_Per_Pair | Yes | Selling price. |
availableQuantity | TBD | No | Available stock if provided. |
isBaseUnit | Static | Yes | true for PAIR, false for CTN. |
isDefault | Static | Yes | true for PAIR. |
includeGST | Static | Yes | Always true. |
syncId | No + Code | Yes | Unique selling unit identifier. |
isActive | Static | Yes | false for PAIR, true for CTN. |
weight | TBD | No | Unit weight. |
weightUnit | TBD | No | Weight unit, for example G. |
length | TBD | No | Unit length. |
breadth | TBD | No | Unit breadth. |
height | TBD | No | Unit height. |
dimensionUnit | TBD | No | Dimension unit, for example CM. |
volume | TBD | No | Unit volume. |
volumeUnit | TBD | No | Volume unit, for example M3. |
inventoryLastUpdatedAt | TBD | Yes | ISO 8601 timestamp of the last inventory update. |
wlbhLastUpdatedAt | TBD | Yes | ISO 8601 timestamp of the last weight and dimension update. |
Processing Rules
- Group all Excel rows with the same
Nointo one item. - For each item, create SKUs from unique
Size+Colour_Namecombinations. - Generate
skuNickNamefrom item name, item code, and colour code. - Create a base
PAIRselling unit for each SKU. - Create an alternate
CTNselling unit when carton data is present. - If CTN MRP is blank, calculate it as base MRP multiplied by the CTN multiplier.
- If CTN selling price is blank, calculate it as base price multiplied by the CTN multiplier.
- Keep
tagsandbarCodeempty or null when no source value exists.
Normalized Final Payload
Normalized final payload
[
{
"itemName": "Sample Item 1004",
"description": "Sample Item 1004",
"brandName": "Sample Brand",
"subBrandName": "Sample Sub Brand",
"categoryName": "Sample Category",
"subCategoryName": "Sample Subcategory",
"itemImageSource": "OTHERS",
"itemImageLink": ["link"],
"syncId": "ITEM-1001",
"itemLastUpdatedAt": "2026-08-03T06:41:38.654Z",
"attributes": {
"Attribute 1": "Value 1",
"Attribute 2": "Value 2"
},
"skus": [
{
"skuName": "Sample Item 1004 Sample Color 05",
"skuNickName": "Sample Item 1004 ITEM-1001 CLR",
"sellerSKU": "ITEM-1001-SKU-05-CLR",
"tags": null,
"productCode": "ITEM-1001-SKU-05-CLR",
"barCode": null,
"hsnCode": "00000000",
"gst": 5,
"variantType1": "Size",
"variantValue1": "05",
"variantType2": "Colour_Name",
"variantValue2": "Sample Color",
"syncId": "ITEM-1001_SKU_05_CLR",
"skuImageSource": "OTHERS",
"skuImageLink": ["link"],
"sellingUnits": [
{
"name": "PAIR",
"multiplier": 1,
"mrp": 100,
"sellingPrice": 80,
"availableQuantity": 0,
"isBaseUnit": true,
"isDefault": true,
"includeGST": true,
"syncId": "ITEM-1001_SKU_05_CLR_PAIR",
"isActive": false,
"weight": 500,
"weightUnit": "G",
"length": 10,
"breadth": 10,
"height": 10,
"dimensionUnit": "CM",
"volume": 0.001,
"volumeUnit": "M3",
"inventoryLastUpdatedAt": "2026-08-03T06:52:00.641Z",
"wlbhLastUpdatedAt": "2026-08-03T06:55:17.156Z"
},
{
"name": "CTN",
"multiplier": 32,
"mrp": 1200,
"sellingPrice": 960,
"availableQuantity": 0,
"isBaseUnit": false,
"isDefault": false,
"includeGST": true,
"syncId": "ITEM-1001_SKU_05_CLR",
"isActive": true,
"weight": 500,
"weightUnit": "G",
"length": 10,
"breadth": 10,
"height": 10,
"dimensionUnit": "CM",
"volume": 0.001,
"volumeUnit": "M3",
"inventoryLastUpdatedAt": "2026-08-03T06:52:00.641Z",
"wlbhLastUpdatedAt": "2026-08-03T06:55:17.156Z"
}
]
}
]
}
]
Source Data Checklist
| Source column | Used for |
|---|---|
Article Name | itemName |
Description | description |
Brand | brandName |
Sub Brand | subBrandName |
Segment / Master Category | categoryName |
Gender | subCategoryName |
No | Item syncId |
Code | SKU and ID generation |
Variant Description | skuName |
Size | variantValue1 |
Colour_Name | variantValue2 |
HSNSACCode | hsnCode |
GSTGroupCode | gst |
MRP | Base unit MRP |
Price_Per_Pair | Base unit selling price |
Alternate_UOM_Per_Quantity | CTN multiplier |
BaseUnitofMeasure | Unit name |
Responses
Success
Success response
{
"error": false,
"status": true,
"statusCode": 200,
"responseTimestamp": "2026-03-19T07:27:45.863Z",
"data": {
"message": "All rows processed successfully"
}
}
Partial Failure
Partial failure response
{
"error": false,
"status": true,
"statusCode": 200,
"responseTimestamp": "2026-03-19T08:20:24.166Z",
"data": {
"message": "Some rows failed",
"processedCount": 0,
"errorCount": 1,
"errors": [
{
"row": 1,
"itemName": "Item 1",
"errors": ["items[1].itemName is required"]
}
]
}
}
Implementation Checklist
- Confirm every item row has
No,Article Name,Brand, and category data. - Confirm each SKU can be uniquely derived from
SizeandColour_Name. - Confirm MRP, price, and multiplier values are numeric before syncing.
- Confirm SKU
syncIdvalues are unique. - Send a JSON array, even when syncing one item.