Update SKUs

Recent Requests
Log in to see full request history
TimeStatusUser Agent
Retrieving recent requests…
LoadingLoading…

Use this API to update one or more existing product SKUs in bulk. You can modify SKU metadata, pricing, brand and category associations, return settings, and custom attribute values without recreating the SKU.

You can update up to 100 SKUs per request. This batch limit is controlled by the CONF_PRODUCT_CREATE_UPDATE_BATCH_SIZE configuration.

Each SKU is identified using its unique sku code. The SKU code is immutable and cannot be changed. The ean field is also immutable and cannot be updated.

What you can update

You can update:

  • price
  • description
  • longDescription
  • imageUrl
  • returnable
  • returnableDays
  • brandCode
  • categoryCode
  • attributes

The API updates only the fields you provide. Omitted fields remain unchanged.

What you cannot update

  • sku (immutable identifier)
  • ean (immutable barcode)
  • ouCode (scope cannot be changed after creation)

To change the SKU identifier or move the SKU to a different OU scope, delete and recreate the SKU.

Validation and behaviour

  • The SKU must already exist; otherwise, the API returns error 10105.
  • If some records succeed and others fail, the response includes summary counts and detailed errors.
  • Invalid brand, category, or attribute references result in validation errors.
  • The batch cannot be empty and cannot exceed 100 records.

Organisation unit (OU) behaviour

  • If ouCode is provided, the API updates the OU-scoped SKU.
  • If ouCode is not provided, the API updates the organisation-level SKU (ouId = -1).
  • OU scope must be enabled before using OU-specific updates.

Example request

curl --location --request PUT 'https://{Host}/v2/product/skus' \
--header 'Content-Type: application/json' \
--header 'Authorization: Basic bmVlcmFqa3Jpc2huYTpkY2VhNmU2U0M2JhODdkMTFkMTM2ODI2NmMxOQ==' \
--data '[
    {
        "sku": "Colour",
        
        "price": "100",
        "ouCode": "krishna.ou1",
        "description": "tesht sku",
        "longDescription": "detailed description",
        "brandCode": "Airpods",
        "categoryCode": "Apparel",
        "attributes": [
            {
                "code": "producttype",
                "value": "plastic"
            }
        ],
        "returnable": "true",
        "returnableDays": "2",
        "imageUrl": "http://newimage.com/abc.png"
    }
]
'
curl --location --request PUT 'https://nightly.intouch.capillarytech.com/v2/product/skus' \
--header 'Content-Type: application/json' \
--header 'Authorization: Basic bmVlcmFqa3Jpc2huYTpkY2VhNmU1ODlhM2U0M2JhODdkMTFkMTM2ODI2NmMxOQ==' \
--data '[
    {
        "sku": "SKU-1",
        "ean": "EAN-1",
        "price": "100",
        "ouCode": "krishna.ou1",
        "description": "tesht sku",
        "longDescription": "detailed description",
        "brandCode": "Airpods",
        
        "attributes": [
            {
                "code": "producttype12",
                "value": "producttypecode1"
            }
        ],
        "returnable": "true",
        "returnableDays": "2",
        "imageUrl": "http://newimage.com/abc.png"
    },
    {
        "sku": "shirt-1",
        "ean": "EAN-1",
        "price": "100",
        "ouCode": "krishna.ou1",
        "description": "tesht sku",
        "longDescription": "detailhed description",
        "brandCode": "Airpods",
        
        "attributes": [
            {
                "code": "producttype12",
                "value": "producttypecode1"
            }
        ],
        "returnable": "true",
        "returnableDays": "2",
        "imageUrl": "http://newimage.com/abc.png"
    }
]
'

Prerequisites

To enable OU support for product entities, you must create a JIRA ticket and enable the configCONF_OU_LEVEL_PRODUCTS_ENABLED. For more information, see Configuring Organisation Unit (OU) support for product entities.

Body parameters

FieldTypeRequiredDescriptionUpdatable
skustringYesDefines the unique identifier for the product article (e.g., "TSHIRT-RED-001"). This field is mandatory and cannot be changed once created, and is limited to 50 characters.No
ouCodestringOptionalSpecifies 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.No
pricedecimalOptionalIndicates 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.Yes
descriptionstringOptionalDefines a short text summary for the item (e.g., "Men's Cotton Polo Shirt"). This is an optional field typically limited to 100 characters.Yes
longDescriptionstringOptionalSpecifies comprehensive details about the SKU, such as materials or care instructions. There is no strict character limit.Yes
imageUrlstringOptionalIndicates 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).Yes
returnablebooleanOptionalDefines whether the product is eligible for return according to company policy. Defaults to the standard organizational policy if not explicitly passed.Yes
returnableDaysintegerOptionalSpecifies the duration of the window during which a customer can return the item. - Defaults to -1 where the customer can return it on any further day. - Cannot be any value less than -1.Yes
brandCodestringOptionalDefines 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.Yes
categoryCodestringOptionalSpecifies the classification code for hierarchical product grouping (e.g., "Electronics > Audio"). The category must already exist in the system.Yes
attributesarrayOptionalIndicates an array of custom key-value pairs used for additional product specifications. attributes must be already created via Add attribute API in the specific org.Yes
..codestringConditionalDefines the unique identifier for a specific custom attribute. - Required if the attributes array is used. - Max 50 characters.Yes
..valuestringConditionalSpecifies the actual data assigned to the attribute code, required if attributes are used, and must be a valid, pre-existing value associated with that attribute code.Yes
eanstringOptionalSpecifies 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.No

API Quick Reference

{{host_v2_product_skus_put}}
   └─ {{RequestBody}} (Batch Array)
      ├─ {{sku}} (string)
      ├─ {{ean}} (string)
      ├─ {{price}} (decimal)
      ├─ {{description}} (string)
      ├─ {{longDescription}} (string)
      ├─ {{ouCode}} (string)
      ├─ {{brandCode}} (string)
      ├─ {{categoryCode}} (string)
      ├─ {{imageUrl}} (string)
      ├─ {{returnable}} (boolean)
      ├─ {{returnableDays}} (integer)
      ├─ {{attributes}} []
      │   ├─ {{attributeCode}} (string)
      │   └─ {{attributeValue}} (string)
      └─ {{ResponseBody}}
          ├─ {{updated}} []
          │   ├─ {{responseId}} (integer)
          │   ├─ {{responseCode}} (string)
          │   ├─ {{responseOuCode}} (string)
          │   └─ {{responseOuId}} (integer)
          ├─ {{summary}}
          │   ├─ {{totalRequested}} (integer)
          │   ├─ {{successCount}} (integer)
          │   └─ {{failureCount}} (integer)
          ├─ {{warnings}} []
          └─ {{errors}} []
              ├─ {{errorCode}} (integer)
              ├─ {{errorMessage}} (string)
              └─ {{errorIdentifiers}} (object)

Example response

{
    "updated": [
        {
            "ouCode": "krishna.ou1",
            "id": 32510109,
            "ouId": 50025951,
            "code": "1212jo12212"
        },
        {
            "ouCode": "krishna.ou1",
            "id": 32510514,
            "ouId": 50025951,
            "code": "shirt"
        }
    ],
    "summary": {
        "totalRequested": 2,
        "successCount": 2,
        "failureCount": 0
    },
    "warnings": [],
    "errors": []
}

Response parameters

FieldTypeDescription
updatedarrayContains the list of successfully updated ProductSKU objects.
..idlongIndicates the unique identifier for the SKU.
..ouIdlongIndicates the Organization unit ID. Returns -1 for organization-level SKUs.
..codestringSpecifies the SKU code.
summaryobjectProvides summary statistics for the bulk operation.
..totalRequestedintegerIndicates the total number of SKUs in the request.
..successCountintegerIndicates the number of SKUs successfully updated.
..failureCountintegerIndicates the number of SKUs that failed validation.
warningsarrayLists warning status codes for non-blocking issues.
errorsarrayLists error status codes for SKUs that failed validation.
..codeintegerIndicates the specific error code.
..messagestringDescribes the error message.
..identifiersobjectSpecifies the SKU identifiers related to the error.

Error codes

CodeDescription
10001Indicates that the provided ouCode is invalid or does not exist.
10002Indicates that OU level product filtering is disabled for your organization, but an ouCode was provided.
10003Indicates that a duplicate SKU code was found within the same request for the same OU.
10101Indicates that the batch cannot be empty.
10102Indicates that the batch size cannot exceed 100 SKUs.
10103Indicates that the SKU code cannot be empty. Provide a valid string for the sku field.
10105Indicates that the SKU with the provided code was not found.
10106Indicates that the SKU code exceeds the maximum length. Shorten the SKU code.
10108Indicates that the EAN cannot be updated as the field is immutable.
10110Indicates that the price is invalid and must be a positive value.
10112Indicates that fields colorPalletteId, styleCode, sizeCode, and baseSkuCode are not supported. Remove these fields from the request.
10113Indicates that the number of custom attributes for the SKU exceeds the maximum allowed limit. Reduce the number of attributes.
10115Indicates that the image URL format is invalid.
10116Indicates that the image URL exceeds the maximum allowed length.
10120Indicates that the attribute with the provided code was not found.
10121Indicates that the attribute value with the provided code was not found.
10122Indicates that the category with the provided code was not found.
10125Indicates that the brand with the provided code was not found.
10127Indicates that an attribute value is required. Provide a value for the value field in the attributes array.

Warning codes

CodeDescription
10117Indicates that a returnableDays value less than -1 was provided; the value has been set to -1. Ensure the returnableDays field is either a positive integer or -1.
Body Params
Headers
string
Response
200

Successful operation

Language
Credentials
Basic
base64
:
URL
LoadingLoading…
Response
Click Try It! to start a request and see the response here!