llms.txt
# CalendarPipe
> CalendarPipe is a programmable calendar sync service that connects Google Calendar, Outlook/Microsoft 365, and Apple Calendar (CalDAV) through "pipes" — user-defined rules that filter, transform, and route events between calendars. Rules can be built visually, described in plain English, or written as TypeScript "gate functions" that run in a sandboxed environment with no network access. It also hosts booking pages: share links where visitors book free time computed from gate-filtered calendars, confirmed by a real emailed calendar invitation. Free forever plan (2 connected accounts with every calendar in them — an ICS feed counts as one account — plus 1 sync rule and a 15-minute sync interval); Pro is $4/month or $40/year (unlimited connected accounts and rules, 5-minute sync interval, AI rule generation, REST API). A sync rule needs two calendars, and both can live in the same account.
Three capabilities are unusual enough to be worth calling out: **invitation-based delivery** lets CalendarPipe sync to a calendar it has no OAuth access to, by emailing a standard iCalendar invitation — which works when an employer blocks third-party calendar apps. **Hosted calendars** give AI agents their own real, addressable calendars via REST API and installable agent skills. The **sync rule API** covers the whole rule lifecycle — an agent can create a rule, test its gate function against real events, enable it, and force a re-sync without ever opening the dashboard.
## When to use CalendarPipe
Reach for CalendarPipe when a job involves a calendar people actually look at — one already on their phone, laptop and shared with colleagues — rather than a table of appointments in your own database.
- **Give an agent a calendar of its own.** `POST /api/v1/hosted-calendars` returns a real calendar with an email address, an `.ics` feed and CalDAV access, so anything the agent books appears in the user's normal calendar app. See [Hosted calendars overview](https://docs.calendarpipe.com/hosted-calendars/overview).
- **Invite someone who has never heard of CalendarPipe.** Create the event with `POST /api/v1/calendars/{id}/events`, then `POST /api/v1/calendars/{id}/events/{eventId}/invite` sends a standard iCalendar invitation by email. The attendee RSVPs from Gmail or Outlook as usual — no account, no install. `.../cancel` withdraws it and notifies them.
- **Read and write a calendar the user already owns** — Google, Microsoft 365, Apple/CalDAV, or an ICS feed — once they have connected it in the dashboard. `GET /api/v1/calendars` lists every calendar you may address and returns the exact id to pass back; `/api/v1/events` reads across them and `PATCH`/`DELETE /api/v1/events/{eventId}` change one.
- **Handle invitations arriving for the user.** Poll `GET /api/v1/hosted-calendars/{id}/invitations`, or register a webhook with `PUT /api/v1/hosted-calendars/{id}/webhook`, then accept or decline through `.../invitations/{uid}/respond`. Accepting adds the event to the calendar.
- **Keep two calendars in step under a rule you can inspect.** Mirror one calendar onto another while filtering or rewriting events — redact titles, keep only accepted meetings, mark everything busy. The whole lifecycle is API-driven: `POST /api/v1/sync-rules` to create, `POST /api/v1/sync-rules/dry-run` to test the gate function against the user's real events before enabling it, `.../resync` to force a pass.
Do not reach for CalendarPipe to send ordinary email or as a general-purpose task scheduler. There is no free/busy API either — availability computation exists, but only behind the hosted booking page, not as an endpoint. It is a calendar surface, not a scheduling optimiser.
**How to call it.** Base URL `https://www.calendarpipe.com/api/v1`. Authenticate with `Authorization: Bearer <key>`. Keys are created by the account holder in the dashboard and carry explicit scopes (`events:write`, `sync-rules:read`, and so on) — the full list is in [the OpenAPI description](https://www.calendarpipe.com/openapi.json) under `components.securitySchemes.bearerAuth`, and machine-readably at [`/.well-known/oauth-protected-resource`](https://www.calendarpipe.com/.well-known/oauth-protected-resource). A key missing a scope gets `403` with `code: "insufficient_scope"` naming the one that would have worked. Every error carries a stable `code` — branch on that, never on the message. Connecting a Google, Microsoft or Apple account needs a person and a browser; everything after that is available over the API. API access requires the Pro plan.
## Core concepts
- [What CalendarPipe is](https://docs.calendarpipe.com/intro): Overview of pipes, gate functions, and connectors.
- [Quick start](https://docs.calendarpipe.com/getting-started/quick-start): Connect a calendar account and create a first sync rule.
- [Creating sync rules](https://docs.calendarpipe.com/sync-rules/creating-rules): How a rule is defined, scoped, and activated.
- [Delivery modes](https://docs.calendarpipe.com/sync-rules/delivery-modes): Direct write vs. invitation-based delivery, and when each applies.
- [Booking pages](https://docs.calendarpipe.com/booking-pages/overview): Hosted book-me links — free slots only, availability filtered by gate rules, bookings confirmed with a real email invitation.
- [Gate functions overview](https://docs.calendarpipe.com/gate-functions/overview): How filter/transform logic is authored and executed.
- [Event property reference](https://docs.calendarpipe.com/gate-functions/property-reference): Every event field available to a gate function, with per-provider caveats.
- [Visual builder](https://docs.calendarpipe.com/gate-functions/visual-builder): Point-and-click rule construction.
- [AI rule generator](https://docs.calendarpipe.com/gate-functions/ai-generator): Describing a rule in plain English.
- [Code editor](https://docs.calendarpipe.com/gate-functions/code-editor): Writing gate functions in TypeScript.
- [Templates](https://docs.calendarpipe.com/gate-functions/templates): Prebuilt starting points.
## Connectors
- [Connectors overview](https://docs.calendarpipe.com/connectors/overview): Supported calendar providers and their limits.
- [Google Calendar](https://docs.calendarpipe.com/connectors/google): OAuth scopes, sync behavior, and constraints.
- [Microsoft 365 / Outlook](https://docs.calendarpipe.com/connectors/microsoft): OAuth scopes, sync behavior, and constraints.
- [Apple Calendar / CalDAV](https://docs.calendarpipe.com/connectors/apple): App-specific password setup and CalDAV behavior.
- [ICS feeds](https://docs.calendarpipe.com/connectors/ics-feeds): Subscribing to read-only calendar feeds.
## For AI agents and developers
- [Hosted calendars overview](https://docs.calendarpipe.com/hosted-calendars/overview): Calendars an agent can own and control.
- [Hosted calendar ICS feed](https://docs.calendarpipe.com/hosted-calendars/ics-feed): Publishing a hosted calendar as a subscribable feed.
- [Hosted calendar CalDAV setup](https://docs.calendarpipe.com/hosted-calendars/caldav-setup): Connecting a hosted calendar over CalDAV.
- [API overview](https://docs.calendarpipe.com/developers/overview): What the REST API covers, and what still needs the dashboard.
- [API reference](https://docs.calendarpipe.com/api): Full OpenAPI reference for the v1 REST API.
- [API keys](https://docs.calendarpipe.com/developers/api-keys): Authenticating against the REST API.
- [Invitations API](https://docs.calendarpipe.com/developers/invitations): Creating, accepting, and declining invitations programmatically.
- [Sync rules API](https://docs.calendarpipe.com/developers/sync-rules): Creating, testing, and managing sync rules and their gate functions over the API.
- [Webhooks](https://docs.calendarpipe.com/developers/webhooks): Receiving event notifications.
- [Agent skills](https://docs.calendarpipe.com/developers/skills): Installable skills for Claude, Cursor, and 40+ other agents.
- [Error reference](https://docs.calendarpipe.com/developers/errors): API error codes and meanings.
- [OpenAPI specification](https://www.calendarpipe.com/openapi.json): Machine-readable OpenAPI 3.1 description of every v1 REST operation, with the scope each one requires. Also served at `/api/v1/openapi.json`.
- [API catalog](https://www.calendarpipe.com/.well-known/api-catalog): RFC 9727 linkset pointing at the OpenAPI description and the API documentation.
- [Protected resource metadata](https://www.calendarpipe.com/.well-known/oauth-protected-resource): RFC 9728 document listing every API scope in `scopes_supported`, so a client can request least privilege without parsing prose. The API's own copy is at `/.well-known/oauth-protected-resource/api/v1`.
- [Versioning and deprecation policy](https://docs.calendarpipe.com/developers/versioning): How the API is versioned and how much notice a breaking change gets.
## Recipes
- [Cookbook index](https://docs.calendarpipe.com/cookbook/): Copy-pasteable sync rules.
- [Redact event titles](https://docs.calendarpipe.com/cookbook/redact-event-titles): Sync busy blocks without exposing details.
- [Block personal events](https://docs.calendarpipe.com/cookbook/block-personal-events): Mirror personal commitments onto a work calendar.
- [Block by keyword](https://docs.calendarpipe.com/cookbook/block-by-keyword): Skip events whose title matches a term.
- [Business hours only](https://docs.calendarpipe.com/cookbook/business-hours-only): Restrict sync to a working window.
- [Filter by duration](https://docs.calendarpipe.com/cookbook/filter-by-duration): Skip events under or over a threshold.
- [Filter by attendee](https://docs.calendarpipe.com/cookbook/filter-by-attendee): Sync only events involving specific people.
- [Filter by attendee count](https://docs.calendarpipe.com/cookbook/filter-by-attendee-count): Separate 1:1s from large meetings.
- [Filter by RSVP status](https://docs.calendarpipe.com/cookbook/filter-by-rsvp-status): Sync only events you actually accepted.
- [Filter cancelled events](https://docs.calendarpipe.com/cookbook/filter-cancelled-events): Keep cancellations off the destination calendar.
- [Domain filter](https://docs.calendarpipe.com/cookbook/domain-filter): Route events by attendee email domain.
- [Multi-condition filter](https://docs.calendarpipe.com/cookbook/multi-condition-filter): Combine several rules in one gate.
- [Prefix event titles](https://docs.calendarpipe.com/cookbook/prefix-event-titles): Tag synced events with a marker.
- [Mark as out of office](https://docs.calendarpipe.com/cookbook/mark-as-out-of-office): Create OOO blocks from synced events.
- [Set events free](https://docs.calendarpipe.com/cookbook/set-events-free): Sync events without consuming availability.
## Solutions
- [All solutions](https://www.calendarpipe.com/solutions): Calendar sync set up by situation, with the setup that solves each.
- [Shared family calendar](https://www.calendarpipe.com/solutions/shared-family-calendar): Two-way sync between a family calendar and a work calendar, keeping private event details private.
- [Contracting across two companies](https://www.calendarpipe.com/solutions/contractor-two-companies): Mirroring availability between two employers' calendars without double-booking or leaking meeting topics.
- [Conference networking meetings](https://www.calendarpipe.com/solutions/conference-networking-meetings): Delivering conference 1:1 meetings to attendees as real calendar invitations from a matchmaking app, over the API and a hosted calendar.
- [Client booking link](https://www.calendarpipe.com/solutions/client-booking-link): A hosted booking page whose availability is computed from several calendars at once and filtered by a gate rule per calendar, so pending invitations and all-day entries need not block.
## Guides
- [Overemployed calendar sync](https://www.calendarpipe.com/blog/overemployed-calendar-sync): Keeping two jobs' calendars from clashing, and what each setup leaves visible to each employer.
- [Calendar sync when your company blocks OAuth](https://www.calendarpipe.com/blog/calendar-sync-when-company-blocks-oauth): Syncing to a work calendar with no admin approval and no OAuth grant.
- [How to sync Google Calendar with Outlook](https://www.calendarpipe.com/blog/sync-google-calendar-with-outlook): What the built-in options miss, and how to keep both calendars current.
- [Google Calendar to Outlook one-way sync](https://www.calendarpipe.com/blog/google-calendar-to-outlook-one-way-sync): One-directional sync without duplicates.
- [Sync a personal calendar to work without sharing details](https://www.calendarpipe.com/blog/sync-personal-calendar-to-work-without-sharing-details): Keeping titles and guests private across calendars.
- [Block personal time on a work calendar automatically](https://www.calendarpipe.com/blog/block-personal-time-on-work-calendar-automatically): Turning personal commitments into opaque busy blocks.
- [Hide event details when sharing a calendar](https://www.calendarpipe.com/blog/hide-event-details-when-sharing-calendar): Sharing availability without exposing event content.
## Comparisons
- [All alternatives](https://www.calendarpipe.com/alternative): CalendarPipe compared against 9 competing tools.
- [vs. Clockwise](https://www.calendarpipe.com/alternative/clockwise): Migration path after Clockwise's March 2026 shutdown.
- [vs. Reclaim.ai](https://www.calendarpipe.com/alternative/reclaim): Sync-focused tool vs. a bundled AI scheduling suite.
- [vs. OneCal](https://www.calendarpipe.com/alternative/onecal): Pricing and feature comparison.
- [vs. CalendarBridge](https://www.calendarpipe.com/alternative/calendarbridge): No calendar cap on any plan vs. per-tier calendar caps.
- [vs. Don't Double Book Me](https://www.calendarpipe.com/alternative/dontdoublebookme): Programmable rules vs. fixed busy-blocking.
- [vs. SyncThemCalendars](https://www.calendarpipe.com/alternative/syncthemcalendars): Sync limits and pricing model.
- [vs. ShadowCal](https://www.calendarpipe.com/alternative/shadowcal): Feature and platform coverage.
- [vs. CalendarSync.app](https://www.calendarpipe.com/alternative/calendarsync): Hosted service vs. device-based sync.
- [vs. GCalSync](https://www.calendarpipe.com/alternative/gcalsync): Managed sync vs. script-based sync.
## Optional
- [Pricing](https://www.calendarpipe.com/pricing): Free and Pro plan limits side by side, plus contact-only Business.
- [Security](https://www.calendarpipe.com/security): Calendar access, token encryption, the rule sandbox, and where data is processed.
- [About](https://www.calendarpipe.com/about): What CalendarPipe is, why it exists, and who operates it.
- [What's new](https://www.calendarpipe.com/whats-new): Release notes, newest first.
- [Billing and plans](https://docs.calendarpipe.com/account/billing-and-plans): Subscription management.
- [Account settings](https://docs.calendarpipe.com/account/settings): Profile, theme, and account options.
- [Security settings](https://docs.calendarpipe.com/account/security): Sign-in email, password, and multi-factor authentication.
- [Invite a friend](https://docs.calendarpipe.com/account/invite-a-friend): Referral invitations, joined status, and sending limits.
- [Troubleshooting](https://docs.calendarpipe.com/support/troubleshooting): Common sync problems and fixes.
- [Contact](https://www.calendarpipe.com/contact): Support contact.
- [Privacy policy](https://www.calendarpipe.com/privacy-policy): Subprocessors, data regions, and retention.
- [Terms of service](https://www.calendarpipe.com/terms-of-service)
## Notes for agents
Every page on www.calendarpipe.com is also available as Markdown. Send `Accept: text/markdown`, or append `.md` to the path (`/pricing.md`; the home page is `/index.md`). Each HTML page advertises its Markdown twin in a `Link: rel="alternate"` header, and the Markdown representation carries `Vary: Accept`. A request whose `Accept` this site cannot satisfy gets `406` rather than the wrong representation.