Overview
One TypeScript API for Google Calendar, Outlook, iCloud, Zoom, Cal.com, Calendly, CalDAV and ICS feeds.
Every calendar API has its own idea of what an event is. Google describes a repeating series with RRULE text, Outlook with a pattern object and Windows time zone names, and iCloud with iCalendar files over CalDAV. Each one reports a missing event or an expired token in its own way, too. So supporting a second calendar usually means writing a second integration.
calsdk gives your app one set of functions and one event shape for all of them. You create a provider, such as google({ accessToken }), and pass it to plain functions like listEvents and createEvent. Switching calendars changes the provider line and nothing else.
import { listEvents } from 'calsdk';
import { google } from '@calsdk/google';
const calendar = google({ accessToken: () => getFreshAccessToken() });
const { events } = await listEvents({
calendar,
timeMin: '2026-11-01T00:00:00Z',
timeMax: '2026-12-01T00:00:00Z',
});The APIs don't all support the same things, and calsdk won't pretend they do. When a provider can't do part of a request, the call returns warnings, or throws UnsupportedFunctionalityError when going ahead would save something other than what you asked for. It never quietly changes your data.
No hosted service
calsdk is a library. It has no server, database or queue, and it doesn't run OAuth flows. Your app keeps the tokens and passes them in.
Start here
Install calsdk
Add the core package and the providers you need.
Run the quickstart
Create, list and move events on an in-memory calendar, with no account.
Choose a provider
See which package and credentials each calendar needs.
Understand the model
How functions, providers, warnings and errors fit together.
Build features
Read events
List a time window, page through results and search.
Write events
Create, update and delete events, invite people and add video links.
Recurring events
Create series with RRULEs and change one occurrence or the whole series.
Find free time
Get busy blocks and find slots that work across providers.
Sync changes
Keep a local copy up to date with a stored cursor.
Test your code
Run your calendar logic offline against the mock provider.
Providers
calsdk has providers for Google Calendar, Outlook, iCloud, Zoho and other CalDAV servers, Cal.com, Calendly, Zoom and ICS feeds, plus an in-memory mock for tests. Choose a provider helps you pick a package and the credentials it needs, and the comparison shows what each one supports.