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/eventsList calendar events (filterable)
GET/events/:idGet a single event
Filters: status, source, start_after, start_before, page, per_page

Booking Pages

Method Endpoint Description
GET/booking-pagesList your booking pages
GET/booking-pages/:idGet a single booking page

Bookings

Method Endpoint Description
GET/bookingsList all bookings
GET/bookings/:idGet a single booking
POST/bookings/:id/cancelCancel a booking
Filters: status, upcoming=true, page, per_page

Webhooks

Method Endpoint Description
GET/webhooksList your webhook subscriptions
POST/webhooksCreate a webhook subscription
DELETE/webhooks/:idDelete a webhook subscription

Account

Method Endpoint Description
GET/meGet 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 made
  • booking.cancelled — Booking cancelled
  • booking.rescheduled — Booking rescheduled
  • event.created — Calendar event created
  • event.updated — Calendar event updated
  • event.deleted — Calendar event deleted
  • calendar.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

readRead events, bookings, and account info
writeCreate/update/cancel bookings and events
webhooksManage webhook subscriptions
adminFull 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