Versioning & changelog
Versions
- The version is in the path:
/api/v1. - Within v1 we only add: new fields, endpoints, error codes, event types and enum values. Nothing you rely on is removed or renamed.
- A breaking change ships as
/api/v2, announced in advance.
Staying compatible
- Ignore fields you don't know.
- Tolerate enum values you don't know: an order
statusortype, a loyalty eventkindorsource, a card'sjoined_viamay gain values. Show or store them as they are, or treat them as "other"; don't crash. A business'spaid_gatemay gain values too. - Treat an unknown error
codeby its HTTP status. - Don't depend on the order of fields in JSON, or on the length of ids and cursors.
Changelog
2026-11 — v1: keys and permissions; orders (list, get, summary, actions); loyalty (lookup, join, card, history, earn, redeem, void); menu (read, create, update, delete, upsert by external id, availability).
2026-11 — webhooks: /webhook-endpoints and 12 event types, signed with Standard Webhooks (see Webhooks).
2026-11 — payment before preparing: GET /business answers paid_gate (none, before_served or before_start). With before_start, the start action answers 409 payment_required until the order is marked paid. On an order with status: new and paid: false, offer mark_paid in place of Start, as the ServeU iPad does, rather than only greying Start out.
2026-11 — stock: the stock:write permission; PUT /menu/items/{id}/stock, PUT /menu/items/by-external-id/{externalId}/stock and POST /stock (up to 100 rows); stock and stock_updated_at on each item's branches; the stock.changed and stock.depleted events (see Sync stock).