Availability defines when a user can be booked. It consists of a weekly recurring schedule with optional date-based exceptions for holidays or custom hours.
Availability Structure
| Component | Description |
|---|
| Weekly Schedule | Recurring hours for each day of the week |
| Timezone | All times are interpreted in this timezone |
| Exceptions | Date-specific overrides (holidays, special hours) |
Default Availability
When you create a user without specifying availability, meetergo creates a default schedule:
- Monday-Friday: 9:00-17:00
- Saturday-Sunday: Unavailable
- Timezone: User’s specified timezone
Get User Availability
curl -X GET "https://api.meetergo.com/v4/availability/{availabilityId}" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "x-meetergo-api-user-id: {userId}"
Response
{
"id": "660e8400-e29b-41d4-a716-446655440001",
"name": "Business Hours",
"timezone": "Europe/Berlin",
"schedule": [
{
"dayOfWeek": "monday",
"intervals": [
{ "from": "09:00", "to": "12:00" },
{ "from": "13:00", "to": "17:00" }
]
},
{
"dayOfWeek": "tuesday",
"intervals": [{ "from": "09:00", "to": "17:00" }]
},
{
"dayOfWeek": "wednesday",
"intervals": [{ "from": "09:00", "to": "17:00" }]
},
{
"dayOfWeek": "thursday",
"intervals": [{ "from": "09:00", "to": "17:00" }]
},
{
"dayOfWeek": "friday",
"intervals": [{ "from": "09:00", "to": "15:00" }]
}
]
}
Update Availability
curl -X PATCH "https://api.meetergo.com/v4/availability/{availabilityId}" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "x-meetergo-api-user-id: {userId}" \
-H "Content-Type: application/json" \
-d '{
"schedule": [
{
"dayOfWeek": "monday",
"intervals": [{ "from": "10:00", "to": "18:00" }]
},
{
"dayOfWeek": "tuesday",
"intervals": [{ "from": "10:00", "to": "18:00" }]
},
{
"dayOfWeek": "wednesday",
"intervals": [{ "from": "10:00", "to": "18:00" }]
},
{
"dayOfWeek": "thursday",
"intervals": [{ "from": "10:00", "to": "18:00" }]
},
{
"dayOfWeek": "friday",
"intervals": [{ "from": "10:00", "to": "16:00" }]
}
]
}'
Day of Week Values
| Value | Day |
|---|
monday | Monday |
tuesday | Tuesday |
wednesday | Wednesday |
thursday | Thursday |
friday | Friday |
saturday | Saturday |
sunday | Sunday |
Times use 24-hour format: HH:MM
| Example | Meaning |
|---|
09:00 | 9:00 AM |
13:30 | 1:30 PM |
17:00 | 5:00 PM |
23:59 | 11:59 PM |
Multiple Intervals Per Day
Support lunch breaks or split schedules:
{
"dayOfWeek": "monday",
"intervals": [
{ "from": "09:00", "to": "12:00" },
{ "from": "13:00", "to": "17:00" }
]
}
Common Patterns
Standard Business Hours
{
"schedule": [
{ "dayOfWeek": "monday", "intervals": [{ "from": "09:00", "to": "17:00" }] },
{ "dayOfWeek": "tuesday", "intervals": [{ "from": "09:00", "to": "17:00" }] },
{ "dayOfWeek": "wednesday", "intervals": [{ "from": "09:00", "to": "17:00" }] },
{ "dayOfWeek": "thursday", "intervals": [{ "from": "09:00", "to": "17:00" }] },
{ "dayOfWeek": "friday", "intervals": [{ "from": "09:00", "to": "17:00" }] }
]
}
With Lunch Break
{
"schedule": [
{
"dayOfWeek": "monday",
"intervals": [
{ "from": "09:00", "to": "12:00" },
{ "from": "13:00", "to": "17:00" }
]
}
]
}
Extended Evening Hours
{
"schedule": [
{ "dayOfWeek": "monday", "intervals": [{ "from": "10:00", "to": "20:00" }] },
{ "dayOfWeek": "tuesday", "intervals": [{ "from": "10:00", "to": "20:00" }] }
]
}
Weekend Availability
{
"schedule": [
{ "dayOfWeek": "saturday", "intervals": [{ "from": "10:00", "to": "14:00" }] },
{ "dayOfWeek": "sunday", "intervals": [{ "from": "10:00", "to": "14:00" }] }
]
}
Bookable Windows
Once availability is set, query available booking slots:
curl -X GET "https://api.meetergo.com/v4/user/{userId}/bookable-windows?startDate=2024-01-15&endDate=2024-01-20" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "x-meetergo-api-user-id: {userId}"
The API returns slots based on:
- Availability schedule - User’s weekly hours
- Existing bookings - Slots already booked are excluded
- Meeting type duration - Slots fit the meeting length
- Buffer times - Meeting type buffers are respected
- Calendar integrations - Connected calendars block time
Response
{
"windows": [
"2024-01-15T09:00:00Z",
"2024-01-15T09:30:00Z",
"2024-01-15T10:00:00Z",
"2024-01-15T10:30:00Z"
]
}
Timezone Handling
All availability times are interpreted in the user’s configured timezone.
Example:
- User timezone:
Europe/Berlin (UTC+1)
- Availability: 9:00-17:00
- A customer in
America/New_York (UTC-5) sees: 3:00 AM - 11:00 AM
The API handles timezone conversion automatically. Always store and display times in the customer’s local timezone for the best experience.
Best Practices
Set realistic hours - Only mark times when the user will actually be available
Include buffer time - Don’t schedule wall-to-wall meetings
Consider timezones - If serving global customers, consider extended hours or multiple time windows
Empty schedules - If no intervals are defined for any day, the user won’t have any available slots