Get Available Slots
Query the available time slots for a specific event type within a date range.
Endpoint
GET /api/public/scheduling/{userSlug}/{eventSlug}/slotsAuthentication: None required
Path Parameters
| Parameter | Type | Description |
|---|---|---|
userSlug | string | The user’s unique URL slug |
eventSlug | string | The event type’s URL slug |
Query Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
dateFrom | string | Yes | Start date in YYYY-MM-DD format |
dateTo | string | Yes | End date in YYYY-MM-DD format |
timezone | string | Yes | Guest’s IANA timezone (e.g., America/New_York) |
Response
Returns 200 OK with an array of dates, each containing available time slots.
[
{
"date": "2026-03-16",
"slots": [
{
"startTime": "2026-03-16T14:00:00Z",
"endTime": "2026-03-16T14:30:00Z",
"spotsRemaining": null
},
{
"startTime": "2026-03-16T15:00:00Z",
"endTime": "2026-03-16T15:30:00Z",
"spotsRemaining": null
}
]
},
{
"date": "2026-03-17",
"slots": [
{
"startTime": "2026-03-17T09:00:00Z",
"endTime": "2026-03-17T09:30:00Z",
"spotsRemaining": null
}
]
}
]Response Fields
| Field | Type | Description |
|---|---|---|
date | string | Date in YYYY-MM-DD format |
slots | array | Array of available time slots |
slots[].startTime | string | Slot start time in ISO 8601 UTC |
slots[].endTime | string | Slot end time in ISO 8601 UTC |
slots[].spotsRemaining | number | null | Remaining spots for group events; null for 1:1 events |
How Slot Availability Works
The API calculates available slots by:
- Loading the host’s weekly availability schedule and any date overrides
- Generating candidate slots based on the event type’s duration and slot interval
- Removing slots that conflict with existing bookings or synced calendar events
- Applying buffer times before and after existing meetings
- Enforcing minimum notice period, daily limits, and weekly limits
- For team events: checking availability across all team members
Dates with no available slots are omitted from the response.
Errors
| Status | Description |
|---|---|
400 | Missing or invalid query parameters |
404 | User or event type not found |
Code Examples
cURL
curl "https://app.proximity.io/api/public/scheduling/jane-doe/30min-call/slots?\
dateFrom=2026-03-15&dateTo=2026-03-21&timezone=America/New_York"JavaScript
const params = new URLSearchParams({
dateFrom: '2026-03-15',
dateTo: '2026-03-21',
timezone: 'America/New_York',
});
const response = await fetch(
`https://app.proximity.io/api/public/scheduling/jane-doe/30min-call/slots?${params}`
);
const days = await response.json();
for (const day of days) {
console.log(`\n${day.date}:`);
for (const slot of day.slots) {
console.log(` ${slot.startTime} — ${slot.endTime}`);
}
}Python
import requests
response = requests.get(
"https://app.proximity.io/api/public/scheduling/jane-doe/30min-call/slots",
params={
"dateFrom": "2026-03-15",
"dateTo": "2026-03-21",
"timezone": "America/New_York",
},
)
days = response.json()
for day in days:
print(f"\n{day['date']}:")
for slot in day["slots"]:
print(f" {slot['startTime']} — {slot['endTime']}")Last updated on