> ## Documentation Index
> Fetch the complete documentation index at: https://docs.launchmystore.io/llms.txt
> Use this file to discover all available pages before exploring further.

# List Menus

> Retrieve a list of navigation menus

# List Menus

Returns the navigation menus (link lists) in the store.

## Request

```bash theme={null}
curl -X GET "https://api.launchmystore.io/api/v1/menus.json" \
  -H "Authorization: Bearer YOUR_ACCESS_TOKEN"
```

## Parameters

This endpoint returns every menu for the store in a single response. It does not currently accept pagination or filter parameters.

## Response

Responses use the standard envelope (`status`, `state`, `message`, `data`, `count`, `pagination`). The menus are returned as a flat array under `data.menus`.

<ResponseField name="status" type="integer">
  HTTP status code (`200` on success)
</ResponseField>

<ResponseField name="state" type="string">
  Result state, e.g. `success`
</ResponseField>

<ResponseField name="message" type="string">
  Human-readable message, or `null`
</ResponseField>

<ResponseField name="data" type="object">
  Wrapper object containing the menus array

  <Expandable title="data.menus[]">
    <ResponseField name="menuId" type="string">
      Unique menu ID (UUID)
    </ResponseField>

    <ResponseField name="name" type="string">
      Menu name
    </ResponseField>

    <ResponseField name="handle" type="string">
      URL-safe menu handle
    </ResponseField>

    <ResponseField name="menuType" type="string">
      Where the menu is used (e.g. `header`, `footer`)
    </ResponseField>

    <ResponseField name="menuItemType" type="string">
      Item resource type (e.g. `page`, `product`, `category`, `customized`)
    </ResponseField>

    <ResponseField name="url" type="string">
      Destination URL for this menu item
    </ResponseField>

    <ResponseField name="child" type="array">
      Array of nested child menu-item objects (stored as JSON)
    </ResponseField>

    <ResponseField name="parentId" type="string">
      Parent menu ID, or `null` for top-level items
    </ResponseField>

    <ResponseField name="order" type="integer">
      Sort order within its level
    </ResponseField>

    <ResponseField name="createdAt" type="string">
      Creation timestamp (ISO 8601)
    </ResponseField>

    <ResponseField name="updatedAt" type="string">
      Last update timestamp (ISO 8601)
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="count" type="integer">
  Result count metadata; `null` for this endpoint
</ResponseField>

<ResponseField name="pagination" type="object">
  Pagination metadata; `null` for this endpoint
</ResponseField>

## Example Response

```json theme={null}
{
  "status": 200,
  "state": "success",
  "message": null,
  "data": {
    "menus": [
      {
        "menuId": "a1b2c3d4-0001-4e5f-8a9b-0c1d2e3f4a5b",
        "name": "Home",
        "handle": "home",
        "menuType": "header",
        "menuItemType": "customized",
        "url": "/",
        "child": [],
        "parentId": null,
        "order": 1,
        "createdAt": "2024-01-01T10:00:00.000Z",
        "updatedAt": "2024-03-15T14:30:00.000Z"
      },
      {
        "menuId": "a1b2c3d4-0002-4e5f-8a9b-0c1d2e3f4a5b",
        "name": "Contact",
        "handle": "contact",
        "menuType": "footer",
        "menuItemType": "page",
        "url": "/pages/contact",
        "child": [],
        "parentId": null,
        "order": 2,
        "createdAt": "2024-01-01T10:00:00.000Z",
        "updatedAt": "2024-02-10T09:00:00.000Z"
      }
    ]
  },
  "count": null,
  "pagination": null
}
```

## Error Codes

| HTTP Status | Description                           |
| ----------- | ------------------------------------- |
| `401`       | Invalid or missing access token       |
| `403`       | App doesn't have `read_content` scope |
