Integrations
Public API
Programmatic access to your event types, availability, and bookings. JSON over HTTPS, authenticated with a personal access token.
The public API, OAuth apps, the MCP server, and outbound webhooks are part of the Team plan. Tokens issued on a Free or Pro plan won't authenticate against these endpoints.
Authentication
Create a token from Settings → Developers. You'll see the raw pat_… value exactly once — store it somewhere safe. Each request must carry it in the Authorization header:
curl -H "Authorization: Bearer pat_…" \
https://caledee.com/api/v2/meEndpoints
- GET/api/v2/mescope: read:profile
Your basic profile.
- GET/api/v2/event-typesscope: read:event-types
Your event types.
- GET/api/v2/availability?eventTypeId=…&from=…&to=…&duration=…&tz=…scope: read:availability
Bookable slots for an event type. Window must be ≤ 31 days.
- GET/api/v2/bookings?status=active&from=…&to=…&limit=50&cursor=…scope: read:bookings
Your bookings, newest first. Pass nextCursor back as the cursor for paging.
- POST/api/v2/bookingsscope: write:bookings
Create a booking on one of your event types. Same body shape as the public /api/bookings endpoint.
- DELETE/api/v2/bookings/{id}?reason=…scope: write:bookings
Cancel a booking you own. Idempotent.
- GET/api/v2/leads?status=new&booked=false&limit=50&cursor=…scope: read:leads
Captured leads on your event types, newest first. Pass nextCursor back to page.
- GET/api/v2/contacts?kind=client&q=…&offset=0&limit=50scope: read:contacts
Clients and leads merged into one contact per email, most-recent activity first. Page with offset.
OpenAPI specification
The full machine-readable contract is published as OpenAPI 3.1 at /api/docs/openapi.json. Import it into Postman, Insomnia, or any OpenAPI client to scaffold a type-safe SDK in minutes.
curl https://caledee.com/api/docs/openapi.json -o caledee-openapi.jsonErrors
Every error is JSON with at least a title and message:
{
"title": "Unauthorized",
"message": "Invalid or unknown access token."
}401— missing or bad token, or the token was revoked403— the token doesn't carry the required scope404— the resource doesn't exist or you don't own it429— token over 600 req/min
Need a scope we don't have yet? hello@caledee.com.