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

Build features

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.

Reference

On this page