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 status or type, a loyalty event kind or source, a card's joined_via may gain values. Show or store them as they are, or treat them as "other"; don't crash. A business's paid_gate may gain values too.
  • Treat an unknown error code by 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).

Next: Give loyalty from your POS →