☰ Menu · Catalogue
API reference

Catalogue

Your products and their categories, for category cashback rules and product reports.

POST/v1/catalog/products/bulk
Scope: catalog:write

Creates or updates up to 1000 products by sku. A new category code creates a category with default rules (earns, payable with cashback). category_name renames the category; its money rules are set only by the owner.

products[].skustring, required
Your product code, unique per venue.
products[].namestring
Product name.
products[].categorystring
Your category code.
products[].category_namestring
Category name to show the owner.
products[].priceinteger
Price, minor units.
products[].activeboolean
Default true.
curl
curl https://loyaltyfy.io/api/v1/catalog/products/bulk \
  -H "Authorization: Bearer sk_test_..." \
  -H "Content-Type: application/json" \
  -d '{
    "products": [
      { "sku": "4840001", "name": "Marlboro Gold", "category": "TOB", "category_name": "Tobacco", "price": 6500 },
      { "sku": "1001", "name": "Latte", "category": "COF", "category_name": "Coffee", "price": 4500 },
      { "sku": "2040", "name": "Zeama", "category": "KIT", "category_name": "Kitchen", "price": 6500 }
    ]
  }'

# { "object": "catalog_sync", "upserted": 3 }
GET/v1/catalog/products
Scope: catalog:read or catalog:write

Products sorted by sku. Filters: ?category=, ?sku=. Paginated; starting_after takes a sku.

GET/v1/catalog/categories
Scope: catalog:read or catalog:write

Every category with the owner's rules: earn, redeem, earn_percent (null means the guest's level).

Response · 200
{
  "object": "list",
  "url": "/v1/catalog/categories",
  "has_more": false,
  "data": [
    { "object": "catalog_category", "code": "COF", "name": "Coffee", "earn": true, "redeem": true, "earn_percent": 10, ... },
    { "object": "catalog_category", "code": "TOB", "name": "Tobacco", "earn": false, "redeem": false, "earn_percent": null, ... }
  ]
}
Questions about an integration: api@loyaltyfy.io. We answer within one business day.