Ecommerce
Manage products, orders, coupons, collections, and customers. Ecommerce endpoints are scoped to a
store (:storeId). For unauthenticated public browsing, see Public Storefront.
All store-scoped management endpoints require a valid JWT or API key. The public storefront endpoints require no authentication.
Endpoints
/stores/:storeId/productsCreate a product/stores/:storeId/productsList products in a store/products/:idGet a single product/products/:idUpdate a product/products/:idSoft-delete a product/stores/:storeId/ordersCreate an order/stores/:storeId/ordersList orders for a store/orders/:idGet order details/orders/:id/fulfillMark an order as fulfilled/orders/:id/cancelCancel an order/stores/:storeId/couponsCreate a discount coupon/stores/:storeId/collectionsList product collections/stores/:storeId/customersList customers for a storeProducts
/stores/:storeId/productsCreate a product| Field | Type | Required | Description |
|---|---|---|---|
title | string | Yes | Product name (max 500 chars) |
description | string | No | Product description |
type | string | Yes | physical or digital |
price | number | Yes | Price in cents (min: 1) |
sku | string | No | Stock keeping unit |
status | string | No | draft or active (default draft) |
Update a Product
/products/:idUpdate a product| Field | Type | Required | Description |
|---|---|---|---|
title | string | No | Product name (max 500 chars) |
description | string | No | Product description |
status | string | No | draft, active, or archived |
Delete a Product
/products/:idSoft-delete a productProducts are soft-deleted — the record is retained for order history but hidden from listings.
Orders
/stores/:storeId/ordersCreate an order| Field | Type | Required | Description |
|---|---|---|---|
customerId | string | Yes | Customer placing the order |
items | array | Yes | Line items, each { variantId, quantity } |
currency | string | No | Three-letter ISO currency code |
Fulfill or Cancel
/orders/:id/fulfillMark an order as fulfilled/orders/:id/cancelCancel an orderfulfill transitions the order to fulfilled; cancel transitions it to cancelled. Both take no
request body.
Coupons
/stores/:storeId/couponsCreate a discount coupon| Field | Type | Required | Description |
|---|---|---|---|
code | string | Yes | Unique coupon code (max 50 chars) |
type | string | Yes | percentage or fixed |
value | number | Yes | Discount value: percent for percentage, cents for fixed (min: 1) |
usageLimit | number | No | Maximum number of redemptions |
minOrderAmount | number | No | Minimum order amount in cents to apply the coupon |
Collections & Customers
/stores/:storeId/collectionsList product collections/stores/:storeId/customersList customers for a storeBoth return arrays scoped to the given store.
Public Storefront
These endpoints power public product browsing and require no authentication. Stores are
addressed by their merchant slug.
/public/stores/:slugGet public store and merchant info/public/stores/:slug/productsList active products for a storeGET /public/stores/:slug/products returns only products with status: active, each including its
variants and the default variant's price and sku.