Klu Docs

GET products

List public product catalog records.

Endpoint

GET /public-api/v1/products

Purpose

Returns public product catalog data for the organization, including the current average unit cost for each store.

Authentication

Required.

Parameters

  • limit: optional page size, default 25, maximum 100.
  • cursor: optional UUID from pagination.nextCursor.
  • storeIds: optional branch filter, comma-separated or repeated.
  • categoryIds: optional category filter, comma-separated or repeated.
  • search: optional text search by product name or SKU.

Response fields

Each product includes id, timestamps, sku, name, description, price, type, lowStockThreshold, imageUrl, category, assignedStores, and branchOverrides. Each branch override includes averageCost, the current average unit cost for that product and store.

Example request

curl "https://api.klupos.com/public-api/v1/products?limit=10&search=flower" \
  -H "Authorization: Bearer klu_live_replace_me"

Example response

{
  "data": [
    {
      "id": "product-id",
      "createdAt": "2026-06-01T00:00:00.000Z",
      "updatedAt": "2026-06-24T00:00:00.000Z",
      "sku": "SKU-001",
      "name": "Blue Dream",
      "description": "Hybrid flower",
      "price": 450,
      "type": "DEFAULT",
      "lowStockThreshold": 5,
      "imageUrl": "https://example.com/product.jpg",
      "category": {
        "id": "category-id",
        "name": "Flower",
        "color": "#36B37E",
        "unit": "WEIGHT",
        "group": null
      },
      "assignedStores": [
        { "id": "store-id", "name": "Main Branch", "branchNo": "001" }
      ],
      "branchOverrides": [
        {
          "storeId": "store-id",
          "averageCost": 210,
          "price": 420,
          "hidden": false,
          "imageUrl": null
        }
      ]
    }
  ]
}

Common errors

  • 400: invalid query parameter.
  • 401: invalid key.
  • 403: requested storeIds are outside the organization.
  • 429: rate limit exceeded.

AI-agent notes

Use this endpoint to discover product IDs, SKUs, and current per-store average costs. averageCost is not a historical sale-time cost, so it cannot produce exact historical margins.

On this page