Skip to main content
This guide covers how to load a restaurant’s menu data and display it in your storefront — including multiple menus, category filtering, and product details.

How menus work

Every Crave location has one or more menus. Each menu contains categories, and each category links to products. The active menu depends on the current time and the location’s schedule.

Fetch location data

The location response includes basic metadata. Menu and product data comes from the ordering session and API endpoints.

Start a session to get the menu

Starting an ordering session gives you a cartId and loads the menu for the current time. The menus, categories, and products are returned as part of the location’s data model.

Display categories

Categories are used to group products (e.g., “Appetizers”, “Mains”, “Drinks”). Render them as tabs or a sidebar.

Display products

Each product includes a name, description, price, images, and modifier groups.
Crave menus are returned as structured data. You can implement client-side filtering:

Get order times

Fetch the available time slots for ASAP or scheduled orders.

Product types

The SDK exports these types for working with menu data:
TypeDescription
MenuTop-level menu with id, name, isActive, and categories
CategoryGrouping with id, name, and productIds
ProductFull product with price, images, modifiers, and nutrition
ModifierModifier group with selection rules and items
ModifierItemIndividual modifier option with price and max quantity

Next steps

Manage Cart

Add products to the cart with modifier selections.

Checkout Flow

Collect customer details and process payments.