Skip to content

Products API

GET /api/v1/products

Query parameters:

  • page — page number (default: 1)
  • per_page — items per page (default: 20)
  • category — filter by category slug
  • search — search by title/description

Response:

{
"products": [
{
"id": "uuid",
"title": "82mm Big Mitty Race Wheel",
"slug": "82mm-big-mitty-race-wheel",
"sku": "BIGMITTY",
"price": 75.00,
"currency": "USD",
"inventory_quantity": 282,
"weight": 1.1,
"weight_unit": "kg",
"is_active": true,
"image_url": "https://...",
"categories": [{ "id": "uuid", "name": "Wheels", "slug": "wheels" }]
}
],
"meta": { "page": 1, "per_page": 20, "total": 53, "total_pages": 3 }
}
GET /api/v1/products/:id

Returns full product details including variants, images, and categories.

POST /api/v1/products
Authorization: Bearer <admin_token>
{
"title": "Product Name",
"slug": "product-name",
"description": "...",
"sku": "SKU-001",
"price": 29.99,
"currency": "USD",
"inventory_quantity": 100,
"weight": 0.5,
"weight_unit": "kg",
"is_active": true
}
PATCH /api/v1/products/:id
Authorization: Bearer <admin_token>

Partial update — only include fields to change.

DELETE /api/v1/products/:id
Authorization: Bearer <admin_token>

Soft-deletes the product (sets is_active = false).

GET /api/v1/products/:id/variants
POST /api/v1/products/:id/variants
PATCH /api/v1/products/:id/variants/:variant_id
DELETE /api/v1/products/:id/variants/:variant_id
GET /api/v1/products/:id/images
POST /api/v1/products/:id/images
DELETE /api/v1/products/:id/images/:image_id