Get one menu
The complete menu as one document: categories -> items -> modifier groups -> modifier options.
storeId absent -> base prices, availability flags OMITTED. storeId present -> prices resolve for that storefront's location (see Menu on pricing), and availability flags reflect the storefront's live stock.
Scope: a menu whose brand this organization owns, OR that this organization has assigned to one of its own storefronts. An unknown or foreign menuId is 404 — indistinguishable by design, same as every other directory/menu read on this API.
Safe to retry: this operation is read-only and idempotent.
Request
- menuIdstring
The menu to fetch. Required — an absent value is
404. A menu that does not exist and one outside your organization's scope (neither its brand is yours nor is it assigned to one of your storefronts) are the same404, indistinguishably. - storeIdstring
Optional storefront context: when provided, prices and availability resolve for this storefront; otherwise base prices are returned and availability flags are OMITTED (never defaulted to
false).
{
"menuId": "00000000-0000-0000-0000-000000000000",
"storeId": "00000000-0000-0000-0000-000000000000"
}Responses
Headers
- x-mealco-tx-idstringoptional
The correlation id for this call, echoed on every response — a 200 exactly as much as a 400, 401 or 500. Quote it when reporting a problem and we can find every log line for the request, in every service it touched. You may also send your own x-mealco-tx-id on the request and we adopt it, so your correlation id becomes ours. Not marked required for one reason: a request whose JSON body is malformed is rejected before it reaches an operation, so no id exists yet and that single response carries neither this header nor the txId field of the error body. Everything that reaches an operation carries it.
- menuMenu
The requested menu document. Always present on a
200; an unknown menu is a404instead.
About Menus
Menus — read a menu, publish it to the delivery platforms, and follow each publication's per-store, per-platform outcome.
publishMenu is the only write here and the only operation on this API that changes what guests see on live DoorDash, Uber Eats and Grubhub storefronts. There is no unpublish.
Every operation is scoped to the organization your API key belongs to. An id that does not exist and one that belongs to another organization are the same 404, indistinguishably — and on publishMenu a menu or store outside your organization is rejected before anything is published.
Retries create a second publication. publishMenu does not replay a previous result: a retried call creates a new publication with its own publicationId and re-submits to the platforms. That changes no content — a publication is a full replace of the same saved menu — but it doubles platform traffic. Treat a timeout as "may have succeeded" and check fetchMenuPublications before retrying.