Skip to content

Update Product

The Update Product API enables you to modify existing product details in your Fynd Commerce catalog, including name, description, media, pricing, tax configurations, trader information, and category-specific attributes. Updates are processed asynchronously, allowing you to modify multiple products in a single API request. Each update submission returns a trace_id for monitoring processing status.

Product updates in Fynd Commerce are selective -- you only need to include the fields you want to modify along with the mandatory immutable identifiers. This approach minimizes payload size and reduces the risk of unintended changes to other product attributes.

Immutable Fields

The following fields cannot be changed after product creation and must be included in update requests for identification purposes only:

  • slug - Product URL identifier
  • brand - Brand name
  • item_code - Internal item code
  • template - Product template
  • primary_identifier - Primary SKU identifier for each size
  • identifiers.gtin_value (when primary: true) - Primary GTIN value

Attempting to modify these fields will result in validation errors. To change immutable fields, you must first delete and recreate that product

Request Type: PUT
Scheme: HTTPS
Endpoint: https://{{host}}/v3/catalog/product

Try out Fynd Konnect's Update Product Endpoint


Common Request Headers

HeaderMandatoryDescription
x-access-tokenYesAccess token used for authenticating API requests to Fynd Konnect
Content-TypeYesapplication/json
Common Update Scenarios
  • Update product pricing (MRP and ESP) across size variants
  • Modify product name, description, or media assets
  • Change tax rule ID or HS code for compliance updates
  • Update trader information (manufacturer, importer details)
  • Adjust product dimensions and weight specifications
  • Modify category-specific attributes
  • Update global attributes (tags, return config, custom order settings)
  • Add new size variants to existing products

Request Body Schema

productsArray of objects(ProductUpdateInput)non-emptyrequired

Array of products to update

products[].​item_typestringrequired

Product type

Enum"standard""set""composite""digital"
products[].​namestring[ 1 .. 300 ] charactersrequired

Product name

products[].​departmentsArray of stringsnon-emptyrequired

Department UIDs from Fetch Departments

products[].​categorystringrequired

L3 category name from Fetch Categories

products[].​country_of_originstringrequired

Country where the product is manufactured

products[].​tax_identifierobject(TaxIdentifier)required
products[].​tax_identifier.​tax_rule_idstringrequired

Tax rule ID obtained from Fetch Tax Rule IDs

products[].​hs_codestringrequired

HS/SAC code from Fetch HS Code (4, 6, or 8 digits long)

products[].​sizesArray of objects(ProductSize)non-emptyrequired

Array of product sizes/variants

products[].​sizes[].​primary_identifierstringrequired

Primary identifier for this size variant

products[].​sizes[].​sizestringrequired

Size value of the variant

products[].​sizes[].​pricenumber>= 0required

Original (base) price

products[].​sizes[].​price_effectivenumber>= 0required

Effective/selling price

products[].​sizes[].​item_lengthnumber>= 0

Item length in centimeters

products[].​sizes[].​item_widthnumber>= 0

Item width in centimeters

products[].​sizes[].​item_heightnumber>= 0

Item height in centimeters

products[].​sizes[].​item_weightnumber>= 0

Item weight in grams

products[].​sizes[].​track_inventoryboolean

Whether inventory tracking is enabled for this variant

products[].​sizes[].​identifiersArray of objects(ProductIdentifier)

List of additional identifiers for this size

products[].​traderArray of objects(Trader)

Trader information (manufacturer, importer, etc.)

products[].​attributesobject

Category-specific attributes to update

products[].​descriptionstring<= 5000 characters

Detailed product description

products[].​short_descriptionstring<= 50 characters

Brief summary shown in listings

products[].​mediaArray of objects(MediaItem)

Product images and videos

products[].​net_quantityobject(NetQuantity)
products[].​no_of_boxesinteger>= 0

Number of boxes used for packaging

products[].​highlightsArray of strings

Key product highlights

products[].​product_publishobject(ProductGlobalPublish)
products[].​tagsArray of strings

Product tags or keywords

products[].​return_configobject(ProductReturnConfig)
products[].​custom_orderobject(ProductCustomOrder)
products[].​is_dependentstring

Whether the product depends on another product

Enum"Yes""No"
templatestringrequired

Template slug (immutable at product level)

Update Best Practices
  • Include only changed fields: Only pass fields you want to modify along with mandatory immutable identifiers
  • Maintain JSON structure: Keep the same object structure as product creation
  • Preserve immutable fields: Include slug, brand, item_code, and template with original values for identification
  • Update size variants: Include the complete sizes array if modifying any size-level data
  • Validate before submission: Ensure updated values meet the same validation rules as product creation

Success Response

trace_idstring

Unique identifier for tracking the batch processing status. Use this with the Check Product Status endpoint

totalinteger

Total number of products submitted for update in the request

successinteger

Number of products accepted for processing (passed initial validation)

failedinteger

Number of products rejected due to validation errors

statusstring

High-level status: SUCCESS (all accepted), PARTIAL (some failed), FAILED (all rejected)

errorsobject

Object containing validation error details for failed products (indexed by product position)

stagestring

Processing stage: RUNNING (being processed), COMPLETED (finished), FAILED (stopped with errors)

batch_idstring

Internal batch identifier for the processing job

company_idinteger

Your company identifier in Fynd Commerce

API Call Example

curl -i -X PUT \
  https://fyndkonnect.konnect.uat.fyndx1.de/v3/catalog/product \
  -H 'Content-Type: application/json' \
  -H 'x-access-token: YOUR_API_KEY_HERE' \
  -d '{
    "products": [
      {
        "item_type": "standard",
        "name": "string",
        "departments": [
          "string"
        ],
        "category": "string",
        "country_of_origin": "string",
        "tax_identifier": {
          "tax_rule_id": "string"
        },
        "hs_code": "string",
        "sizes": [
          {
            "primary_identifier": "string",
            "size": "string",
            "price": 0,
            "price_effective": 0,
            "item_length": 0,
            "item_width": 0,
            "item_height": 0,
            "item_weight": 0,
            "track_inventory": true,
            "identifiers": [
              {
                "gtin_value": "string",
                "gtin_type": "SKU",
                "primary": true
              }
            ]
          }
        ],
        "trader": [
          {
            "type": "Manufacturer",
            "name": "string",
            "address": [
              "string"
            ]
          }
        ],
        "attributes": {},
        "description": "string",
        "short_description": "string",
        "media": [
          {
            "url": "http://example.com",
            "type": "image"
          }
        ],
        "net_quantity": {
          "unit": "kg",
          "value": 0
        },
        "no_of_boxes": 0,
        "highlights": [
          "string"
        ],
        "product_publish": {
          "product_online_date": "2019-08-24T14:15:22Z",
          "is_set": true
        },
        "tags": [
          "string"
        ],
        "return_config": {
          "returnable": "Yes",
          "time": 0,
          "unit": "days"
        },
        "custom_order": {
          "is_custom_order": "Yes",
          "manufacturing_time": 0,
          "manufacturing_time_unit": "days"
        },
        "is_dependent": "Yes"
      }
    ],
    "template": "string"
  }'

Example Response

{
    "trace_id": "c7b6b1f4-0494-4d1a-a5dc-b61291274bce",
    "total": 1,
    "success": 1,
    "failed": 0,
    "status": "SUCCESS",
    "errors": {},
    "stage": "RUNNING",
    "batch_id": "68eb84569055e2f2705c9818",
    "company_id": 17551
}

Product Updation Scenarios

Update only pricing across size variants:

Request Body:

  {
    "products": [
      {
        "slug": "aircoolers",
        "brand": "Generic",
        "item_code": "AIRCOOL",
        "sizes": [
          {
            "primary_identifier": "8904578390999",
            "price": 52000,
            "price_effective": 47000
          },
          {
            "primary_identifier": "890457830999",
            "price": 72000,
            "price_effective": 67000
          }
        ]
      }
    ],
    "template": "air-care"
  }

Response:

  {
    "trace_id": "c7b6b1f4-0494-4d1a-a5dc-b61291274bce",
    "total": 1,
    "success": 1,
    "failed": 0,
    "status": "SUCCESS",
    "errors": {},
    "stage": "RUNNING",
    "batch_id": "68eb84569055e2f2705c9818",
    "company_id": 17551
  }

Fields That Can Be Updated

Category Updatable Fields
Basic Informationname, description, short_description, highlights, media
Classificationdepartments, category, country_of_origin
Tax & Compliancetax_identifier.tax_rule_id, hs_code
Pricing & Inventorysizes[].price, sizes[].price_effective, sizes[].track_inventory
Dimensionssizes[].item_length, sizes[].item_width, sizes[].item_height, sizes[].item_weight
Trader Informationtrader[].type, trader[].name, trader[].address
Attributesattributes.* (category-specific attributes)
Global Attributesproduct_publish, tags, return_config, custom_order
Package Detailsnet_quantity, no_of_boxes

Best Practices

  1. Include immutable identifiers: Always include slug, brand, item_code, and template with original values
  2. Update selectively: Only include fields you want to change to minimize payload size and processing time
  3. Validate before updating: Ensure updated values meet the same validation rules as product creation
  4. Update complete size arrays: When modifying any size-level data, include the complete sizes array
  5. Track with trace_id: Save the trace_id and poll the status endpoint until processing completes
  6. Handle validation errors: Check the errors object for details on failed updates and resubmit after fixing
  7. Test updates incrementally: Start with single product updates before scaling to bulk operations
  8. Preserve primary identifiers: Never change primary_identifier or primary gtin_value for existing sizes
  9. Update pricing carefully: Ensure price_effective (ESP) remains ≤ price (MRP)
  10. Document changes: Maintain a change log for tracking product updates over time
Next Steps