Products Create
{{api_url}}/shop/products/Creates new products, or updates the basic product information of SKUs that already exist. Send one row per SKU. One call can create and update any number of products, with no fixed limit on rows. It works exactly like the Product Upload tool in the OMS.
Body
A JSON array as the body root, one object per product:
| Field | Type | Description |
|---|---|---|
sku | string | The product's SKU. If the SKU already exists, the row updates it instead of creating a new product. |
title | string | The product title. |
price | number | The product's price. Used when the product is created. |
image_url | string | A URL to the product image, for display. Used when the product is created. |
ship_weight_oz | number | Shipping weight, in ounces. |
ship_length_inches | number | Shipping length, in inches. |
ship_width_inches | number | Shipping width, in inches. |
ship_height_inches | number | Shipping height, in inches. |
gtin | string | GTIN. |
upc | string | UPC. |
isbn | string | ISBN. |
asin | string | Amazon ASIN. |
barcode | string | Barcode. |
Example
Create two products:
{{api_url}}/shop/products/
[
{"sku": "ABC123", "title": "Product Title ABC", "price": 5.5, "image_url": "https://example.com/example.jpg", "ship_weight_oz": 8, "ship_length_inches": 5, "ship_width_inches": 6, "ship_height_inches": 7, "gtin": "", "upc": "", "isbn": "", "asin": "", "barcode": ""},
{"sku": "DEF456", "title": "Product Title DEF", "price": 1, "image_url": "https://example.com/example2.jpg", "ship_weight_oz": 1, "ship_length_inches": 2, "ship_width_inches": 3, "ship_height_inches": 4, "gtin": "", "upc": "", "isbn": "", "asin": "", "barcode": ""}
]
Response
One result per row:
[
{"sku": "ABC123", "message": "Product Created"},
{"sku": "DEF456", "message": "Product basic info updated. Price and image NOT updated"}
]
| Field | Type | Description |
|---|---|---|
sku | string | The SKU from the row. |
message | string | Product Created for a new SKU. Product basic info updated. Price and image NOT updated for a SKU that already existed. |
Updating existing SKUs
For a SKU that already exists, a row updates the title, weight, dimensions, and identifier fields only. It does not change price, inventory, or the image. To change those, use Price Set and Inventory Set.
A blank field clears that field on an existing SKU. Always send the full data for existing SKUs. A row with "upc": "" removes the SKU's stored UPC.
After you create products
- Set inventory with Inventory Set or Inventory Set Bulk.
- Flag each SKU as sold on the channels it's listed on, at Sell On > \[marketplace\] > Set SKU Sold On in the OMS. A SKU that isn't flagged as sold on a channel doesn't send inventory to it.
Before you build
- Weights are in ounces and dimensions are in inches.
- Check
messageon every row. It tells you whether the row created a product or updated one, and on an update, that price and image were left as they were. - The identifiers you send are searchable. Inventory Search's
search_termmatches the base SKU, ASIN, GTIN, UPC, ISBN, and barcode. - Your API key needs Products write permission. A key without it gets
403 Forbidden.
Related guides:
Authorization
Bearer token, sent in the Authorization header. Inherited from the collection.
Headers
| Key | Value | Description |
|---|---|---|
Content-Type | application/json |
Body
[
{
"sku": "ABC123",
"title": "Product Title ABC",
"price": 5.5,
"image_url": "https://example.com/example.jpg",
"ship_weight_oz": 8,
"ship_length_inches": 5,
"ship_width_inches": 6,
"ship_height_inches": 7,
"gtin": "",
"upc": "",
"isbn": "",
"asin": "",
"barcode": ""
},
{
"sku": "DEF456",
"title": "Product Title DEF",
"price": 1,
"image_url": "https://example.com/example2.jpg",
"ship_weight_oz": 1,
"ship_length_inches": 2,
"ship_width_inches": 3,
"ship_height_inches": 4,
"gtin": "",
"upc": "",
"isbn": "",
"asin": "",
"barcode": ""
}
]Example Request
curl --location --request POST '{{api_url}}/shop/products/' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {{auth_token}}' \
--data '[
{
"sku": "ABC123",
"title": "Product Title ABC",
"price": 5.5,
"image_url": "https://example.com/example.jpg",
"ship_weight_oz": 8,
"ship_length_inches": 5,
"ship_width_inches": 6,
"ship_height_inches": 7,
"gtin": "",
"upc": "",
"isbn": "",
"asin": "",
"barcode": ""
},
{
"sku": "DEF456",
"title": "Product Title DEF",
"price": 1,
"image_url": "https://example.com/example2.jpg",
"ship_weight_oz": 1,
"ship_length_inches": 2,
"ship_width_inches": 3,
"ship_height_inches": 4,
"gtin": "",
"upc": "",
"isbn": "",
"asin": "",
"barcode": ""
}
]'Example Responses
Products Create
Request
curl --location --request POST 'https://example.com/api/admin/shop/products/' \
--header 'Authorization: Bearer YOUR_API_KEY' \
--header 'Content-Type: application/json' \
--data '[
{
"sku": "ABC123",
"title": "Product Title ABC",
"price": 5.5,
"image_url": "https://example.com/example.jpg",
"ship_weight_oz": 8,
"ship_length_inches": 5,
"ship_width_inches": 6,
"ship_height_inches": 7,
"gtin": "",
"upc": "",
"isbn": "",
"asin": "",
"barcode": ""
},
{
"sku": "DEF456",
"title": "Product Title DEF",
"price": 1,
"image_url": "https://example.com/example2.jpg",
"ship_weight_oz": 1,
"ship_length_inches": 2,
"ship_width_inches": 3,
"ship_height_inches": 4,
"gtin": "",
"upc": "",
"isbn": "",
"asin": "",
"barcode": ""
}
]'Response 200 OK
[
{
"sku": "ABC123",
"message": "Product Created"
},
{
"sku": "DEF456",
"message": "Product Created"
}
]
