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",
"brandName": "Sample Brand",
"categoryName": "Sample Category",
"subCategoryName": "Sample Subcategory",
"syncId": "ITEM-1001",
"skus": []
}
]
Item sync request
curl --request PUT \
--url 'https://api.mulltiply.org/v2/items/sync-data' \
--header 'Content-Type: application/json' \
--header 'x-api-key: YOUR_API_KEY' \
--data '[{"itemName":"Sample Item 1004","brandName":"Sample Brand","categoryName":"Sample Category","subCategoryName":"Sample Subcategory","syncId":"ITEM-1001","skus":[]}]'
Item Mapping
| API field | Excel source | Rule |
|---|---|---|
itemName | Article Name | Product display name. |
description | Description | Product description. |
brandName | Brand | Brand name. |
categoryName | Segment / Master Category | Product category. |
subCategoryName | Gender | Product sub-category. |
syncId | No | Unique item identifier. |
itemImageSource | Image source | Google Drive or another source. |
itemImageLink | Public image link | Array of image links when available. |
SKU Mapping
| API field | Excel source | Rule |
|---|---|---|
skuName | Variant Description / SKU | Full SKU name. |
skuNickName | Derived | Item name + item code + colour code. |
sellerSKU | No + Code | Seller SKU. |
tags | TBD | Optional tags. |
productCode | No + Code | Product code. |
barCode | TBD | Optional barcode. |
hsnCode | HSNSACCode | HSN code. |
gst | GSTGroupCode | GST percentage. |
variantType1 | Static | Size. |
variantValue1 | Size | First variant value. |
variantType2 | Static | Colour_Name. |
variantValue2 | Colour_Name | Second variant value. |
syncId | No + Code | Unique SKU identifier. |
skuImageSource | Image source | Google Drive or another source. |
skuImageLink | Public image link | Array of image links when available. |
Up to 10 variant type/value pairs are allowed.
Selling Unit Mapping
| API field | Excel source | Rule |
|---|---|---|
name | BaseUnitofMeasure or static value | Unit name, usually PAIR or CTN. |
multiplier | Alternate_UOM_Per_Quantity | Unit multiplier. |
mrp | MRP | Maximum retail price. |
sellingPrice | Price_Per_Pair | Selling price. |
availableQuantity | TBD | Available stock if provided. |
isBaseUnit | Static | true for PAIR, false for CTN. |
isDefault | Static | true for PAIR. |
includeGST | Static | Always true. |
syncId | No + Code | Required for non-base unit. |
isActive | Static | false for PAIR, true for CTN. |
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",
"categoryName": "Sample Category",
"subCategoryName": "Sample Subcategory",
"itemImageSource": "OTHERS",
"itemImageLink": ["link"],
"syncId": "ITEM-1001",
"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,
"isActive": false
},
{
"name": "CTN",
"multiplier": 32,
"mrp": 1200,
"sellingPrice": 960,
"availableQuantity": 0,
"isBaseUnit": false,
"isDefault": false,
"includeGST": true,
"syncId": "ITEM-1001_SKU_05_CLR",
"isActive": true
}
]
}
]
}
]
Source Data Checklist
| Source column | Used for |
|---|---|
Article Name | itemName |
Description | description |
Brand | brandName |
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.