Fetch the menu tree (store-level or business-level)
Returns a 4-level menu tree (sections → categories → items → modifier groups → modifiers) scoped to your credential’s business. Two modes, selected by whether you supply the store coordinates:
Store-level (brand_id + branch_id both present)
Returns the per-store snapshot served from the cached
store_full_menus blob. Reflects every per-store override
written via zoneStores plus the latest
publishMenu. This is the same
payload klikit ships to aggregator marketplaces.
The envelope is data.menu.branchInfo + data.menu.sections[].
Each section / category / item carries fields like
isAvailable, stockEnabled, attachedWithStore derived
from the store’s overrides.
Business-level (brand_id and branch_id both omitted)
Returns the business-level tree with no store overrides applied —
the raw shape sitting in the sections / categories / items / modifier_groups tables before any store has populated.
partner-api assembles this on the fly by walking the four list endpoints in parallel and joining them client-side, so the payload is a superset of what those endpoints return:
listSectionsfor the top of the tree (each section carrieslinkedCategories[]ids).listCategoriessupplies the category records.listItemssupplies items (top-level- modifier options — modifier options are items with
onlyModifier: true).
- modifier options — modifier options are items with
listModifierGroupssupplies the MG records.
The envelope is data.menu.businessInfo + data.menu.sections[].
Store-specific fields (isAvailable, attachedWithStore, …)
are absent because there’s no store context.
Errors
- Passing only one of
brand_id/branch_idreturns400 request_invalid. Either both together (store mode) or neither (business mode). - Store-mode 404 when
(brand_id, branch_id)doesn’t resolve to one of your business’s stores.
Both modes use the same menus:read scope.
Authorizations
Authorization: Basic base64(partner_key:secret_key).
Credentials are issued by a klikit operator. The plaintext
secret_key is shown once at issuance and cannot be retrieved
later — store it securely. If lost, ask your operator to rotate
the secret to receive a new one. The old secret stops working
immediately on rotation; there is no overlap window.
Query Parameters
Brand id of the target store. Required when branch_id is
also passed. Omit (along with branch_id) to read the
business-level tree.
x >= 1Branch id of the target store. Required when brand_id is
also passed. Omit (along with brand_id) to read the
business-level tree.
x >= 1Optional IANA timezone used to compute availability flags.
"Asia/Singapore"
Response
Menu tree. The example below is one section / one category / one item sliced verbatim from a prod store-mode response (brand 5297, branch 1293). Business-mode responses share the same shape and key names but with a much larger tree (no trimming applied server-side); the full payload weighs in at several MB on real businesses, so partners should expect to stream-parse if pulling business mode.
The data.menu payload is a recursive tree:
On the wire the modifier-group key is groups; modifier options
are under modifiers. A modifier (option) carries the same
shape as a regular item — id, title, price, visibilities,
image, plus its own groups array, so combos like
pizza → size → toppings nest naturally. Map your SKUs to the
id you see at each level.
Most fields are language maps keyed by locale code ({"en": "...", "id": "..."})
so the same payload serves multiple storefronts.
"req_4d1b7e3f-..."
Endpoint-specific payload on success.
Machine-readable error code + human message. The code is stable
across releases — switch on code in your client code rather
than parsing the message text.
Common codes you will encounter as a partner: