Skip to content

Your First Request

This page walks through the simplest available GET endpoint, GET /v1/third-party/menu/, end to end: request, headers, and the full response shape.

Method GET
Path /v1/third-party/menu/
Auth required Yes — X-API-Key / X-API-Secret
Path/query parameters None — the tenant is resolved from your credential.

This returns the same dish data RestroLab staff see internally (category, kitchen, sub-menu, menu set, tax settings, price variants, add-ons), with one deliberate exception: ingredients is always omitted, since it would otherwise leak internal staff and supplier data.

Terminal window
curl https://api.restrolab.com/v1/third-party/menu/ \
-H "X-API-Key: YOUR_API_KEY" \
-H "X-API-Secret: YOUR_API_SECRET"
const response = await fetch('https://api.restrolab.com/v1/third-party/menu/', {
headers: {
'X-API-Key': 'YOUR_API_KEY',
'X-API-Secret': 'YOUR_API_SECRET',
},
});
if (!response.ok) {
throw new Error(`Request failed: ${response.status}`);
}
const dishes = await response.json();
console.log(dishes);
import requests
response = requests.get(
"https://api.restrolab.com/v1/third-party/menu/",
headers={"X-API-Key": "YOUR_API_KEY", "X-API-Secret": "YOUR_API_SECRET"},
)
response.raise_for_status()
print(response.json())

A successful call returns 200 OK with a paginated response whose results contain dishes matching the ThirdPartyDish schema in openapi.json (see Pagination). Field values below are illustrative; the field names and types are taken directly from the schema:

[
{
"id": "b3f1e2c0-9d3e-4a2b-8f1a-1234567890ab",
"name": "Margherita Pizza",
"description": "San Marzano tomato, fresh mozzarella, basil.",
"sku": "PIZZA-MARG-01",
"dish_type": "veg",
"price": "9.99",
"currency": "USD",
"is_active": true,
"is_taxable": true,
"extra_tax_percentage": "0.00",
"image": null,
"category": {
"id": "8a1e2b3c-4d5e-6f70-8192-a3b4c5d6e7f8",
"name": "Pizza",
"dish_count": "12"
},
"sub_menu": {
"id": "1a2b3c4d-5e6f-7081-92a3-b4c5d6e7f8a9",
"name": "Dinner Menu",
"is_active": true
},
"kitchen": {
"id": "2b3c4d5e-6f70-8192-a3b4-c5d6e7f8a9b0",
"name": "Main Kitchen"
},
"menu_set": {
"id": "3c4d5e6f-7081-92a3-b4c5-d6e7f8a9b0c1",
"name": "All Day",
"service": "dine_in",
"status": "unused"
},
"price_variants": [
{ "id": "4d5e6f70-8192-a3b4-c5d6-e7f8a9b0c1d2", "name": "Regular", "price": "9.99", "currency": "USD" },
{ "id": "5e6f7081-92a3-b4c5-d6e7-f8a9b0c1d2e3", "name": "Large", "price": "13.99", "currency": "USD" }
],
"addons": []
}
]
Field Type Description
id uuid Internal identifier for the dish.
sku string The dish’s own SKU — echo this back as item_id when placing an order. See Your First Order in the API Reference.
name, description string Display fields.
dish_type enum One of veg, non_veg, halal, vegan, gluten_free, sugar_free (or blank/null).
price, currency string Base price and currency.
price_variants array Alternate sizes/prices for the same dish.
addons array Available add-ons for this dish (see ThirdPartyAddOn in the API Reference).
category, sub_menu, kitchen, menu_set object Nested classification objects — full shape in the API Reference.
  • Place your first order with POST /v1/third-party/orders/, echoing a dish’s sku back as item_id — full request/response schemas in the API Reference.
  • Learn why list endpoints return the full array at once in Pagination.
  • Learn what error responses look like in Error Handling.