Appointment scheduling software, itemized
Calendar sync, payments, webhooks, whitelabel embedding, and native MCP support. All behind a single REST API.
Scheduling that just works
Connect your calendar
One-click OAuth for Google, Outlook, or CalDAV. Free/busy checks run on every slot request. If your calendar is blocked, that slot disappears automatically.
Configure your rules
Weekly hours, buffer times, minimum notice, rolling booking windows, and time zone handling. All via API or dashboard.
Never double-book again
A PostgreSQL EXCLUDE constraint prevents overlapping bookings at the database level. Cancellations and reschedules update everything automatically.
Built for developers
Full REST API
OpenAPI 3.1 spec covering event types, bookings, availability, and webhooks. Snake_case JSON, cursor pagination, predictable errors.
API reference →Webhooks on every event
Booking created, cancelled, rescheduled: your stack gets notified instantly. HMAC-signed payloads with automatic retry on failure.
Webhook docs →Sandbox mode
Test API keys with isolated data. Run your CI pipeline against real endpoints without touching production bookings.
Let AI agents book meetings.
Astrocal ships an MCP server out of the box. Any AI agent that speaks MCP can check availability, create bookings, and manage schedules. No custom integration code required.
- Claude
- GPT-4
- Any MCP-compatible agent
# Install and run the MCP server
npx @astrocal/mcp-server
# Agent calls available via MCP
> list_event_types
> get_available_slots slug="discovery" date="2025-03-20"
> create_booking slug="discovery" start="2025-03-20T10:00:00Z"
name="Jane Doe" email="jane@example.com"<!-- Add to any page -->
<script src="https://cdn.astrocal.dev/widget/v1/astrocal.js"></script>
<div id="booking"></div>
<script>
Astrocal.open({
eventTypeId: 'YOUR-EVENT-TYPE-ID',
target: '#booking'
})
</script>Embed anywhere, brand completely
--astrocal-primary: #2563eb;
--astrocal-heading: #2563eb;
--astrocal-radius: 8px;
--astrocal-font: 'Inter', sans-serif;...and background, text, borders, shadows, and more
Drop in the widget
Script tag, npm package, or React component. Renders in a Shadow DOM container, not an iframe, so your CSS never breaks it and theming flows through CSS custom properties.
Make it yours
CSS custom properties give you full control over colours, fonts, and layout. On paid plans, all Astrocal branding is removed.
Share booking links
Hosted pages that work on any device with automatic time zone detection. Or skip the widget entirely and build your own UI on the API.
Payments and notifications
Stripe payments at booking
Collect deposits or full payment when someone books. Stripe Connect with 135+ currency support built in.
Transactional email
Confirmation, reminder, and cancellation emails with ICS calendar attachments. Sent automatically, no integration needed.
Automatic refunds
Cancellations 24+ hours before the start time are refunded automatically. No manual Stripe dashboard work.
Team scheduling
Round-robin assignment across team members with per-member calendar connections (coming soon). No per-seat pricing, add your whole team.
Platform and security
Row-level security
PostgreSQL-enforced tenant isolation. Every query runs scoped to your organisation, not filtered in application code. Enforced at the database.
Usage dashboard
Monitor API calls, booking volume, and rate limit consumption from the dashboard. Know exactly where you stand on your plan.
Rate limiting
Per-minute and daily quotas protect your account and the platform. Fail-open design means a rate limiter hiccup never blocks your bookings.
Activity log
Every API call, dashboard action, and system event logged with actor, timestamp, and context. Full audit trail out of the box.
Pricing that scales with bookings, not seats
Start free with 10 bookings a month, no credit card. Paid plans from $12, and team members never cost extra.
Free
For getting started
- 10 bookings/month
- 1 calendar connection
- Calendar sync
- Email notifications
- 30 req/min API rate
Launch
For your first customers
- 50 bookings/month
- 3 calendar connections
- Custom branding
- Everything in Free
- 60 req/min API rate
Grow
Most PopularFor busy diaries
- 500 bookings/month
- 20 calendar connections
- Priority support
- Everything in Launch
- 500 req/min API rate
Scale
For high volume
- 5,000 bookings/month
- 100 calendar connections
- Dedicated support
- Everything in Grow
- 2,000 req/min API rate
No per-seat pricing. Ever. See full pricing →
Frequently asked questions
Ship scheduling this week
Free plan, full API, no credit card. Go from zero to your first API call in under five minutes.