Integrate live menu data with your PMS, website, or mobile app
Use the Menu Designer API to read live menus, venues, and related data. All requests require an API key.
https://menudesigner.ai/api/v1Send X-API-Key in every request.
curl -H "X-API-Key: md_your_api_key" \ https://menudesigner.ai/api/v1/menus
/menus — List accessible menus/menus/{menuName} — Get a specific menu/venues — List accessible venues/webhooks — List webhooks/webhooks — Create webhook/webhooks/test — Send signed test eventReceive real-time notifications when key events occur.
POST /api/v1/webhooks
Headers:
X-API-Key: md_your_key
Body:
{
"url": "https://yourapp.com/webhooks/menudesigner",
"events": ["menu.published", "menu.updated"],
"active": true
}
POST /api/v1/webhooks/test
Headers:
X-API-Key: md_your_key
Body (optional):
{
"url": "https://webhook.site/your-id",
"event": "menu.published"
}
{
"id": "evt_123",
"type": "menu.published",
"createdAt": "2025-12-26T12:00:00Z",
"companyID": "COMPANY_123",
"brand": "BRAND_1",
"venueID": "VENUE_1",
"data": {
"message": "Test webhook from Menu Designer AI"
}
}
hex(hmac_sha256(secret, timestamp + "." + rawBody))Retries: 3 attempts (30s → 2m → 10m) on non-2xx/3xx.
fetch('https://menudesigner.ai/api/v1/menus?venueID=VENUE-001', {
headers: { 'X-API-Key': 'md_key' }
}).then(res => res.json());
await fetch('https://menudesigner.ai/api/v1/menus/Dinner?venueID=REST-01&brand=Restaurants', {
headers: { 'X-API-Key': process.env.MENU_API_KEY }
});
const res = await fetch('https://menudesigner.ai/api/v1/venues', {
headers: { 'X-API-Key': API_KEY }
});
| Status | Description |
|---|---|
| 401 | Missing or invalid API key |
| 403 | Forbidden — key not allowed |
| 404 | Not found |
| 500 | Server error |
Rate limits: 1,000/hour and 10,000/day per key. Contact support for higher limits.