Venues, menus & orders

Read the venues a key can access, work with their menus (including price updates and 86-toggles), and pull takeout & delivery orders.

Venues

GET/partner/v1/venues
List the venues claimed by the key’s business account. Requires venue:read.
curl https://api.yusker.com/partner/v1/venues \
  -H "Authorization: Bearer $YUSKER_PARTNER_KEY"
# -> { "venues": [ { "venue_id": 601, "name": "Girl & the Goat",
#      "address": "555 W Randolph St, Chicago, IL, USA",
#      "category": "restaurant", "phone": "+1 …", "website": "https://…" } ] }

Menu

GET/partner/v1/venues/{venue_id}/menu
The venue’s structured menu: sections and items with prices in cents, availability and dietary tags. Requires menu:read.
curl https://api.yusker.com/partner/v1/venues/601/menu \
  -H "Authorization: Bearer $YUSKER_PARTNER_KEY"
# -> { "venue_id": 601,
#      "menu": { "menu_id": 12, "title": "Dinner", "status": "published" },
#      "sections": [ { "section_id": 3, "title": "Mains", "items": [
#        { "item_id": 41, "name": "Rigatoni", "description": null,
#          "price_cents": 2100, "is_available": true, "dietary_tags": [] } ] } ] }

Update a menu item

PATCH/partner/v1/venues/{venue_id}/menu/items/{item_id}
Update price, availability, description or dietary tags. Requires menu:write.
price_cents
integeroptional
New price in cents (never negative).
is_available
booleanoptional
false = 86'd — hidden from ordering until re-enabled.
description
stringoptional
Item description, up to 400 characters.
dietary_tags
string[]optional
From: halal, vegan, vegetarian, gluten-free, kosher.
curl -X PATCH https://api.yusker.com/partner/v1/venues/601/menu/items/41 \
  -H "Authorization: Bearer $YUSKER_PARTNER_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "price_cents": 2350, "is_available": false }'
# -> the updated item
Built for supplier & inventory systems
The classic integration: your inventory system 86’s an item the moment an ingredient runs out, and flips it back at delivery — no one touches the POS. Price syncs work the same way.

Orders

GET/partner/v1/venues/{venue_id}/orders
Takeout & delivery orders, newest first. Requires orders:read.
since
timestampoptional
Only orders created at/after this ISO-8601 time.
status
stringoptional
open, paid or void.
order_type
stringoptional
takeout or delivery.
limit
integeroptional
Max rows (default 50, cap 200).
GET/partner/v1/orders/{order_id}
A single order by id (must belong to the key’s account).
curl "https://api.yusker.com/partner/v1/venues/601/orders?status=open&order_type=takeout" \
  -H "Authorization: Bearer $YUSKER_PARTNER_KEY"
# -> { "orders": [ { "order_id": 5182, "venue_id": 601, "status": "open",
#      "order_type": "takeout", "subtotal_cents": 2100, "tax_cents": 273,
#      "total_cents": 2373, "currency": "CAD", "guest_label": "Sam",
#      "pickup_at": "2026-07-05T18:30:00+00:00",
#      "details": { "items": [ … ] }, "created_at": "…", "closed_at": null } ] }
Polling vs webhooks
Polling works, but order webhooks push order.created / order.updated to you in real time — use them as the primary signal and poll as reconciliation.