Skip to main content
The public Storefront API is rooted at:
Published merchant, location, menu, and product reads are anonymous. A new ordering session returns a cart capability. Send that capability only in X-Cart-Token for the matching cart, use the current ETag in If-Match for mutations, and give every write an Idempotency-Key. Signed-in customer resources use Authorization: Bearer <customer-jwt>.

Fetch a published menu

Start an ordering session

The optional marketplaceId is a source-attribution label such as "web" or "mobile", not a location ID. The route already supplies the location scope. Store cart.id, cartAccessToken, and cart.revision together in tab-scoped browser storage or the mobile platform’s secure storage.

Add an item

The response includes a new ETag. Use that value for the next mutation. If the API returns CART_CONFLICT, fetch the cart with the capability, update local state and revision, and require an explicit user retry.

Authentication boundaries

Do not put capabilities, JWTs, receipt tokens, or payment secrets in query strings or logs. Configure the API CORS allowlist with exact production and preview storefront origins. Explore the Storefront REST reference for endpoint schemas.