Skip to content

Create Product

The Create Product API enables you to add new products to your Fynd Commerce catalog with comprehensive details including basic information, size variants, pricing, tax configurations, trader details, and category-specific attributes. Products are created asynchronously through a batch processing system, allowing you to submit up to 100 products in a single API request. Each submission returns a trace_id that you can use to monitor the processing status and validate successful creation.

Products in Fynd Commerce follow a parent-child structure where the product serves as the parent entity containing common attributes (name, brand, category, description), while sizes/variants act as child entities with their own unique identifiers, pricing, and inventory settings. This structure enables efficient management of multi-variant products while maintaining data consistency.

Prerequisites: Fetch Reference Data First

Before creating products, you must retrieve valid values from the following reference APIs:

Using invalid or mismatched values will result in validation errors and product creation failure.

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

Try out Fynd Konnect's Create Product Endpoint


Common Request Headers

HeaderMandatoryDescription
x-access-tokenYesAccess token used for authenticating API requests to Fynd Konnect
Content-TypeYesapplication/json
Key Features
  • Create up to 100 products per API request for bulk catalog uploads
  • Support for single or multiple size variants per product
  • Asynchronous processing with trace_id for status tracking
  • Comprehensive validation against category-specific attribute requirements
  • Flexible trader information for manufacturer, importer, packer, and seller details
  • Optional global attributes for tags, return policies, and custom configurations

Request Body Schema

productsArray of objects(ProductInput)non-emptyrequired

Array of products to create

products[].​item_typestring

Product type

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

Product name

products[].​slugstring^[a-z0-9]+(?:-[a-z0-9]+)*$required

URL-friendly product identifier (unique per brand)

products[].​departmentsArray of stringsnon-emptyrequired

Department UIDs from Fetch Departments

products[].​categorystringrequired

L3 category name from Fetch Categories

products[].​brandstringrequired

Brand name from Fetch Brands

products[].​item_codestringrequired

Unique item code for the product

products[].​net_quantityobject(NetQuantity)
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[].​no_of_boxesinteger>= 0

Number of boxes used for packaging

products[].​hs_codestringrequired

HS/SAC code from Fetch HS Code

products[].​mediaArray of objects(MediaItem)

Product images and videos

products[].​short_descriptionstring<= 50 characters

Brief summary shown in listings

products[].​descriptionstring<= 5000 characters

Detailed product description

products[].​highlightsArray of strings

Key product highlights

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)required

Trader information (manufacturer, importer, etc.)

products[].​trader[].​typestringrequired

Type of trader involved with the product

Enum"Manufacturer""Importer""Packer""Seller"
products[].​trader[].​namestringrequired

Trader or company name

products[].​trader[].​addressArray of stringsrequired

Address lines for the trader

products[].​attributesobjectrequired

Category-specific attributes returned by Fetch Attributes By Product

products[].​attributes.​property name*anyadditional property
products[].​product_publishobject(ProductGlobalPublish)
products[].​tagsArray of strings

Product tags or keywords

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

Whether the product depends on another product

templatestringrequired

Template slug from Fetch Templates

Immutable Fields

Once a product is created, the following fields cannot be changed:

  • slug - Product URL identifier
  • brand and brand_uid - Brand association
  • item_code - Internal item code
  • template - Product template
  • identifiers.gtin_value (when primary: true) - Primary SKU identifier

To modify these fields, you must delete and recreate the product.

Success Response

trace_idstring

Unique identifier to track the asynchronous processing of this request

totalinteger

Total number of products submitted in this request

successinteger

Number of products accepted for processing

failedinteger

Number of products rejected at submission time

statusstring

Overall submission status (e.g., SUCCESS, FAILED, WARNING)

errorsobject

Field-wise error details for failed records (empty object when none)

stagestring

Current processing stage (e.g., RUNNING, COMPLETED)

batch_idstring

Server-assigned batch identifier for this submission (if applicable)

company_idinteger

Fynd company ID associated with the request

API Call Example

curl -i -X POST \
  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",
        "slug": "string",
        "departments": [
          "string"
        ],
        "category": "string",
        "brand": "string",
        "item_code": "string",
        "net_quantity": {
          "unit": "kg",
          "value": 0
        },
        "country_of_origin": "string",
        "tax_identifier": {
          "tax_rule_id": "string"
        },
        "no_of_boxes": 0,
        "hs_code": "string",
        "media": [
          {
            "url": "http://example.com",
            "type": "image"
          }
        ],
        "short_description": "string",
        "description": "string",
        "highlights": [
          "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": {},
        "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": true
      }
    ],
    "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 Creation Scenarios

Create a basic product with one size variant:

  {
    "products": [
      {
        "name": "Air Coolers",
        "slug": "aircoolers",
        "departments": ["5956"],
        "category": "Air Coolers",
        "brand": "Generic",
        "item_code": "AIRCOOL",
        "country_of_origin": "India",
        "tax_identifier": {
          "tax_rule_id": "68cf3ba45315901ee8d46050"
        },
        "hs_code": "125679",
        "sizes": [
          {
            "primary_identifier": "8904578390999",
            "size": "1Ton",
            "price": 50000,
            "price_effective": 45000,
            "item_length": 60,
            "item_width": 60,
            "item_height": 20,
            "item_weight": 1000,
            "track_inventory": true,
            "identifiers": [
              {
                "gtin_value": "8904578390999",
                "gtin_type": "SKU",
                "primary": true
              }
            ]
          }
        ],
        "trader": [
          {
            "type": "Manufacturer",
            "name": "Air Cooler Pvt Ltd",
            "address": [
              "Northstar Logistics, Level 6, Unit 604, Tower B, Skyline Tech Park, Bengaluru, Karnataka 560048, India"
            ]
          }
        ],
        "attributes": {}
      }
    ],
    "template": "air-care"
  }

Response:

  {
    "trace_id": "a05cb92f-7fab-42e4-9429-6454eae640fa",
    "total": 1,
    "success": 1,
    "failed": 0,
    "status": "SUCCESS",
    "errors": {},
    "stage": "RUNNING",
    "batch_id": "68eb84569955e2f2705c9818",
    "company_id": 6900,
    "last_updated_on": "2025-10-12T10:35:03.059605007Z"
  }

Category-Specific Attributes

Attributes vary by L3 category. Use Fetch Attributes by Product to retrieve:

  • Mandatory attributes: Must be provided with valid values
  • Optional attributes: Can be included if available
  • Validation rules: Data types, allowed values, ranges
Attribute Validation

If mandatory attributes are missing or contain invalid values, the product creation will fail with a validation error. Always fetch and validate attributes before submission.

Best Practices

  1. Validate reference data first: Always fetch and validate departments, categories, brands, templates, tax rules, and HS codes before creating products
  2. Check mandatory attributes: Use Fetch Attributes by Product to identify required fields for your target category
  3. Use unique slugs: Combine product name with a unique identifier (e.g., timestamp or random string) to ensure uniqueness
  4. Batch intelligently: Group up to 100 products per request for efficient bulk uploads, but start with smaller batches for testing
  5. Track with trace_id: Save the trace_id and poll the status endpoint until stage: COMPLETED or stage: FAILED
  6. Handle partial failures: Check the errors object for validation details on failed products and resubmit after fixing issues
  7. Validate pricing: Ensure price_effective (ESP) ≤ price (MRP) to avoid validation errors
  8. Use primary identifiers: Always set primary: true for the main SKU identifier in the identifiers array
  9. Include trader information: Provide at least one trader (Manufacturer, Importer, Packer, or Seller) with complete address details
  10. Test with single products: Validate your payload with one product before scaling to bulk uploads
Next Steps