List Menu Categories & Items

Retrieves the menu for a location as a paginated set of categories, each containing its items. Use this endpoint to render an ordering interface, populate a kiosk, or synchronize menu data with an external system.

Request Headers

HeaderRequiredDescription
AuthorizationYesBearer YOUR_ACCESS_TOKEN

Request Parameters

Path Parameters

ParameterTypeRequiredDescription
location_idstringYesIdentifier of the location whose menu is read

Query Parameters

ParameterTypeRequiredDescription
global_on_idintegerYesIdentifier of the originating ordering channel. Required for menu requests.
user_idintegerYesIdentifier of the user making the request.
limitintegerNoMaximum number of categories returned per page.

Request Example

cURL Example

curl --request GET \
  --url "https://sandbox-api.softpoint.io/interface/v1/locations/YOUR_LOCATION_ID/app/menu/categories?global_on_id=16&user_id=7&limit=1" \
  --header "Authorization: Bearer YOUR_ACCESS_TOKEN"

Success Response

The response is paginated. The _links object provides navigation, pagination metadata describes the result set, and data contains the categories with their embedded items. The example below is trimmed to a single category and item for brevity.

{
  "_links": {
    "self": { "href": ".../app/menu/categories?page=1" },
    "first": { "href": ".../app/menu/categories?page=1" },
    "last": { "href": ".../app/menu/categories?page=98" },
    "next": { "href": ".../app/menu/categories?page=2" }
  },
  "page_count": 98,
  "page_size": 1,
  "total_items": 98,
  "page": 1,
  "data": [
    {
      "id": 200617,
      "id_external": "f10",
      "name": "OTHER SIDES",
      "is_menu": 1,
      "start_time": "00:00",
      "end_time": "00:00",
      "_embedded": {
        "categories": [],
        "items": [
          {
            "id": 1935001,
            "id_external": "11601",
            "name": "MASH POT (SD)",
            "price_per_unit": 379,
            "available_86": 1,
            "um": "unit",
            "units_per_pack": 1,
            "sales_category_id": 7493,
            "pos": 1,
            "olo": 1,
            "kiosk": 1,
            "status": 1
          }
        ]
      }
    }
  ]
}

Response Fields

FieldTypeDescription
_linksobjectHAL navigation links for pagination (self, first, last, next).
page_countintegerTotal number of pages available.
page_sizeintegerNumber of categories per page.
total_itemsintegerTotal number of categories across all pages.
pageintegerThe current page number.
dataarrayCategories returned for the current page.
data[].idintegerInternal category identifier.
data[].id_externalstringExternal category identifier.
data[].namestringCategory name.
data[].is_menuintegerIndicates whether the category represents a menu.
data[].start_timestringTime the category becomes available.
data[].end_timestringTime the category stops being available.
data[]._embedded.categoriesarrayNested subcategories, when present.
data[]._embedded.itemsarrayItems belonging to the category.
items[].idintegerInternal item identifier.
items[].id_externalstringExternal item identifier.
items[].namestringItem name.
items[].price_per_unitintegerItem price, in minor units (cents).
items[].available_86integerAvailability flag. 1 indicates available; 0 indicates 86'd (out).
items[].umstringUnit of measure.
items[].units_per_packintegerUnits contained per pack.
items[].pos / olo / kioskintegerChannel availability flags for point of sale, online, and kiosk.
items[].statusintegerItem status. 1 indicates active.

Error Responses

Missing Channel Identifier

Returned when global_on_id is omitted.

{
  "error": {
    "code": 10189,
    "message": "Invalid global on id.",
    "details": {
      "error": "The parameter global_on_id is required"
    }
  }
}

Status Codes

CodeDescription
200Menu retrieved successfully.
401Missing or invalid access token, or missing required channel identifier.

Workflow Placement

This is the entry point of the ordering flow:

  1. List menu categories and items.

  2. Retrieve item details as needed.

  3. Price the cart.

  4. Submit the order.

Notes

  • The response can be large. Use the limit query parameter and follow the next link to paginate.

  • Prices are expressed in minor units (cents).

  • The available_86 flag reflects real-time item availability and should be checked before offering an item.

Common Mistakes

  • Omitting global_on_id, which results in error code 10189.

  • Assuming a single response contains the entire menu rather than paginating through all pages.

  • Displaying items where available_86 is 0 or status is not active.

Query Params
integer
integer
integer
Responses

Language
Credentials
Bearer
LoadingLoading…
Response
Click Try It! to start a request and see the response here! Or choose an example:
application/json