**Version: 202601**

# Create product

**POST** `/openapi/2026-01/products`

Create a new product with the provided details.

## Request

**application/json**

**Body | Example**

**Body (required)**

- `product` object (required)

  Product data to be created

  - `title` string (required)

    Product's title
  - `brief` string

    Product's briefing description
  - `description` string

    Product's description
  - `published` boolean

    Whether it is published or not
  - `requires_shipping` boolean

    Whether it is required to shipping
  - `taxable` boolean

    Whether it is taxable
  - `tags` string[]

    Tags, string list of tags
  - `vendor` string

    Vendor's name
  - `vendor_url` string

    Vendor's URL
  - `note` string

    Customizable note, for example: "This is a customizable product"
  - `seo_title` string

    SEO title
  - `seo_description` string

    SEO description
  - `seo_keywords` string[]

    SEO keywords
  - `handle` string

    Product's handle
  - `has_only_default_variant` boolean (required)

    Whether it is a single variant, Defaults to true
  - `inventory_tracking` boolean

    Whether to tracking inventory
  - `inventory_policy` string

    Inventory policy: `continue`, `deny`, `auto_unpublished`, required while `inventory_tracking` is true
  - `need_variant_image` boolean

    Whether variant image is needed. It's required if has\_only\_default\_variant is false
  - `spu` string

    Product's SPU
  - `fake_sales` int64

    Product's fake sales
  - `display_fake_sales` boolean

    Whether to display fake sales
  - `options` object[]

    List of options

    *   Array \[

    - `name` string (required)

      Option's name, for example: "color","size"
    - `values` string[] (required)

      Option's values, for example: \["red", "black"\],\["small", "large"\]
    *   \]
  - `images` object[] (required)

    List of images

    *   Array \[

    - `src` string (required)

      Image's URL
    - `width` int32

      Image's width in px
    - `height` int32

      Image's height in px
    - `alt` string

      Image's alt
    - `path` string

      Image's path
    *   \]
  - `variants` object[] (required)

    List of product variants

    *   Array \[

    - `option1` string

      Option 1
    - `option2` string

      Option 2
    - `option3` string

      Option 3
    - `image` object

      Variant's images, e.g.: `{"src":"//cn.cdn.shoplazza.com/c8bf5695d347092d7a010f00182581f7.jpeg"}`

      - `src` string (required)

        Image's URL
      - `width` int32

        Image's width in px
      - `height` int32

        Image's height in px
      - `alt` string

        Image's alt
      - `path` string

        Image's path
    - `compare_at_price` double

      Compare at price ( original price )
    - `price` double (required)

      Price, set it to "0.00" if you want to leave the price empty
    - `sku` string

      SKU
    - `barcode` string

      The barcode of the variant
    - `note` string

      Note or remark
    - `inventory_quantity` int64

      Inventory quantity
    - `weight` double

      Weight
    - `weight_unit` string

      Unit of weight, possible value are: `kg`, `g`, `lb`, `oz`
    - `cost_price` double

      Cost price
    - `wholesale_price` object[]

      Wholesale price list

      *   Array \[

      - `price` double (required)

        Price
      - `min_quantity` int64 (required)

        Mini Order Quantity
      *   \]
    - `whole_prices` object[]

      Wholesale price list. Deprecated alias of `wholesale_price`; when both are sent, `wholesale_price` wins.

      *   Array \[

      - `price` double (required)

        Price
      - `min_quantity` int64 (required)

        Mini Order Quantity
      *   \]
    - `retail_price` double

      Retail price of the variant
    - `position` int64

      Position of the variant in the list
    - `extend` object

      Extend of the variant

      - `length` double

        Length of the variant
      - `width` double

        Width of the variant
      - `height` double

        Height of the variant
      - `dimension_unit` string

        Dimension unit, possible value are: `cm`, `in`, `mm`
      - `origin_country_code` string

        Origin country of the variant
      - `hs_code` string

        Harmonized System Code of the variant
    *   \]
  - `mixed_wholesale` boolean

    Whether mixed wholesale is supported
  - `collection_ids` string[]

    Collection Ids of the products
  - `product_type` string

    Product type
  - `brand` string

    Brand
  - `unique_token` string

    Unique token used for idempotency verification
  - `independent_seo` boolean

    Independent seo of the product
  - `inventory_quantity` int64

    Inventory quantity of the product
  - `category_id` string

    The ID of the category
  - `auto_publish_at` string

    After setting `auto_publish_at`, the product will be published as scheduled at that time, in RFC 3339 format. Example: 2026-01-26T10:00:00.000+00:00

```json
{
  "product": {
    "title": "string",
    "brief": "string",
    "description": "string",
    "published": true,
    "requires_shipping": true,
    "taxable": true,
    "tags": [
      "string"
    ],
    "vendor": "string",
    "vendor_url": "string",
    "note": "string",
    "seo_title": "string",
    "seo_description": "string",
    "seo_keywords": [
      "string"
    ],
    "handle": "string",
    "has_only_default_variant": true,
    "inventory_tracking": true,
    "inventory_policy": "string",
    "need_variant_image": true,
    "spu": "string",
    "fake_sales": 0,
    "display_fake_sales": true,
    "options": [
      {
        "name": "string",
        "values": [
          "string"
        ]
      }
    ],
    "images": [
      {
        "src": "string",
        "width": 0,
        "height": 0,
        "alt": "string",
        "path": "string"
      }
    ],
    "variants": [
      {
        "option1": "string",
        "option2": "string",
        "option3": "string",
        "image": {
          "src": "string",
          "width": 0,
          "height": 0,
          "alt": "string",
          "path": "string"
        },
        "compare_at_price": 0,
        "price": 0,
        "sku": "string",
        "barcode": "string",
        "note": "string",
        "inventory_quantity": 0,
        "weight": 0,
        "weight_unit": "string",
        "cost_price": 0,
        "wholesale_price": [
          {
            "price": 0,
            "min_quantity": 0
          }
        ],
        "whole_prices": [
          {
            "price": 0,
            "min_quantity": 0
          }
        ],
        "retail_price": 0,
        "position": 0,
        "extend": {
          "length": 0,
          "width": 0,
          "height": 0,
          "dimension_unit": "string",
          "origin_country_code": "string",
          "hs_code": "string"
        }
      }
    ],
    "mixed_wholesale": true,
    "collection_ids": [
      "string"
    ],
    "product_type": "string",
    "brand": "string",
    "unique_token": "string",
    "independent_seo": true,
    "inventory_quantity": 0,
    "category_id": "string",
    "auto_publish_at": "string"
  }
}
```

## Responses

**200**

OK

**application/json**

**Schema | Example**

**Schema**

- `code` string

  error code
- `message` string

  error message
- `data` object

  - `product` object

    The created product

    - `id` string

      Product's ID
    - `title` string

      Product's title
    - `description` string

      Product's description
    - `published` boolean

      Whether it is published or not
    - `requires_shipping` boolean

      Whether it is required to shipping
    - `taxable` boolean

      Whether it is taxable
    - `tags` string[]

      Tags, string list of tags
    - `vendor` string

      Vendor's name
    - `vendor_url` string

      Vendor's URL
    - `note` string

      Customizable note, for example: "This is a customizable product"
    - `seo_title` string

      SEO title
    - `seo_description` string

      SEO description
    - `seo_keywords` string[]

      SEO keywords
    - `handle` string

      Product's handle
    - `has_only_default_variant` boolean

      Whether it is a single variant
    - `inventory_tracking` boolean

      Whether to tracking inventory
    - `inventory_policy` string

      Inventory policy: `continue`, `deny`, `auto_unpublished`, required while `inventory_tracking` is true
    - `need_variant_image` boolean

      Whether variant image is needed. It's required if has\_only\_default\_variant is false
    - `spu` string

      Product's SPU
    - `fake_sales` int64

      Product's fake sales
    - `display_fake_sales` boolean

      Whether to display fake sales
    - `options` object[]

      List of options

      *   Array \[

      - `id` string

        Option's ID
      - `name` string

        Option's name, for example: "color","size"
      - `values` string[]

        Option's values, for example: \["red", "black"\],\["small", "large"\]
      - `position` int64

        Option's position
      *   \]
    - `images` object[]

      List of images

      *   Array \[

      - `id` string

        Image's ID
      - `src` string

        Image's URL
      - `width` int32

        Image's width in px
      - `height` int32

        Image's height in px
      - `alt` string

        Image's alt
      - `position` int64

        Image's position
      - `path` string

        Image's path
      *   \]
    - `variants` object[]

      List of product variants

      *   Array \[

      - `id` string

        The unique identifier of the variant
      - `product_id` string

        The product ID this variant belongs to
      - `image_id` string

        The image ID of the variant
      - `created_at` string

        The time of the variant was created
      - `updated_at` string

        The time of the variant was updated
      - `title` string

        Title of the variant
      - `option1` string

        The first option of the variant
      - `option2` string

        The second option of the variant
      - `option3` string

        The third option of the variant
      - `image` object

        The image of the variant

        - `src` string

          Image's URL
        - `width` int32

          Image's width in px
        - `height` int32

          Image's height in px
        - `alt` string

          Image's alt
        - `path` string

          Image's path
      - `position` int64

        The position of the variant in the product
      - `compare_at_price` double

        The compare at price of the variant
      - `price` double

        The price of the variant
      - `sku` string

        The SKU of the variant
      - `barcode` string

        The barcode of the variant
      - `note` string

        The note of the variant
      - `inventory_quantity` int64

        The inventory quantity of the variant
      - `weight` double

        The weight of the variant
      - `weight_unit` string

        The weight unit of the variant, possible value are: `kg`, `g`, `lb`, `oz`
      - `cost_price` double

        The cost price of the variant
      - `wholesale_price` object[]

        The wholesale prices of the variant

        *   Array \[

        - `price` double (required)

          Price
        - `min_quantity` int64 (required)

          Mini Order Quantity
        *   \]
      - `whole_prices` object[]

        The wholesale prices of the variant. Deprecated alias of `wholesale_price`; both carry the same value.

        *   Array \[

        - `price` double (required)

          Price
        - `min_quantity` int64 (required)

          Mini Order Quantity
        *   \]
      - `retail_price` double

        The retail price of the variant
      - `is_discount` boolean

        Whether the variant is discount
      - `origin_price` double

        The origin price of the variant
      - `extend` object

        Extend of the variant

        - `length` double

          The length of the variant
        - `width` double

          The width of the variant
        - `height` double

          The height of the variant
        - `dimension_unit` string

          The dimension unit
        - `origin_country_code` string

          Origin\_country\_code
        - `hs_code` string

          Hs\_code
      *   \]
    - `mixed_wholesale` boolean

      Whether mixed wholesale is supported
    - `product_type` string

      Product type
    - `brand` string

      Brand
    - `brief` string

      Brief of the product
    - `inventory_quantity` int64

      Inventory quantity
    - `price_min` double

      Min price
    - `price_max` double

      Max price
    - `compare_at_price_min` double

      Min compare at price
    - `compare_at_price_max` double

      Max compare at price
    - `published_at` string

      Published at
    - `created_at` string

      Created at
    - `updated_at` string

      Updated at
    - `sales` int64

      The real amount of sales
    - `independent_seo` boolean

      Independent seo
    - `url` string

      URL of the product
    - `available` boolean

      Whether the product available
    - `retail_price_min` double

      The minimum of the retail price
    - `retail_price_max` double

      The maximum of the retail price
    - `origin_price_min` double

      The minimum of the original price
    - `origin_price_max` double

      The maximum of the original price
    - `primary_image` object

      The primary image

      - `src` string

        Image's URL
      - `width` int32

        Image's width in px
      - `height` int32

        Image's height in px
      - `alt` string

        Image's alt
      - `path` string

        Image's path
    - `tax_code` string

      The tax code of the product
    - `category_id` string

      The category ID of the product
    - `category` object

      Categories in the products' list

      - `id` uint64

        Category ID
      - `name` string

        Name
      - `google_id` int64

        Google category ID
      - `level` int32

        Level
      - `path` string

        Path

```json
{
  "code": "string",
  "message": "string",
  "data": {
    "product": {
      "id": "string",
      "title": "string",
      "description": "string",
      "published": true,
      "requires_shipping": true,
      "taxable": true,
      "tags": [
        "string"
      ],
      "vendor": "string",
      "vendor_url": "string",
      "note": "string",
      "seo_title": "string",
      "seo_description": "string",
      "seo_keywords": [
        "string"
      ],
      "handle": "string",
      "has_only_default_variant": true,
      "inventory_tracking": true,
      "inventory_policy": "string",
      "need_variant_image": true,
      "spu": "string",
      "fake_sales": 0,
      "display_fake_sales": true,
      "options": [
        {
          "id": "string",
          "name": "string",
          "values": [
            "string"
          ],
          "position": 0
        }
      ],
      "images": [
        {
          "id": "string",
          "src": "string",
          "width": 0,
          "height": 0,
          "alt": "string",
          "position": 0,
          "path": "string"
        }
      ],
      "variants": [
        {
          "id": "string",
          "product_id": "string",
          "image_id": "string",
          "created_at": "string",
          "updated_at": "string",
          "title": "string",
          "option1": "string",
          "option2": "string",
          "option3": "string",
          "image": {
            "src": "string",
            "width": 0,
            "height": 0,
            "alt": "string",
            "path": "string"
          },
          "position": 0,
          "compare_at_price": 0,
          "price": 0,
          "sku": "string",
          "barcode": "string",
          "note": "string",
          "inventory_quantity": 0,
          "weight": 0,
          "weight_unit": "string",
          "cost_price": 0,
          "wholesale_price": [
            {
              "price": 0,
              "min_quantity": 0
            }
          ],
          "whole_prices": [
            {
              "price": 0,
              "min_quantity": 0
            }
          ],
          "retail_price": 0,
          "is_discount": true,
          "origin_price": 0,
          "extend": {
            "length": 0,
            "width": 0,
            "height": 0,
            "dimension_unit": "string",
            "origin_country_code": "string",
            "hs_code": "string"
          }
        }
      ],
      "mixed_wholesale": true,
      "product_type": "string",
      "brand": "string",
      "brief": "string",
      "inventory_quantity": 0,
      "price_min": 0,
      "price_max": 0,
      "compare_at_price_min": 0,
      "compare_at_price_max": 0,
      "published_at": "string",
      "created_at": "string",
      "updated_at": "string",
      "sales": 0,
      "independent_seo": true,
      "url": "string",
      "available": true,
      "retail_price_min": 0,
      "retail_price_max": 0,
      "origin_price_min": 0,
      "origin_price_max": 0,
      "primary_image": {
        "src": "string",
        "width": 0,
        "height": 0,
        "alt": "string",
        "path": "string"
      },
      "tax_code": "string",
      "category_id": "string",
      "category": {
        "id": 0,
        "name": "string",
        "google_id": 0,
        "level": 0,
        "path": "string"
      }
    }
  }
}
```
