The Caterease API gives your software secure, live access to your own Caterease data: events, menus, clients, staff and more. Use it to feed reports and dashboards, sync with other systems, or build your own tools on top of Caterease.
Your software asks for data over HTTPS with your key, and the API answers in JSON straight from your Caterease database.
A first call looks like this:
curl "https://caterease.app/v1/events?limit=50" -H "X-API-Key: <your key>"
Every key can read 62 kinds of Caterease records. The reference docs list every field.
| Area | What you get |
|---|---|
| Events | Events and their functions, order lines, required items, timelines, checklists, attached files and documents |
| Money | Event financials (subtotal, tax, total, paid, balance due), payments, tax schedules, surcharge tax rates |
| Clients | Accounts, contacts and the links between them; web inquiries |
| Menus and costing | Menus, menu items with their names, descriptions and prices, modifiers, recipes, ingredients, units, vendors, item pictures |
| Staff | Employees, positions, shifts, staffing assignments, availability |
| Venues | Sites, venue locations, rooms, room blocks, room setups |
| Settings | Locations, company details, your custom field labels, pick lists, print templates |
A key is read-only unless write access is enabled for it, one area at a time. Each area is its own permission on the key and reaches only its own records.
| Write access | What your software can do |
|---|---|
| CRM write | Create, update and delete accounts and contacts, and link contacts to accounts |
| Catalog write | Create, update and delete menu items and ingredients, and edit menu-item recipes |
| Inquiry intake | Send web inquiries into Caterease, where your staff review them before they become events |
Caterease assigns record numbers on every create, the same way it does for your staff. Not offered through the API: creating events or orders, and posting payments.
?fields=, so responses stay small.A key can only ever reach its own business's data, and only the parts you allowed.
To keep your own copy of Caterease data current, read only what changed instead of re-reading everything on a loop. A loop that re-reads unchanged data is the usual reason a key is refused with 429.
?modifiedSince=. Pass the largest last-modified time you received on your previous pass, exactly as you received it, never your own clock. On /v1/events, /v1/accounts, /v1/contacts, /v1/bookings, /v1/payments and /v1/financials that is updatedAt. On the Caterease record lists (/v1/event, /v1/subevent, /v1/foodserv, /v1/menuitem and others) it is Revised, and only lists that have a Revised field accept it; the others ignore it and return every record. The reference docs list modifiedSince on each list that takes it./v1/events/{id}/bundle takes no modifiedSince: list /v1/events?modifiedSince= and fetch bundles for those events. A change to one of an event's bookings or payments may not move the event's own updatedAt, so sync /v1/bookings and /v1/payments with ?modifiedSince= as well.429, 409 or 503, wait the Retry-After seconds before trying again.includeTotal counts every matching record a second time. A list is complete when nextCursor comes back null.A key that sends more requests in a minute than its limit gets 429 RATE_LIMITED. Its error.details gives limitPerMinute, observedPerMinute (both counted on the server that answered, so your total rate is higher) and retryAfterSeconds.
Send your key in the X-API-Key header (or as a Bearer token); responses are JSON. Every endpoint is documented at caterease.app/docs.