Skip to main content

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 experience
  • day (required): Date in YYYY-MM-DD format
  • attendees (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​

  1. Cache experience IDs - They rarely change
  2. Limit date range - Query 1-2 weeks at a time
  3. Handle time zones - Use ISO 8601 format
  4. Show loading states - Calculations may take 1-2 seconds
  5. 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.

Next Steps​