Create Variant

🔒

Requires write_product access scope. More access scope

The Create Variant API allows users to add a new product variant to an existing product by specifying details such as options, pricing, inventory, and wholesale information. This operation is used to expand a product’s available options by creating additional variants with unique attributes.This API is especially useful for:

1.Adding new variants to existing products with different options like size, color, or style.

2.Managing inventory and pricing for individual product variants.

3.Customizing product variants for wholesale or retail purposes.

Note: The operation is scoped to a specific shop, identified by its unique domain prefix (shopdomain), ensuring all updates are applied to the correct store.










Public Request Parameters

Parameter NameTypeRequiredParameter LocationParameter ValueDescription
Access-TokenStringYesHeaderBx-_5aV
eXNwl-4AB98s5xLV
yg0fNzGf

MuTpqtlBA
Used to authenticate API requests. Obtain an access token from the Access Token Guide.
Pass it in the Authorization header for every request.
Content-TypeStringYesHeaderapplication
/json
Indicates the media type of the request body. It tells the server how to parse the request and
the client how to interpret the response. For more details, visit Content-Type.

Public Response Parameters

Parameter NameTypeMandatoryParameter LocationExample ValueDescription
errorStringNoResponse Body{ "error": "store is not active" }Indicates an error encountered during the process. This field typically appears when the Access Token is missing or invalid. Example: { "error": "store is not active" }.
errorsArrayNoResponse Body{ "errors"["No Context"] }A list of errors that occurred during the request processing. Example: { "errors": [ "No Context" ] }.
Request-IdStringYesHeaderBx-_5aV
eXNwl-4AB98s5xLV
yg0fNzGf

MuTpqtlBA
A unique identifier for each request. It helps in identifying and debugging specific requests.

Error and Errors Clarification:

Added explanation that the error and errors fields are currently dependent on the API implementation, with plans for future unification.

Request Parameters

Path Parameters

ParameterTypeRequiredExampleDescription
product_idstringYes9fb9f3c6-2300-42c1-8593-d9008d7cfc09The unique identifier for the product.

Body Parameters

ParameterTypeRequiredExampleDescription
product_idstringYesa1a88be0-a1d4-47e4-a2f2-ba6e131cf447Product's unique identifier.
variant.option1stringNoRedThe first option for the variant (e.g., color, size).
variant.option2stringNoLargeThe second option for the variant.
variant.option3stringNoCottonThe third option for the variant.
variant.compare_at_pricestringNo29.99The original price of the variant before any discounts.
variant.image_idstringNo8ef098c5-5a08-44b4-b5fb-89214bb507dcThe ID of the image associated with the variant.
variant.pricestringYes19.99The current price of the variant.
variant.positionintegerYes1The position of the variant in the list of product variants.
variant.skustringNoT-M-L-redStock Keeping Unit (SKU) for the variant.
variant.barcodestringNo6929000212340The barcode associated with the variant.
variant.notestringNoLimited EditionNotes or additional information about the variant.
variant.inventory_quantityintegerNo50The number of items available in inventory for the variant.
variant.weightstringNo1.2The weight of the variant.
variant.weight_unitstringNokgThe unit of measurement for the weight (e.g., kg, lb).
variant.cost_pricestringNo15.00The cost price of the variant.
variant.wholesale_pricearrayNoArray of wholesale price
variant.wholesale_price.pricestringNo17.99Wholesale price for the variant.
variant.wholesale_price.min_quantityintegerNo10Minimum quantity required to avail the wholesale price.

Response Explanation

Successful Response

FieldTypeExampleDescription
variant.idstring1b735278-62c7-41ad-9976-b1b63a90590dUnique identifier for the variant.
variant.product_idstring636a07da-39eb-4829-bde9-b65fae1c28b0Unique identifier for the associated product.
variant.image_idstring91d032e7-bbc8-47e4-8668-9ba6fe714de6Unique identifier for the associated image.
variant.created_atstring (date)2024-04-15T02:00:57ZTimestamp indicating when the variant was created.
variant.updated_atstring (date)2024-04-15T02:00:57ZTimestamp indicating when the variant was last updated.
variant.titlestringS-redTitle of the variant.
variant.option1stringSFirst option value for the variant (e.g., size).
variant.option2stringredSecond option value for the variant (e.g., color).
variant.option3string""Third option value for the variant, if applicable.
variant.imageobjectImage Object
variant.image.srcstring//cdn.shoplazza.com/efd33b921cacd5311a32dd03a9bc8740.pngURL of the image associated with the variant.
variant.image.widthinteger1588Width of the variant image in pixels.
variant.image.heightinteger2246Height of the variant image in pixels.
variant.image.pathstringefd33b921cacd5311a32dd03a9bc8740.pngFile path of the variant image.
variant.image.altstring""Alternative text for the variant image.
variant.positioninteger1Position of the variant in the product's variant list.
variant.compare_at_pricestring100.00Original price of the variant before discounts.
variant.pricestring100.00Current price of the variant.
variant.skustringS-REDStock Keeping Unit (SKU) for the variant.
variant.barcodestring123Barcode associated with the variant.
variant.notestrings-redNotes or additional information about the variant.
variant.inventory_quantityinteger10Number of items available in inventory for the variant.
variant.weightstring0.10Weight of the variant.
variant.weight_unitstringkgUnit of measurement for the weight (e.g., kg, lb).
variant.cost_pricestring11.00Cost price of the variant.
variant.wholesale_priceobjectwholesale price object
variant.wholesale_price.pricestring100.00Wholesale price for the variant.
variant.wholesale_price.min_quantityinteger1Minimum quantity required to avail the wholesale price.
variant.extendobjectextend objectAdditional details about the variant's dimensions or origin.
variant.extend.lengthnumber10length
variant.extend.widthnumber10width
variant.extend.heightnumber10height
variant.extend.dimension_unitstring"in"dimension_unit
variant.extend.origin_country_codestring"AS"Country of origin code of the product.
variant.extend.hs_codestring"6211439"HS codes are the international standard for commodity classification, and Shoplazza can automatically generate HS codes based on commodity information.

Error Response

Error responses in the API can be represented using two different fields: errors and error. Both fields provide details about issues encountered during request processing. Below is an explanation of the fields with their respective examples and descriptions.

FieldTypeExampleDescription
errorsArray["No Context"]A list of errors encountered during the request processing.
FieldTypeExampleDescription
errorArray "store is not active"Indicates an error encountered during the process.

Request Examples

curl --request POST \
     --url https://shopdomain.myshoplaza.com/openapi/2022-01/products/product_id/variants \
     --header 'accept: application/json' \
     --header 'access-token: WPMSdB6M8Cpum4X1GoMYOKZpiESd8d2x7dZW8d79ZeQ' \
     --header 'content-type: application/json' \
     --data '{
       "variant": {
         "option1": "S",
         "option2": "red",
         "option3": "",
         "compare_at_price": "100.00",
         "image_id": "91d032e7-bbc8-47e4-8668-9ba6fe714de6",
         "price": "90.00",
         "position": 1,
         "sku": "S-RED",
         "barcode": "123456789",
         "note": "This is a sample variant",
         "inventory_quantity": 50,
         "weight": "0.50",
         "weight_unit": "kg",
         "cost_price": "50.00",
         "wholesale_price": [
           {
             "price": "85.00",
             "min_quantity": 10
           },
           {
             "price": "80.00",
             "min_quantity": 50
           }
         ]
       }
     }'

Success Response Example

{
  "variant": {
    "id": "1b735278-62c7-41ad-9976-b1b63a90590d",
    "product_id": "636a07da-39eb-4829-bde9-b65fae1c28b0",
    "image_id": "91d032e7-bbc8-47e4-8668-9ba6fe714de6",
    "created_at": "2024-04-15T02:00:57Z",
    "updated_at": "2024-04-15T02:00:57Z",
    "title": "S-red",
    "option1": "S",
    "option2": "red",
    "option3": "",
    "image": {
      "src": "//cdn.shoplazza.com/efd33b921cacd5311a32dd03a9bc8740.png",
      "width": 1588,
      "height": 2246,
      "path": "efd33b921cacd5311a32dd03a9bc8740.png",
      "alt": ""
    },
    "position": 1,
    "compare_at_price": "100.00",
    "price": "100.00",
    "sku": "S-RED",
    "barcode": "123",
    "note": "s-red",
    "inventory_quantity": 10,
    "weight": "0.10",
    "weight_unit": "kg",
    "cost_price": "11.00",
    "wholesale_price": [
      {
        "price": "100.00",
        "min_quantity": 1
      }
    ],
    "extend": null
  }
}

Error Response Example

{
  "errors": [
    "productId has an invalid UUID"
  ]
}
{
  "error": "store is not active"
}

Error Details

Status CodeMessagePossible ReasonExample Response
400Bad RequestInvalid input format or request structure (e.g., missing required fields or incorrect data types).Bad Request
UnauthorizedThe request is missing valid authentication credentials or the credentials provided are invalid.Unauthorized
404Product Not FoundThe product ID provided in the request does not exist.{ "errors": ["Product not found"] }
422Failed ValidationOne or more fields failed validation checks.{ "errors": [ "Variant price must be entered."]}
Invalid or empty idmissing required id or id with incorrect UUID types{ "errors": [ "Id is not an invalid UUID"]}
At least a single variant is included in the productCannot create additional variants because the product is set to have only a default variant (has_only_default_variant = true).{ "errors": [ "At least a single variant is included in the product." ] }
Language
Credentials
Header
URL
Click Try It! to start a request and see the response here!