YumKiosk YumKiosk Docs
Website Agent login Owner panel
API Reference

Menu API

Read the menu catalog (items, categories, modifiers) via the public API.

Menu API

The Menu API exposes a read-only view of your kiosk menu catalog — categories, items, prices, modifiers, and inventory. It is intended for website syncs, loyalty apps, and any integration that needs the same menu the kiosks display. All endpoints live under /api/v1/menu and require a Sanctum token (see API Authentication).

List menu items

GET /api/v1/menu/items
Authorization: Bearer <token>

Query parameters

Param Type Default Description
active_only bool true Hide inactive items
category_id int Return only items in this category

Response

{
  "data": [
    {
      "id": 14,
      "category_id": 3,
      "category_name": "Burgers",
      "name": "Double cheeseburger",
      "slug": "double-cheeseburger",
      "description": "Two patties, American cheese, pickles.",
      "image": "https://...",
      "price": 8.50,
      "is_featured": true,
      "is_active": true,
      "inventory_count": 42,
      "low_stock_threshold": 10,
      "prep_time_minutes": 7,
      "options": [
        { "id": 3, "name": "Bacon", "price": 1.50 },
        { "id": 7, "name": "Extra cheese", "price": 0.75 }
      ]
    }
  ]
}

The inventory_count field is null for items that do not track inventory (most do not — only items with limited daily supply opt in). The low_stock_threshold is the count at which a inventory.low webhook fires.

List categories

GET /api/v1/menu/categories
Authorization: Bearer <token>

Returns only active categories. The items_count field is a live count of menu items in each category.

{
  "data": [
    {
      "id": 3,
      "name": "Burgers",
      "slug": "burgers",
      "description": "Flame-grilled, never frozen.",
      "image": "https://...",
      "sort_order": 2,
      "is_active": true,
      "items_count": 12
    }
  ]
}

Caching

Menu data changes rarely. It is safe to cache responses from these endpoints for minutes at a time. For strict consistency, subscribe to the menu.updated webhook (coming soon) instead of polling.

Modifying the menu

There are no write endpoints in the public Menu API — menu edits happen in the owner panel. This is deliberate: the Filament admin does menu validation, slug generation, image uploading, and activity logging, and exposing those paths over JSON would bypass all of it. A future v2 write API is on the roadmap.