Astrocal

Embed scheduling into
anything you build

Embed booking into your app, website, or AI agent with a few API calls or one line of code. Whitelabel widgets, calendar sync, and payments built in.*

API-First

REST API with OpenAPI 3.1 spec. Every endpoint documented, typed, and consistent. Build scheduling into any product.

MCP-Native

Ship an MCP server that lets AI agents check availability and book meetings. No custom integration code.

True Whitelabel

Your brand, your domain. Embeddable widgets with CSS custom properties. Zero Astrocal branding.*

Drop-in booking widget

Embed a complete booking experience on any website with a single script tag. Fully themeable, keyboard accessible, zero Astrocal branding.*

Fully themeable via CSS variables
--astrocal-primary: #2563eb;
--astrocal-heading: #2563eb;
--astrocal-radius: 8px;
--astrocal-font: 'Inter', sans-serif;

...and background, text, borders, shadows, and more

import { open } from "@astrocal/widget";

open({
  eventTypeId: "d4e5f6a7-...",
  mode: "inline",
  target: "#booking-container",
});
  • Theme with CSS custom properties — colors, fonts, border radius
  • Shadow DOM isolation — no style conflicts with your site
  • Inline embed or popup overlay — your choice
  • Keyboard navigable with full ARIA support

Or build your own UI

Use our drop-in widget or call the REST API directly to build a fully custom booking experience. Check availability, create bookings, and handle confirmations — your way.

Check availability
GET /v1/availability
?event_type_id=evt_abc123
&start_date=2026-03-01
&end_date=2026-03-07
{
  "slots": [
    { "start_time": "2026-03-01T09:00:00Z",
      "end_time":   "2026-03-01T09:30:00Z" },
    { "start_time": "2026-03-01T09:30:00Z",
      "end_time":   "2026-03-01T10:00:00Z" },
    ...
  ]
}
Create a booking
POST /v1/bookings
{
  "event_type_id": "d4e5f6a7-...",
  "start_time": "2026-03-01T09:00:00Z",
  "invitee_name": "Jane Smith",
  "invitee_email": "jane@smith.com",
  "invitee_timezone": "America/New_York"
}

// 201 Created
{
  "id": "a1b2c3d4-...",
  "status": "confirmed",
  "cancel_token": "tok_..."
}

Three steps to live bookings

Go from zero to accepting bookings in minutes, not days.

1

Connect your calendar

One-click Google Calendar OAuth. We read your busy times so you never get double-booked.

2

Define your availability

Set weekly hours, buffer times, and meeting durations. The availability engine handles timezone math.

3

Start booking

Use the REST API, MCP server, or embeddable widget. Bookings sync to your calendar instantly.

Everything you need to ship scheduling

Production-ready features out of the box. Focus on your product, not scheduling infrastructure.

Calendar Sync

Real-time Google Calendar integration. FreeBusy checks prevent double-bookings. Events created automatically.

Webhooks

HMAC-signed webhook events for bookings, cancellations, and reschedules. Automatic retries with exponential backoff.

Email Notifications

Confirmation and cancellation emails with .ics calendar attachments. Powered by Resend for reliable delivery.

Stripe Payments

Collect payments for bookings via Stripe Connect. Automatic refunds on cancellation. You keep the revenue.

Cancel & Reschedule

Self-service cancel and reschedule links for attendees. Token-based auth — no login required.

Developer Dashboard

Manage API keys, calendars, event types, and bookings from a clean dashboard. Activity logs and webhook delivery tracking.

Ship scheduling today

Create a free account and make your first API call in under 5 minutes. No credit card required.

* Zero branding available on paid plans.