Skip to main content
POST
/
vendor
/
products
curl -X POST 'http://localhost:9000/vendor/products' \
  -H 'Authorization: Bearer <token>' \
  -H 'x-seller-id: <seller_id>' \
  -H 'Content-Type: application/json' \
  -d '{
    "title": "Acme T-Shirt",
    "options": [{ "title": "Size", "values": ["S", "M"] }],
    "variants": [
      { "title": "S", "sku": "ACME-SHIRT-S", "options": { "Size": "S" } },
      { "title": "M", "sku": "ACME-SHIRT-M", "options": { "Size": "M" } }
    ]
  }'
{
  "product": {
    "id": "prod_01HXYZ",
    "title": "Acme T-Shirt",
    "status": "proposed",
    "handle": "acme-t-shirt",
    "variants": [
      { "id": "variant_01HXYZ", "title": "M", "sku": "ACME-SHIRT-M" }
    ]
  }
}
Creates a product; when no status is provided it is created with status proposed.
When the product request flow is enabled, status may only be draft or proposed — publishing requires operator approval.

Query parameters

fields
string
Comma-separated fields to include in the returned product. Prefix with +/- to add to or remove from the defaults.

Body parameters

title
string
required
The product’s title.
subtitle
string
The product’s subtitle.
description
string
The product’s description.
status
string
default:"proposed"
One of draft, proposed, published, rejected. Restricted to draft / proposed when the product request flow is enabled.
is_giftcard
boolean
default:"false"
Whether the product is a gift card.
discountable
boolean
default:"true"
Whether discounts can apply to the product.
images
object[]
thumbnail
string
URL of the product’s thumbnail image.
handle
string
The product’s URL handle; generated from the title when omitted.
external_id
string
ID of the product in an external system.
type_id
string
ID of the product type.
collection_id
string
ID of the collection the product belongs to.
categories
object[]
tags
object[]
options
object[]
attributes
object[]
Product attribute assignments; each entry references an existing attribute by id or defines one inline by title.
variants
object[]
weight
number
Weight of the product.
length
number
Length of the product.
height
number
Height of the product.
width
number
Width of the product.
hs_code
string
Harmonized System code.
mid_code
string
Manufacturer ID code.
origin_country
string
Country of origin.
material
string
Material of the product.
metadata
object
Custom key-value pairs.
additional_data
object
Extra data passed to workflow hooks.

Response

product
object
curl -X POST 'http://localhost:9000/vendor/products' \
  -H 'Authorization: Bearer <token>' \
  -H 'x-seller-id: <seller_id>' \
  -H 'Content-Type: application/json' \
  -d '{
    "title": "Acme T-Shirt",
    "options": [{ "title": "Size", "values": ["S", "M"] }],
    "variants": [
      { "title": "S", "sku": "ACME-SHIRT-S", "options": { "Size": "S" } },
      { "title": "M", "sku": "ACME-SHIRT-M", "options": { "Size": "M" } }
    ]
  }'
{
  "product": {
    "id": "prod_01HXYZ",
    "title": "Acme T-Shirt",
    "status": "proposed",
    "handle": "acme-t-shirt",
    "variants": [
      { "id": "variant_01HXYZ", "title": "M", "sku": "ACME-SHIRT-M" }
    ]
  }
}