Check Availability
Step-by-step guide to querying available time slots.
Prerequisites
- Valid API key
- Experience ID (from
/external/availability/experiences)
Basic Availability Query
Request
GET /external/availability/slots?experienceId={id}&day={day}&attendees={attendees}
Parameters
experienceId(required): ID of the dining experienceday(required): Date in YYYY-MM-DD formatattendees(required): Number of guests (1-50)
Example
curl -H "Authorization: Bearer YOUR_API_KEY" \
"https://api.molzait.com/external/availability/slots?experienceId=ad5b78a02ca8-4768-bd80-487130c73856&day=2024-06-10&attendees=2"
Response
{
"slots": [
{
"restaurantId": "e54ba2b9e5f1-4568-a5e0-5998573e002a",
"experienceId": "ad5b78a02ca8-4768-bd80-487130c73856",
"day": "2024-06-10",
"minutes": 1080,
"duration": 120,
"attendees": 2,
"spotsTotal": 10,
"spotsOpen": 5,
"seated": 45,
"seatedLimit": 50,
"starting": 15,
"startingLimit": 20,
"availableAssignments": [
{
"floorPlanId": "fp_123",
"tableIds": ["2f72e7aec901-4427-9ffd-bc4fc435c431"],
"score": 0.122,
"minPartySize": 2,
"maxPartySize": 4,
"reservable": true,
"tableCategoryIds": []
}
],
"exclusionReasons": [],
"confirmationMode": "instant",
"showEndTime": true,
"paymentSettings": null
}
]
}
Advanced Options
Update Existing Reservation
When updating a reservation, exclude it from availability calculation:
curl -H "Authorization: Bearer YOUR_API_KEY" \
"https://api.molzait.com/external/availability/slots?experienceId=ad5b78a02ca8-4768-bd80-487130c73856&day=2024-06-10&attendees=2&reservationId=4a4ccb52c0bc-4be3-96cd-32accbb3e3d0"
Handling the Response
Determining Availability
A slot is available when the exclusionReasons array is empty:
const availableSlots = response.slots.filter(s => s.exclusionReasons.length === 0);
const unavailableSlots = response.slots.filter(s => s.exclusionReasons.length > 0);
Available Slots
Present available times (empty exclusionReasons) to the user for selection.
Unavailable Slots
Check exclusionReasons to provide helpful feedback:
unavailableSlots.forEach(slot => {
const time = `${Math.floor(slot.minutes / 60)}:${(slot.minutes % 60).toString().padStart(2, '0')}`;
console.log(`${time}: ${slot.exclusionReasons.join(', ')}`);
});
Best Practices
- Cache experience IDs - They rarely change
- Limit date range - Query 1-2 weeks at a time
- Handle time zones - Use ISO 8601 format
- Show loading states - Calculations may take 1-2 seconds
- Retry on failure - Implement exponential backoff
Error Handling
400 Bad Request
Invalid parameters (missing required fields, invalid date format).
401 Unauthorized
Invalid or expired API key.
404 Not Found
Experience ID doesn't exist.
500 Internal Server Error
Temporary issue - retry with backoff.