API reference
Items
Your saved products and services, with their prices and VAT rates.
Saved items (the catalog in the API) fill in an invoice line's name, price and VAT rate. Prices exclude VAT.
- Set
is_variable: truefor work priced job by job; the price is then set on each invoice. - Editing or deleting an item never changes invoices that already use it.
List catalog items, or get one by id
GET
/v1/catalogquery searches name and description.
Needs the catalog:read permission
Query parameters
iditem idcatalog_
querytextUp to 200 characters
limitnumber1–50, default 20
afteritem idcatalog_
beforeitem idcatalog_
Request
curl https://api.zulu.ie/v1/catalog \
-H "Authorization: Bearer $ZULU_API_KEY" \
-H "Zulu-Business-Id: $ZULU_BUSINESS_ID"Example response200
Response · 200
{
"data": [
{
"id": "catalog_5d4c3b2a-1f0e-4d9c-8b7a-6f5e4d3c2b1a",
"created_at": "2026-10-27T09:30:00.000Z",
"updated_at": "2026-10-27T09:30:00.000Z",
"name": "Main",
"category": "product",
"description": null,
"unit_price": "120.00",
"is_variable": false,
"vat_id": "vat_1a2b3c4d-5e6f-4a7b-8c9d-0e1f2a3b4c5d"
}
],
"has_more": false
}Create a catalog item
POST
/v1/catalogvat_id must be a VAT rate in the same business.
Needs the catalog:write permission
Body
nametextrequiredUp to 200 characters
category"product" or "service"requireddescriptiontextUp to 2,000 characters
unit_pricemoneyDecimal string, up to 2 places, e.g. "12.50"
is_variabletrue or falsevat_idVAT rate id
Request
curl -X POST https://api.zulu.ie/v1/catalog \
-H "Authorization: Bearer $ZULU_API_KEY" \
-H "Zulu-Business-Id: $ZULU_BUSINESS_ID" \
-H "Content-Type: application/json" \
-d '{
"name": "Fitted oak shelving",
"category": "product",
"description": "Per metre, fitted on site",
"unit_price": "725.00",
"vat_id": "vat_1a2b3c4d-5e6f-4a7b-8c9d-0e1f2a3b4c5d"
}'Example response201
Response · 201
{
"id": "catalog_5d4c3b2a-1f0e-4d9c-8b7a-6f5e4d3c2b1a",
"created_at": "2026-10-27T09:30:00.000Z",
"updated_at": "2026-10-27T09:30:00.000Z",
"name": "Main",
"category": "product",
"description": null,
"unit_price": "120.00",
"is_variable": false,
"vat_id": "vat_1a2b3c4d-5e6f-4a7b-8c9d-0e1f2a3b4c5d"
}Update a catalog item
PATCH
/v1/catalogNeeds the catalog:write permission
Body
iditem idrequirednametextUp to 200 characters
category"product" or "service"descriptiontextUp to 2,000 characters
unit_pricemoneyDecimal string, up to 2 places, e.g. "12.50"
is_variabletrue or falsevat_idVAT rate id
Request
curl -X PATCH https://api.zulu.ie/v1/catalog \
-H "Authorization: Bearer $ZULU_API_KEY" \
-H "Zulu-Business-Id: $ZULU_BUSINESS_ID" \
-H "Content-Type: application/json" \
-d '{
"id": "catalog_5d4c3b2a-1f0e-4d9c-8b7a-6f5e4d3c2b1a"
}'Example response200
Response · 200
{
"id": "catalog_5d4c3b2a-1f0e-4d9c-8b7a-6f5e4d3c2b1a",
"created_at": "2026-10-27T09:30:00.000Z",
"updated_at": "2026-10-27T09:30:00.000Z",
"name": "Main",
"category": "product",
"description": null,
"unit_price": "120.00",
"is_variable": false,
"vat_id": "vat_1a2b3c4d-5e6f-4a7b-8c9d-0e1f2a3b4c5d"
}Delete a catalog item
DELETE
/v1/catalogNeeds the catalog:delete permission
Body
iditem idrequired
Request
curl -X DELETE https://api.zulu.ie/v1/catalog \
-H "Authorization: Bearer $ZULU_API_KEY" \
-H "Zulu-Business-Id: $ZULU_BUSINESS_ID" \
-H "Content-Type: application/json" \
-d '{
"id": "catalog_5d4c3b2a-1f0e-4d9c-8b7a-6f5e4d3c2b1a"
}'Returns 204 with no body.