# Crave API Documentation
> Developer documentation for building storefronts with the Crave platform API, CLI, and SDK.
## Docs
- [Add item to cart](https://docs.cravejs.com/api-reference/carts/add-item-to-cart.md): Appends a product to the cart, merging with existing items when the configuration matches.
- [Delete cart](https://docs.cravejs.com/api-reference/carts/delete-cart.md): Deletes the cart. Use this when the shopper abandons their order.
- [Get cart](https://docs.cravejs.com/api-reference/carts/get-cart.md): Retrieves the current state of a cart, revalidating applied discounts when necessary.
- [Get recommendable products](https://docs.cravejs.com/api-reference/carts/get-recommendable-products.md): Returns up to five products not already in the cart to power “you might also like” suggestions.
- [Update cart item quantity](https://docs.cravejs.com/api-reference/carts/update-cart-item-quantity.md): Adjusts the quantity of a specific cart item or removes it when the quantity is 0.
- [Get Customer Details](https://docs.cravejs.com/api-reference/customers/get-customer-details.md): Retrieves the authenticated customer profile associated with the session JWT.
- [Login or Register Customer](https://docs.cravejs.com/api-reference/customers/login-or-register-customer.md): Initiates the OTP login or registration flow using an email address or phone number.
- [Logout Customer](https://docs.cravejs.com/api-reference/customers/logout-customer.md): Revokes the active storefront session for the authenticated customer.
- [Verify OTP](https://docs.cravejs.com/api-reference/customers/verify-otp.md): Authenticates the OTP, issues a storefront session token, and links the customer account.
- [Get location basic info](https://docs.cravejs.com/api-reference/locations/get-location-basic-info.md): Fetches core storefront data for a location using either its slug or database ID.
- [Get menus for a location](https://docs.cravejs.com/api-reference/menus/get-menus-for-a-location.md): Returns the active menus, categories, and products for the specified order date and time. Provide `orderDate` and `orderTime` to fetch the menu for a future scheduled order, or set `menuOnly=true` to fallback to the current menu.
- [Get merchant with storefront locations](https://docs.cravejs.com/api-reference/merchants/get-merchant-with-storefront-locations.md): Returns merchant metadata and enabled locations for the storefront experience.
- [Start an ordering session](https://docs.cravejs.com/api-reference/ordering-sessions/start-an-ordering-session.md): Creates or resumes a cart for the given location. The response includes the cart ID or an error message explaining why ordering is unavailable.
- [API Overview](https://docs.cravejs.com/api-reference/overview/api-overview.md): Authenticate, make requests, and handle responses from the Crave Storefront API.
- [Core Concepts](https://docs.cravejs.com/api-reference/overview/core-concepts.md): Understand the data model behind merchants, locations, menus, carts, and orders.
- [Get a product with modifier tree](https://docs.cravejs.com/api-reference/products/get-a-product-with-modifier-tree.md): Fetches product details and its modifier configuration for building a product detail page.
- [Changelog](https://docs.cravejs.com/changelog.md): Track improvements to the Crave storefront documentation and OpenAPI reference.
- [](https://docs.cravejs.com/components/cart/cart-item-row.md): Individual cart line item with modifiers, quantity control, and price.
- [](https://docs.cravejs.com/components/cart/cart-nav-button.md): Floating or header-mounted button showing cart item count and total.
- [](https://docs.cravejs.com/components/cart/cart-panel.md): Slide-out panel displaying the current cart contents and order summary.
- [](https://docs.cravejs.com/components/cart/cart-related-items.md): Upsell carousel shown in the cart suggesting complementary items.
- [](https://docs.cravejs.com/components/checkout/apply-promo-code.md): Input field for applying discount codes to an order.
- [](https://docs.cravejs.com/components/checkout/checkout-component.md): Top-level checkout orchestrator that manages the multi-step checkout flow.
- [](https://docs.cravejs.com/components/checkout/customer-details-form.md): Form for collecting customer name, email, and phone number during checkout.
- [](https://docs.cravejs.com/components/checkout/order-time-picker.md): Date and time selector for scheduling pickup or delivery orders.
- [](https://docs.cravejs.com/components/checkout/payment-form.md): Payment input form supporting Square and Stripe payment processing.
- [](https://docs.cravejs.com/components/checkout/tip-selector.md): Preset and custom tip amount picker for the checkout flow.
- [](https://docs.cravejs.com/components/fulfillment/delivery.md): Delivery address form with validation and delivery zone checking.
- [](https://docs.cravejs.com/components/fulfillment/fulfilment-method-handler.md): Route-level handler that renders the appropriate fulfillment flow based on order type.
- [](https://docs.cravejs.com/components/fulfillment/room-service.md): Room number and guest name input for hotel room service ordering.
- [](https://docs.cravejs.com/components/fulfillment/table-side.md): Table number input for dine-in table-side ordering.
- [](https://docs.cravejs.com/components/menu/category-tabs.md): Sticky tab navigation for browsing menu categories.
- [ ](https://docs.cravejs.com/components/menu/item.md): Unified product card that renders vertical or horizontal layouts.
- [](https://docs.cravejs.com/components/menu/item-carousel.md): Horizontal carousel for featured or recommended menu items.
- [](https://docs.cravejs.com/components/menu/menu-switcher.md): Dropdown to switch between multiple menus with availability status.
- [](https://docs.cravejs.com/components/modifiers/item-counter-button.md): Increment/decrement stepper for adjusting item or modifier quantities.
- [](https://docs.cravejs.com/components/modifiers/modifier-group.md): Renders a group of modifier options (radio, checkbox, or counter) for product customization.
- [](https://docs.cravejs.com/components/modifiers/product-description-screen.md): Full-screen product detail view with modifiers, quantity, and add-to-cart action.
- [](https://docs.cravejs.com/components/modifiers/special-instructions.md): Text input for customer notes and special requests on a menu item.
- [Components](https://docs.cravejs.com/components/overview.md): Pre-built React components for menu browsing, cart management, checkout, and fulfillment.
- [](https://docs.cravejs.com/components/post-order/experience-rating.md): Post-order feedback widget for rating the ordering experience.
- [](https://docs.cravejs.com/components/post-order/order-confirmation.md): Post-checkout screen showing order details, status, and estimated ready time.
- [Authentication and Keys](https://docs.cravejs.com/getting-started/authentication-and-keys.md): How Storefront API authentication works and how to manage location-scoped API keys.
- [Core Concepts](https://docs.cravejs.com/getting-started/core-concepts.md): Understand the key entities and request flow used across Crave Storefront API integrations.
- [Environments and Base URLs](https://docs.cravejs.com/getting-started/environments-and-base-urls.md): Use the correct base URL and environment setup for REST and SDK integrations.
- [Errors](https://docs.cravejs.com/getting-started/errors.md): How to handle Crave API errors, retries, and user-facing fallbacks.
- [Getting Started](https://docs.cravejs.com/getting-started/getting-started.md): A practical setup checklist for launching your first Crave integration.
- [Rate Limits and Retries](https://docs.cravejs.com/getting-started/rate-limits-and-retries.md): How to handle Storefront API limits and implement safe retry behavior.
- [Welcome](https://docs.cravejs.com/getting-started/welcome.md): Build with the Crave Storefront API to power modern ordering experiences with secure, real-time data.
- [What is Crave?](https://docs.cravejs.com/getting-started/what-is-crave.md): A quick overview of the Crave storefront platform and how teams use it.
- [Accept Payments](https://docs.cravejs.com/guides/accept-payments.md): Set up Stripe integration for secure payment processing in your storefront.
- [Build a Custom Storefront](https://docs.cravejs.com/guides/build-custom-storefront.md): Combine the CLI, Storefront SDK, and REST APIs to launch a bespoke ordering experience.
- [Checkout Flow](https://docs.cravejs.com/guides/checkout-flow.md): Collect customer details, set order time, and process payment.
- [Deployment](https://docs.cravejs.com/guides/deployment.md): Deploy your Crave storefront to Vercel, Netlify, or custom hosting.
- [Display Menu](https://docs.cravejs.com/guides/display-menu.md): Fetch menus, categories, and products for a location.
- [Error Codes](https://docs.cravejs.com/guides/error-codes.md): All Crave API error codes, their meanings, and how to resolve them.
- [Manage Cart](https://docs.cravejs.com/guides/manage-cart.md): Add, update, and remove items in a Crave cart with modifier selections.
## OpenAPI Specs
- [swagger](https://api.craveup.com/swagger.json)
- [openapi](https://docs.cravejs.com/api-reference/openapi.json)