Storefront API
For custom implementations such as a headless store, we provide an API to fetch menus.
Fetch Menu Items
Endpoint
POST https://megamenu.hypaapps.com/megamenubuilder/${store_hash}/${menu_code}
Path Parameters
| Field | Type | Description | 
|---|---|---|
| store_hash | string | Your BigCommerce store identifier. Typically found in the URL of your BigCommerce admin panel (e.g. store-abc123). | 
| menu_code | string | The code for the menu. This can be found in the Settings tab when viewing a menu in the app. | 
Headers
| Header | Value | Description | 
|---|---|---|
| Accept | application/json | Required header to receive a JSON response. | 
No authentication is required on this endpoint as it is read-only and only contains public information.
Example Response (200 OK)
| Field | Type | Description | 
|---|---|---|
| data | array | A list of Menu Items | 
| data.*.id | number | The unique identifier for the menu item | 
| data.*.name | string | The display name of the menu item. | 
| data.*.description | string | The menu item description. Can be used for additional text to be displayed alongside the menu item link | 
| data.*.active | boolean | Whether the menu item is currently active/visible in navigation. | 
| data.*.visibility | string | Device visibility for the menu item. Possible values: 
 | 
| data.*.code | string | Unique code/slug used to identify the menu item. | 
| data.*.url | string | URL that the menu item links to. | 
| data.*.image | string | URL of the image shown for this menu item (if any). | 
| data.*.image_alt | string | null | Alternative text for the image. | 
| data.*.mobile_image_alt | string | null | Alternative text for the mobile image. | 
| data.*.tags | string | Optional tags associated with the menu item (comma-separated). These are classes that should be added to the menu item. These relate to the "CSS Classes" field when managing a menu item. | 
| data.*.has_children | boolean | Whether this menu item has child items. | 
| data.*.cols | number | null | Number of columns this menu item spans in a mega menu layout. | 
| data.*.rows | number | null | The number of rows that this menu item should span. Useful in CSS Grid layouts | 
| data.*.wrap_content | boolean | Whether the content of this menu item should wrap in the layout. | 
| data.*.customer_groups | number[] | List of customer group IDs that can view this menu item. | 
| data.*.new_tab | boolean | Whether the menu item link should open in a new tab. | 
| data.*.children | MenuItem[] | Child menu items nested under this menu item (recursive). | 
✅ Example Success Response
View a live response from our demo store.
{
  "data": [
    {
      id: 1234,
      name: "Outdoors",
      description: null,
      active: true,
      visibility: "responsive",
      code: "outdoors",
      url: "/outdoors.html",
      image: "",
      image_alt: null,
      mobile_image: "",
      mobile_image_alt: null,
      tags: "",
      has_children: true,
      cols: null,
      rows: null,
      column_design: null,
      wrap_content: false,
      customer_groups: [
         2,
         1
     ],
     new_tab: false,
     children: []
    }
  ]
} 
    