EventScheduler

Integrations & Documentation

Connect calendars and conferencing in minutes, then build on a consistent API.

Calendar connections

Users authenticate; we handle token refresh, sync, and conferencing links.

OAuth consent
Allow
Cancel

Embeddable widget

Drop a booking surface into your product that respects availability & buffers.

Mon
Tue
Wed
Thu
Fri
Sat
Sun
10:00
10:30
11:00

Getting started

Step 1

Create an app

Register redirect URIs and generate client credentials.

POST /v1/apps
    {"name":"My Platform","redirect_uris":["https://app.example.com/callback"]}
Step 2

Authenticate users

Run OAuth; exchange the authorization code for tokens.

GET  /oauth/authorize?client_id=...&redirect_uri=...
    POST /oauth/token {"code":"...","client_id":"...","client_secret":"..."}
Step 3

Call the API

Create events, read free/busy, subscribe to webhooks.

POST /v1/events {"title":"Demo","start":"...","end":"..."}

Events

Create, update, list, and delete events with attendees and conferencing.

POST /v1/events
    Authorization: Bearer <token>
    {
    "calendar_id":"primary",
    "title":"Design review",
    "start":"2025-11-04T14:00:00Z",
    "end":"2025-11-04T15:00:00Z",
    "attendees":[{"email":"pat@acme.com"}]
    }

Recurrence

"recurrence": {
    "rrule": "FREQ=WEEKLY;BYDAY=MO,WE;COUNT=10",
    "timezone": "America/New_York"
    }

Free/Busy & Webhooks

Check availability and react to changes in real time.

POST /v1/freebusy
    {
    "timeMin":"2025-11-04T00:00:00Z",
    "timeMax":"2025-11-04T23:59:59Z",
    "calendars":["primary","sales@acme.com"]
    }
POST https://yourapp.example.com/webhooks/events
    {
    "type":"event.updated",
    "data":{
        "id":"evt_123",
        "changes":[{"path":"start","old":"...","new":"..."}]
    }
    }

Examples

Round-robin assignment

// JavaScript
    const team = ["alex@x.com","bea@x.com","cam@x.com"];
    const next = team[(Math.floor(Date.now()/1000)) % team.length];
    await api.events.create({
    title:"Intro call",
    attendees:[{email: next}],
    start:"2025-11-05T10:00:00Z",
    end:"2025-11-05T10:30:00Z"
    });

Hold a time window

# cURL
    curl -X POST https://api.eventscheduler.com/v1/holds \
    -H "Authorization: Bearer $API_KEY" \
    -H "Content-Type: application/json" \
    -d '{
        "start":"2025-11-04T09:00:00Z",
        "end":"2025-11-04T10:00:00Z",
        "reason":"Payment pending"
    }'

See the landing page for a quick API overview.