Skip to content

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

application/json example derived from schema

{
  "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

application/json

{
  "error": {
    "status": 400,
    "message": "Request body required"
  }
}
413413 — body exceeds 64 KB

application/json

{
  "error": {
    "status": 413,
    "message": "Request body too large",
    "details": {
      "maxSize": "64 KB"
    }
  }
}
429429 — rate limit exceeded (120/60s)

application/json

{
  "error": {
    "status": 429,
    "message": "Too many requests",
    "details": {
      "retryAfter": 45
    }
  }
}

Released under the MIT License.