Getting Started
This guide walks you through making your first API calls to fetch available time slots and create a booking.
Prerequisites
- A Proximity account with at least one published event type
- The user slug of the scheduler (found in the Proximity dashboard under Sharing)
- The event slug of the event type you want to book
No API keys or tokens are required for public endpoints.
Step 1: Fetch the User Profile
Retrieve the scheduler’s public profile, including their available event types and branding:
curl https://app.proximity.io/api/public/scheduling/jane-doeThis returns the user’s event types, profile information, and branding settings. Use the slug from each event type for the next steps.
Step 2: Get Available Slots
Query available time slots for a specific event type:
curl "https://app.proximity.io/api/public/scheduling/jane-doe/30min-call/slots?\
dateFrom=2026-03-15&dateTo=2026-03-21&timezone=Europe/Berlin"Required query parameters:
| Parameter | Description |
|---|---|
dateFrom | Start date in YYYY-MM-DD format |
dateTo | End date in YYYY-MM-DD format |
timezone | The guest’s IANA timezone (e.g., America/New_York) |
The response is grouped by date, with each date containing an array of available slots.
Step 3: Create a Booking
Once the guest picks a slot, create the booking:
curl -X POST https://app.proximity.io/api/public/scheduling/jane-doe/30min-call/book \
-H "Content-Type: application/json" \
-d '{
"startTime": "2026-03-16T14:00:00Z",
"endTime": "2026-03-16T14:30:00Z",
"inviteeName": "Alex Johnson",
"inviteeEmail": "alex@example.com",
"inviteeTimezone": "Europe/Berlin",
"inviteeLocale": "en"
}'A successful booking returns 201 Created with the full booking details.
Step 4: Listen for Updates (Optional)
Set up webhooks to receive real-time notifications when bookings are created, cancelled, rescheduled, or approved.
JavaScript Example
const BASE = 'https://app.proximity.io/api/public/scheduling';
const USER = 'jane-doe';
const EVENT = '30min-call';
// Fetch available slots
const slotsRes = await fetch(
`${BASE}/${USER}/${EVENT}/slots?dateFrom=2026-03-15&dateTo=2026-03-21&timezone=America/New_York`
);
const slots = await slotsRes.json();
// Pick the first available slot
const firstSlot = slots[0]?.slots[0];
if (firstSlot) {
// Create a booking
const bookingRes = await fetch(`${BASE}/${USER}/${EVENT}/book`, {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
startTime: firstSlot.startTime,
endTime: firstSlot.endTime,
inviteeName: 'Alex Johnson',
inviteeEmail: 'alex@example.com',
inviteeTimezone: 'America/New_York',
inviteeLocale: 'en',
}),
});
const booking = await bookingRes.json();
console.log('Booking created:', booking.id);
}Python Example
import requests
BASE = "https://app.proximity.io/api/public/scheduling"
USER = "jane-doe"
EVENT = "30min-call"
# Fetch available slots
slots = requests.get(f"{BASE}/{USER}/{EVENT}/slots", params={
"dateFrom": "2026-03-15",
"dateTo": "2026-03-21",
"timezone": "America/New_York",
}).json()
# Pick the first available slot
first_slot = slots[0]["slots"][0]
# Create a booking
booking = requests.post(f"{BASE}/{USER}/{EVENT}/book", json={
"startTime": first_slot["startTime"],
"endTime": first_slot["endTime"],
"inviteeName": "Alex Johnson",
"inviteeEmail": "alex@example.com",
"inviteeTimezone": "America/New_York",
"inviteeLocale": "en",
}).json()
print(f"Booking created: {booking['id']}")Next Steps
- Scheduling API Reference — full endpoint documentation
- Webhooks — react to booking events in real time
- Embed Widget — add scheduling to your website with zero code