Documentation
Build your first ordering cart.
MealMe is a general restaurant and grocery ordering API. Square Restaurants and Kroger Grocery are supported in the developer flow.
Welcome
MealMe turns app users into merchant carts.
Your app owns the product experience. MealMe owns the ordering integration layer. For an app with 100K users, your backend keeps one MealMe API key and passes a unique externalCustomerId for each customer.
Quickstart
Five calls to a cart.
Sign up in the console and create your first API key. No card is required for the first 3 test orders.
Search supported merchant locations with providerId and merchantType. Empty geo searches can return all merchant types.
Search menu items or grocery products by ingredient, UPC, or query.
Create a cart with providerId, locationId, and externalCustomerId.
Add items and create a checkout link. Kroger prompts OAuth if that customer is not connected.
curl 'http://localhost:3000/api/stores/search?providerId=square&merchantType=restaurant&latitude=30.2672&longitude=-97.7431&limit=5' \ -H 'Authorization: Bearer mm_live_...'
curl 'http://localhost:3000/api/stores/search?providerId=kroger&zipCode=45202&limit=5' \ -H 'Authorization: Bearer mm_live_...'
curl -X POST 'http://localhost:3000/api/carts' \
-H 'Authorization: Bearer mm_live_...' \
-H 'Content-Type: application/json' \
-d '{
"providerId": "kroger",
"externalCustomerId": "app-user-123",
"locationId": "kroger_location_id"
}'Authentication
Use bearer tokens.
All API requests use a MealMe API key in the Authorization header.
Authorization: Bearer mm_sandbox_... Authorization: Bearer mm_live_...
Live keys use real supported merchant APIs. Sandbox keys return fixtures. Both environments are available for the first 3 test orders, the card-backed 24-hour trial, and active paid subscriptions.
Customer OAuth
Each user connects their own merchant account.
Never share one merchant account across all customers. For user 123, call MealMe with externalCustomerId user_123. For user 456, call MealMe with externalCustomerId user_456. For Kroger today, MealMe stores Kroger tokens by developer account and externalCustomerId.
Kroger redirects through MealMe, not through each developer app. MealMe owns the registered Kroger callback, stores the token for the developer and externalCustomerId, then sends the customer back to the developer app using redirectAfter.
POST /api/kroger/oauth/start
Authorization: Bearer mm_live_...
{
"externalCustomerId": "app-user-123",
"redirectAfter": "https://yourapp.example/kroger/connected"
}Store and catalog search can run before OAuth. Live cart writes require merchant auth because carts belong to customers.
Supported merchants
Square Restaurants and Kroger Grocery.
The MealMe API is designed for restaurant and grocery ordering. Use providerId square for the Square/Cash App restaurant flow and providerId kroger for grocery. Keep your code provider-aware so more restaurants and grocers can be added without changing your app flow.
Square checkout uses the Cash App MCP create-cart tool. MealMe passes the restaurant unitToken and CALI_ menu item IDs, then returns the real cash.app checkout URL from the MCP response.
API Reference
Endpoints
/api/providersSupported merchant discovery for Square Restaurants and Kroger Grocery./api/stores/searchSearch supported merchant locations by ZIP or coordinates. Supports merchantType restaurant or grocery./api/catalog/searchSearch products or menu items for a location./api/cartsCreate a cart for an externalCustomerId./api/carts/:cartId/itemsAdd an item. Grocery carts may ask the customer to connect their store account./api/carts/:cartId/checkoutReturn the merchant checkout link for Square or Kroger.Billing
Three free test orders, then a 24-hour trial.
New accounts can create an API key and complete three checkout link tests before adding a card. After those successful test runs, API requests require adding a card to start the 24-hour trial. The $250/month full-access subscription starts after that trial unless canceled.
Cart states
Customer login when a grocery cart needs it.
Restaurant checkout can usually create the checkout link directly. Grocery carts belong to a shopper's store account, so MealMe may return an action for your app to open a customer login popup. After the customer returns, retry the cart write and create the checkout link.
