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/venuesList 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}/menuThe 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_centsintegeroptional | New price in cents (never negative). |
is_availablebooleanoptional | false = 86'd — hidden from ordering until re-enabled. |
descriptionstringoptional | Item description, up to 400 characters. |
dietary_tagsstring[]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 itemBuilt 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}/ordersTakeout & delivery orders, newest first. Requires
orders:read.sincetimestampoptional | Only orders created at/after this ISO-8601 time. |
statusstringoptional | open, paid or void. |
order_typestringoptional | takeout or delivery. |
limitintegeroptional | 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.