POST/products
Create product
Create a new product. Fields `id`, `createdAt`, `updatedAt` are auto-generated. Triggers `products.created` webhook.
ReturnsProduct
AcceptsProductInput
Bearer token required
Response examples
201Product created
{
"id": 1,
"categoryId": 4,
"name": "Desk Lamp",
"description": "Ultra-fast connectivity with rock-solid reliability.",
"price": 161.28,
"originalPrice": 231.38,
"currency": "USD",
"stock": 257,
"sku": "SKU-00001",
"rating": 4.4,
"reviewCount": 188,
"image": "https://picsum.photos/seed/prod1/400/400",
"images": [
"https://picsum.photos/seed/prod1-0/400/400",
"https://picsum.photos/seed/prod1-1/400/400",
"https://picsum.photos/seed/prod1-2/400/400",
"https://picsum.photos/seed/prod1-3/400/400",
"https://picsum.photos/seed/prod1-4/400/400"
],
"weight": 9.19,
"dimensions": {
"width": 33.4,
"height": 40,
"depth": 14.6
},
"isAvailable": true,
"isFeatured": false,
"tags": [
"backend"
],
"createdAt": "2024-05-30T01:37:26.059Z",
"updatedAt": "2026-12-15T02:55:19.943Z"
}400400 — invalid input or malformed JSON
{
"error": {
"status": 400,
"message": "Request body required"
}
}413413 — body exceeds 64 KB
{
"error": {
"status": 413,
"message": "Request body too large",
"details": {
"maxSize": "64 KB"
}
}
}429429 — rate limit exceeded (120/60s)
{
"error": {
"status": 429,
"message": "Too many requests",
"details": {
"retryAfter": 45
}
}
}