One API for availability, bookings, and calendar sync
Ship scheduling in hours, not months. OpenAPI 3.1 spec, snake_case JSON, cursor pagination, and webhook notifications. All behind a single REST API.
curl https://api.astrocal.dev/v1/availability \
-H "Authorization: Bearer sk_live_..." \
-d "event_type_id=evt_abc123&date=2026-04-15"
# Response
{
"data": [
{ "start": "2026-04-15T09:00:00Z", "end": "2026-04-15T09:30:00Z" },
{ "start": "2026-04-15T10:00:00Z", "end": "2026-04-15T10:30:00Z" },
{ "start": "2026-04-15T14:00:00Z", "end": "2026-04-15T14:30:00Z" }
]
}Built for developers, not end-users
Real-time availability
FreeBusy checks against connected calendars on every request. Slots update in real time, no stale data, no double-bookings.
Bookings CRUD
Create, read, update, cancel, and reschedule bookings via REST. Confirmation emails and ICS attachments sent automatically.
Webhook notifications
Receive HMAC-signed payloads for booking.created, booking.cancelled, and booking.rescheduled events. Automatic retry on failure.
OpenAPI 3.1 spec
Auto-generated spec always in sync with the codebase. Import into Postman, generate client SDKs, or feed it to your AI coding assistant.
Google, Outlook, and CalDAV
OAuth connections for Google Calendar and Microsoft 365 / Outlook. CalDAV support for Apple Calendar, Fastmail, and self-hosted servers. Events written back automatically.
MCP for AI agents
The @astrocal/mcp-server npm package gives Claude, Cursor, and custom agents the ability to check availability and create bookings natively.
Core endpoints
Four endpoints cover 90% of scheduling workflows. Full reference in the docs.
/v1/availabilityFetch open time slots for an event type and date{
"data": [
{
"start": "2026-04-15T09:00:00Z",
"end": "2026-04-15T09:30:00Z"
},
{
"start": "2026-04-15T10:00:00Z",
"end": "2026-04-15T10:30:00Z"
},
{
"start": "2026-04-15T14:00:00Z",
"end": "2026-04-15T14:30:00Z"
}
]
}/v1/bookingsCreate a confirmed booking{
"event_type_id": "evt_abc123",
"start": "2026-04-15T14:00:00Z",
"invitee": {
"name": "Jo Smith",
"email": "jo@acme.com"
},
"metadata": {
"source": "website"
}
}{
"id": "bk_7f3a9c2e",
"status": "confirmed",
"start": "2026-04-15T14:00:00Z",
"end": "2026-04-15T14:30:00Z",
"invitee": {
"name": "Jo Smith",
"email": "jo@acme.com"
},
"created_at": "2026-04-10T12:00:00Z"
}/v1/bookings/{id}Cancel an existing booking{
"reason": "Customer requested cancellation"
}{
"id": "bk_7f3a9c2e",
"status": "cancelled",
"cancelled_at": "2026-04-12T08:30:00Z"
}/v1/webhooksRegister a webhook endpoint{
"url": "https://your-app.com/webhooks/astrocal",
"events": [
"booking.created",
"booking.cancelled",
"booking.rescheduled"
]
}{
"id": "wh_e4b2d1a8",
"url": "https://your-app.com/webhooks/astrocal",
"events": [
"booking.created",
"booking.cancelled",
"booking.rescheduled"
],
"secret": "whsec_...",
"created_at": "2026-04-10T12:05:00Z"
}Frequently asked questions
Get your API key in 30 seconds
Free plan includes full API access, Google Calendar sync, and 10 bookings per month. No credit card required.