🔌 REST API Documentation

Build on
Book with Schedulo

Automate bookings, sync calendars, trigger workflows, and embed scheduling into any product using the Schedulo REST API.

Base URLapi.bookwithschedulo.com/api
FormatJSON
AuthBearer Token
Versionv1
BASE URL https://api.bookwithschedulo.com/api
🔑
Authentication
All API requests require a Bearer token

Generate your API key from the dashboard under Account → API Keys. Include it in every request.

Request Header
Authorization: Bearer sk_live_your_api_key_here
cURL Example
curl -X GET "https://api.bookwithschedulo.com/api/bookings" \
  -H "Authorization: Bearer sk_live_your_key_here" \
  -H "Content-Type: application/json"
⚠️ Keep your API key secret. Never expose it in client-side code or commit it to version control. Revoke immediately if compromised from the dashboard.
Errors
Standard HTTP status codes
200Success — request completed
400Bad Request — missing or invalid parameters
401Unauthorized — invalid or missing API key
403Forbidden — insufficient permissions for this resource
404Not Found — resource does not exist
429Rate Limit Exceeded — slow down and retry
500Server Error — something went wrong on our end
Error Response
{
  "error": "Invalid or expired token",
  "code": "UNAUTHORIZED"
}
🚦
Rate Limits
Per API key, per month

Each API key is limited to 10,000 requests per month on Pro plan. Limits reset on the 1st of each month.

Rate Limit Headers
X-RateLimit-Limit:     10000
X-RateLimit-Remaining: 9847
X-RateLimit-Reset:     2026-06-01T00:00:00Z
📅
Bookings
List, retrieve, update and manage bookings
GET /bookings List all bookings
ParamTypeRequiredDescription
statusstringoptionalconfirmed, cancelled, pending
limitintegeroptionalResults per page (default 20, max 100)
offsetintegeroptionalPagination offset
GET /bookings/:id Get a single booking by ID
PATCH /bookings/:id Cancel or reschedule a booking
ParamTypeRequiredDescription
statusstringoptionalSet to "cancelled"
scheduled_atdatetimeoptionalNew meeting time in ISO 8601
cancellation_reasonstringoptionalReason shown to guest
POST /bookings/:id/no-show Mark guest as no-show
Booking Object
{
  "id":               "b1234567-0000-0000-0000-000000000001",
  "guest_name":       "Priya Sharma",
  "guest_email":      "priya@example.com",
  "guest_phone":      "+91 98765 43210",
  "event_title":      "30 Minute Consultation",
  "scheduled_at":     "2026-06-01T10:00:00+05:30",
  "duration_minutes": 30,
  "status":           "confirmed",
  "meeting_link":     "https://zoom.us/j/1234567890",
  "no_show":          false,
  "host_notes":       null,
  "created_at":       "2026-05-22T08:00:00Z"
}
🎯
Event Types
Manage your meeting types and settings
GET/eventsList all event types
GET/events/:idGet a single event type
POST/eventsCreate a new event type
PATCH/events/:idUpdate an event type
DELETE/events/:idDelete an event type
🕐
Availability
Get available slots for a date
GET /public/slots/:event_type_id Get available time slots
ParamTypeRequiredDescription
datestringrequiredDate in YYYY-MM-DD format
timezonestringoptionalIANA timezone (e.g. Asia/Kolkata)
Example Response
GET /public/slots/evt_abc?date=2026-06-01

{
  "slots": ["09:00", "09:30", "10:00", "10:30", "11:00"],
  "timezone": "Asia/Kolkata"
}
🔗
Webhooks
Real-time booking event notifications

Subscribe to booking events and receive instant HTTP POST notifications at your endpoint.

GET/integrations/zapier/webhooksList subscriptions
POST /integrations/zapier/webhooks Subscribe to an event
ParamTypeRequiredDescription
urlstringrequiredYour HTTPS endpoint to receive payloads
eventstringrequiredbooking_confirmed, booking_cancelled, booking_rescheduled
DELETE/integrations/zapier/webhooks/:idUnsubscribe
Webhook Payload Example
{
  "event": "booking_confirmed",
  "booking": {
    "id": "b1234567-...",
    "guest_name": "Priya Sharma",
    "guest_email": "priya@example.com",
    "event_title": "30 Minute Consultation",
    "scheduled_at": "2026-06-01T10:00:00+05:30",
    "meeting_link": "https://zoom.us/j/1234567890"
  }
}
📦
Objects Reference
Core data types returned by the API
💡 All datetime fields are returned in ISO 8601 format with timezone offset. All IDs are UUIDs.
Zapier Integration
Connect Schedulo to 6,000+ apps — no code needed
Triggers
New Booking
Booking Cancelled
Booking Rescheduled
Actions
Create Booking
Cancel Booking
🔑 Authentication: Use your Schedulo API key as the Bearer token when connecting in Zapier. Generate one from dashboard → API Keys.