SmartCal Pro API
Build integrations, automate workflows, and connect SmartCal Pro to your favorite tools.
Quick Start
# Get your events
curl -H "Authorization: Bearer YOUR_API_KEY" \
https://smartcalpro.com/api/v1/events
# List your bookings
curl -H "Authorization: Bearer YOUR_API_KEY" \
https://smartcalpro.com/api/v1/bookings
# Cancel a booking
curl -X POST -H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"reason": "Schedule conflict"}' \
https://smartcalpro.com/api/v1/bookings/BOOKING_ID/cancel
Authentication
SmartCal Pro supports two authentication methods:
API Keys
Best for server-to-server integrations and personal automations.
Authorization: Bearer scp_your_key_here
Or use the X-API-Key header.
OAuth 2.0
Best for apps that act on behalf of SmartCal Pro users.
Authorization Code flow with PKCE support. See details below.
API Endpoints
Base URL: https://smartcalpro.com/api/v1
Events
| Method | Endpoint | Description |
|---|---|---|
| GET | /events | List calendar events (filterable) |
| GET | /events/:id | Get a single event |
status, source, start_after, start_before, page, per_page
Booking Pages
| Method | Endpoint | Description |
|---|---|---|
| GET | /booking-pages | List your booking pages |
| GET | /booking-pages/:id | Get a single booking page |
Bookings
| Method | Endpoint | Description |
|---|---|---|
| GET | /bookings | List all bookings |
| GET | /bookings/:id | Get a single booking |
| POST | /bookings/:id/cancel | Cancel a booking |
status, upcoming=true, page, per_page
Webhooks
| Method | Endpoint | Description |
|---|---|---|
| GET | /webhooks | List your webhook subscriptions |
| POST | /webhooks | Create a webhook subscription |
| DELETE | /webhooks/:id | Delete a webhook subscription |
Account
| Method | Endpoint | Description |
|---|---|---|
| GET | /me | Get your account info |
Webhook Events
Subscribe to events and receive real-time HTTPS POST notifications when things happen in SmartCal Pro.
Available Event Types
booking.created— New booking madebooking.cancelled— Booking cancelledbooking.rescheduled— Booking rescheduledevent.created— Calendar event createdevent.updated— Calendar event updatedevent.deleted— Calendar event deletedcalendar.synced— Calendar sync completed
Verifying Webhook Signatures
Every webhook delivery includes an X-SmartCalPro-Signature header with an HMAC-SHA256 signature of the request body.
# Python example
import hmac, hashlib
def verify_signature(payload_body, signature_header, secret):
expected = 'sha256=' + hmac.new(
secret.encode(), payload_body, hashlib.sha256
).hexdigest()
return hmac.compare_digest(expected, signature_header)
OAuth 2.0
If you're building an app that needs to act on behalf of SmartCal Pro users, use the OAuth 2.0 Authorization Code flow.
1. Redirect user to authorize
GET https://smartcalpro.com/oauth/authorize?client_id=YOUR_CLIENT_ID&redirect_uri=YOUR_REDIRECT&response_type=code&scope=read write&state=RANDOM_STATE
2. Exchange code for tokens
POST https://smartcalpro.com/oauth/token
Content-Type: application/x-www-form-urlencoded
grant_type=authorization_code&code=AUTH_CODE&client_id=YOUR_CLIENT_ID&client_secret=YOUR_SECRET&redirect_uri=YOUR_REDIRECT
3. Use the access token
curl -H "Authorization: Bearer ACCESS_TOKEN" https://smartcalpro.com/api/v1/events
Scopes
| read | Read events, bookings, and account info |
| write | Create/update/cancel bookings and events |
| webhooks | Manage webhook subscriptions |
| admin | Full access (all scopes) |
Rate Limits
- 100 requests per minute per API key/token
- 1,000 requests per hour per API key/token
- Rate limit headers included in every response:
X-RateLimit-Limit,X-RateLimit-Remaining - Exceeding the limit returns HTTP
429 Too Many Requests
Need Help?
Questions about the API or building an integration?
Contact Support