Storefront API
Use the read-only Storefront API to fetch a menu for a headless or custom storefront.
Request a menu
Send a POST request to:
https://megamenu.hypaapps.com/megamenubuilder/{store_hash}/{menu_code}
| Path parameter | Type | Description |
|---|---|---|
store_hash | string | Your BigCommerce store hash, such as abc123. It appears in BigCommerce admin URLs as store-abc123. |
menu_code | string | The menu code shown on the menu's Settings tab in Mega Menu Builder. |
Send this header:
Accept: application/json
info
The endpoint does not require authentication. It is read-only and returns public storefront navigation data.
For example:
curl --request POST \
--header "Accept: application/json" \
"https://megamenu.hypaapps.com/megamenubuilder/abc123/main-menu"
Response fields
A successful response contains a data array of menu items. Child items use the same structure recursively.
| Field | Type | Description |
|---|---|---|
id | number | Unique menu item ID. |
name | string | Display name. |
description | string or null | Optional supporting text. |
active | boolean | Whether the item is active. |
visibility | string | Device visibility: responsive, desktop-only or mobile-only. |
code | string | Unique item code. |
url | string | Destination URL. |
image | string | Desktop image URL, or an empty string. |
image_alt | string or null | Alternative text for the desktop image. |
mobile_image | string | Mobile image URL, or an empty string. |
mobile_image_alt | string or null | Alternative text for the mobile image. |
tags | string | Comma-separated values from the item's CSS classes field. |
has_children | boolean | Whether the item contains children. |
cols | number or null | Number of grid columns the item spans. |
rows | number or null | Number of grid rows the item spans. |
column_design | string or null | Column design applied to the item. |
wrap_content | boolean | Whether child content wraps across the layout. |
customer_groups | number[] | Customer group IDs that can see the item. |
new_tab | boolean | Whether the link opens in a new tab. |
children | MenuItem[] | Nested child menu items. |
Example response
{
"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": []
}
]
}