cimplify
API referenceCatalogue

Products

Browse the active business’s catalogue. List endpoints accept rich filters; detail endpoints return a single product with its variants, add-ons, schedules, and deals.

GET /api/v1/catalogue/products

List products with filters and pagination.

Query parameters

ParamTypeDescription
category_idstringRestrict to one category.
category_slugstringRestrict by category slug.
taxonomy_idstringFilter by taxonomy node.
searchstringFree-text search on name / description.
tagsstringComma-separated tag list.
featuredbooleanOnly featured products.
in_stockbooleanOnly items currently in stock.
min_pricenumberMinimum unit price.
max_pricenumberMaximum unit price.
propertiesstringJSON-encoded property filters, e.g. {"size":"M,L"}.
sort_bystringField name (e.g. price, name).
sort_orderstringasc or desc.
limit / page / cursorint / stringPagination knobs.
location_idstringScope pricing / stock to a single location.

Request

cURL
curl "https://api.cimplify.io/api/v1/catalogue/products?category_id=cat_drinks&limit=10" \
  -H "X-Public-Key: pk_test_your_publishable_key"

Response

{
  "success": true,
  "data": {
    "items": [
      {
        "id": "prod_abc123",
        "name": "Espresso",
        "slug": "espresso",
        "description": "Rich double shot espresso",
        "category_id": "cat_drinks",
        "image_url": "https://cdn.cimplify.io/p/espresso.jpg",
        "default_price": "4.50",
        "currency": "GHS",
        "product_type": "product",
        "inventory_type": "none",
        "is_active": true
      }
    ],
    "pagination": { "limit": 10, "next_cursor": null }
  }
}

GET /api/v1/catalogue/products/{product_id}

Full detail for one product, including variants, add-on groups, and images.

cURL
curl https://api.cimplify.io/api/v1/catalogue/products/prod_abc123 \
  -H "X-Public-Key: pk_test_your_publishable_key"

Response

{
  "success": true,
  "data": {
    "id": "prod_abc123",
    "name": "Espresso",
    "slug": "espresso",
    "default_price": "4.50",
    "product_type": "product",
    "variants": [
      { "id": "var_single", "name": "Single", "price_adjustment": "0.00", "is_default": true },
      { "id": "var_double", "name": "Double", "price_adjustment": "1.50", "is_default": false }
    ],
    "add_ons": [
      {
        "id": "addon_milk",
        "name": "Milk choice",
        "selection_type": "single",
        "is_required": false,
        "options": [
          { "id": "opt_oat", "name": "Oat milk", "price": "0.50" },
          { "id": "opt_almond", "name": "Almond milk", "price": "0.50" }
        ]
      }
    ],
    "images": [
      { "url": "https://cdn.cimplify.io/p/espresso.jpg", "is_primary": true }
    ]
  }
}

GET /api/v1/catalogue/products/{product_id}/schedules

Returns the schedule rules attached to a product (e.g. only available for delivery between 9am and 5pm).

cURL
curl https://api.cimplify.io/api/v1/catalogue/products/prod_abc123/schedules \
  -H "X-Public-Key: pk_test_your_publishable_key"

GET /api/v1/catalogue/products/{product_id}/available-now

Boolean check: can this product be ordered right now from location_id? Combines schedule rules with live inventory. location_id is required.

cURL
curl "https://api.cimplify.io/api/v1/catalogue/products/prod_abc123/available-now?location_id=loc_01H…" \
  -H "X-Public-Key: pk_test_your_publishable_key"

GET /api/v1/catalogue/products/{product_id}/billing-plans/eligible

Subscription billing plans the product is eligible for, optionally filtered by customer_id, quantity, or order_value.

cURL
curl "https://api.cimplify.io/api/v1/catalogue/products/prod_abc123/billing-plans/eligible?quantity=1" \
  -H "X-Public-Key: pk_test_your_publishable_key"

POST /api/v1/catalogue/quotes

Create a price quote that bakes in variant, add-on, bundle / composite selections, and location-specific pricing. Pass the resulting quote_id on POST /cart/items to lock the price.

Body

FieldDescription
product_idRequired.
variant_idOptional selected variant.
quantityOptional, defaults to 1.
location_idOptional location for pricing.
add_on_option_idsAdd-on options.
bundle_selections{ component_id, variant_id?, quantity } array.
composite_selections{ component_id, quantity, variant_id?, add_on_option_id? } array.
cURL
curl -X POST https://api.cimplify.io/api/v1/catalogue/quotes \
  -H "X-Public-Key: pk_test_your_publishable_key" \
  -H "Content-Type: application/json" \
  -d '{
    "product_id": "prod_abc123",
    "variant_id": "var_double",
    "quantity": 2,
    "add_on_option_ids": ["opt_oat"]
  }'

Response

{
  "success": true,
  "data": {
    "quote_id": "pq_01H…",
    "product_id": "prod_abc123",
    "unit_price": "6.50",
    "quantity": 2,
    "subtotal": "13.00",
    "currency": "GHS",
    "expires_at": "2026-05-07T17:00:00Z"
  }
}

GET /api/v1/catalogue/quotes/{quote_id}

Re-read a previously created quote.

cURL
curl https://api.cimplify.io/api/v1/catalogue/quotes/pq_01H… \
  -H "X-Public-Key: pk_test_your_publishable_key"

POST /api/v1/catalogue/quotes/{quote_id}/refresh

Refresh an existing quote with current pricing. Pass any of the same fields as POST /catalogue/quotes; the server replaces the locked numbers.

cURL
curl -X POST https://api.cimplify.io/api/v1/catalogue/quotes/pq_01H…/refresh \
  -H "X-Public-Key: pk_test_your_publishable_key" \
  -H "Content-Type: application/json" \
  -d '{"quantity": 3}'

POST /api/v1/catalogue/deals/validate

Validate a discount code against an order subtotal before applying it to the cart.

Body

cURL
curl -X POST https://api.cimplify.io/api/v1/catalogue/deals/validate \
  -H "X-Public-Key: pk_test_your_publishable_key" \
  -H "Content-Type: application/json" \
  -d '{
    "discount_code": "WELCOME10",
    "order_subtotal": "13.00",
    "location_id": "loc_01H…"
  }'
  • Variants Find variants by axes; per-variant duration and capacity.

  • Cart Add a product to cart with the configuration you priced.

On this page