Calendar API logo

Calendar API

Calendar API

Google Calendar API lets apps create, read, and update calendar events programmatically — the go-to integration for scheduling apps.

Visit site ↗Health checked 9h ago
Use it when

Generous per-user quota

Watch for

Requires OAuth — no simple API key option for user data

First check

Enable Calendar API at console.cloud.google.com, set up OAuth credentials. After user consent, call calendars.list / events.insert with an access_token. Scopes: https://www.googleapis.com/auth/calendar or the narrower calendar.events.

Auth
oauth
CORS
No
HTTPS
Yes
Signup
Required
Latency
48 ms
Protocol
REST
Pricing
free

Uptime · 30-day window

Probes: 1Uptime: 100%Avg latency: 48ms
01

About this API

The Google Calendar API gives full programmatic access to calendars: manage calendar lists, create and modify events, subscribe to changes, and handle ACL sharing. Within the Google Workspace ecosystem it pairs naturally with Gmail, Drive, and Meet — for example auto-attaching Meet links to events or hooking Drive files into event attachments.

The event model's most important detail is recurring events: a series is one master event plus its concrete instances. Modifications need to be explicit about whether you're changing the entire series, a single instance, or all future occurrences from a point forward — the API uses sendUpdates and update modes to disambiguate. Time zones are another common pitfall: events can specify their own zone, and cross-region coordination should rely on IANA zone names rather than fixed UTC offsets.

02

What you can build

  • 1Embed "Add to Google Calendar" buttons in your app
  • 2Sync external scheduling systems into Calendar
  • 3Build appointment booking tools that auto-create events
  • 4Subscribe to public calendars for monitoring
  • 5Push reminders into Calendar as notifications
03

Strengths & limitations

Strengths

  • Generous per-user quota
  • Push notifications stream changes in real time
  • Shared OAuth scope model with other Workspace APIs
  • Robust handling of recurring events and time zones

Limitations

  • Requires OAuth — no simple API key option for user data
  • Modifying recurring events needs care with instance vs series semantics
  • Some write operations face tighter rate limits
04

Example request

Generic template — replace <endpoint> with the real path from the docs.
curl https://google.com/<endpoint> \
  -H "Authorization: Bearer $ACCESS_TOKEN"
05

Getting started

Enable Calendar API at console.cloud.google.com, set up OAuth credentials. After user consent, call calendars.list / events.insert with an access_token. Scopes: https://www.googleapis.com/auth/calendar or the narrower calendar.events.

06

FAQ

Is the API free?+

Yes, free to use; quota is measured in units and most apps stay well within it.

How do I watch for calendar changes?+

Use events.watch to subscribe a webhook — Google pushes change notifications to your HTTPS endpoint.

Can I modify a user's private events?+

Only if the user granted the matching OAuth scope and the event ACL allows it. Read-only scopes cannot write.

How do I handle cross-time-zone events?+

Use IANA zone names (e.g. Asia/Shanghai) in the event timeZone field — avoid fixed UTC offsets so DST transitions work correctly.

07

Technical details

CORS: NoHTTPS: YesSignup: YesOpen source: No
Auth type
oauth
Pricing
free
Protocols
REST
SDKs
python, javascript, java, go, ruby
Response time
48 ms
Last health check
5/12/2026, 7:37:30 AM
08

Endpoints

Parsed from the OpenAPI spec. Showing 12 of 37 non-deprecated endpoints.

POST
/calendarscalendars
DELETE
/calendars/{calendarId}calendars
calendarId:path*
GET
/calendars/{calendarId}calendars
calendarId:path*
PATCH
/calendars/{calendarId}calendars
calendarId:path*
PUT
/calendars/{calendarId}calendars
calendarId:path*
GET
/calendars/{calendarId}/aclacl
calendarId:path*maxResults:querypageToken:queryshowDeleted:querysyncToken:query
POST
/calendars/{calendarId}/aclacl
calendarId:path*sendNotifications:query
DELETE
/calendars/{calendarId}/acl/{ruleId}acl
calendarId:path*ruleId:path*
GET
/calendars/{calendarId}/acl/{ruleId}acl
calendarId:path*ruleId:path*
PATCH
/calendars/{calendarId}/acl/{ruleId}acl
calendarId:path*ruleId:path*sendNotifications:query
PUT
/calendars/{calendarId}/acl/{ruleId}acl
calendarId:path*ruleId:path*sendNotifications:query
POST
/calendars/{calendarId}/acl/watchacl
calendarId:path*maxResults:querypageToken:queryshowDeleted:querysyncToken:query

25 more endpoints not shown. See the OpenAPI spec for the full list.

09

Tags

10

More from Google