Calendar — entry 006 of 17

Google Calendar

Verified Jul 2026

The Google Calendar API reads and writes events, calendars, free/busy data, and reminders for any Google account that's granted OAuth consent, with push-notification channels available so an app can watch a calendar for changes instead of polling it. It's the same REST API that powers Calendar add-ons and third-party scheduling tools like Calendly. Usage is free under Google's shared per-minute and per-project quotas (10,000 requests/minute/project as of the May 2026 quota update); there's no separate paid tier for the API itself, only future overage billing above a 1,000,000-requests-a-day threshold.

calendar-eventsoauthgooglescheduling
AuthenticationOAuthRequires an OAuth flow; expect app registration.
HTTPSSupportedTraffic is encrypted in transit.
CORSEnabledCallable directly from browser JavaScript.
PricingFreeNo paid tier — free for the documented use case.
FormatsJSONResponses can be requested as JSON.

GreatAPIs Score

Score77out of 100
Authentication8/25OAuth flow required
Pricing20/20Free to use
Docs20/20Machine-readable spec file bundled
Formats9/15Single response format
Freshness20/20Verified within 6 months

Embed this badge

Scored 77 on greatapis.com
<a href="https://greatapis.com/api/google-calendar/"><img src="https://greatapis.com/badge/google-calendar.svg" alt="Scored 77 on greatapis.com"></a>

Auth quickstart

  1. Register an app / run the OAuth flow to obtain a bearer token.
  2. Send it as an Authorization headerAuthorization: Bearer <token>
Stored keyNo key stored

Your key is stored only in this browser (localStorage) and sent directly to the API — never to greatapis.

Endpoints

Servers
https://www.googleapis.com/calendar/v3
Auth
Oauth2Oauth2c
acl7
GET/calendars/{calendarId}/acl
Parameters
NameInRequiredType
calendarIdpathyesstring
maxResultsquerynointeger
pageTokenquerynostring
showDeletedquerynoboolean
syncTokenquerynostring
Responses
StatusDescriptionSchema
200Successful responseAcl
POST/calendars/{calendarId}/acl
Parameters
NameInRequiredType
calendarIdpathyesstring
sendNotificationsquerynoboolean
Request body

application/jsonAclRule

Responses
StatusDescriptionSchema
200Successful responseAclRule
POST/calendars/{calendarId}/acl/watch
Parameters
NameInRequiredType
calendarIdpathyesstring
maxResultsquerynointeger
pageTokenquerynostring
showDeletedquerynoboolean
syncTokenquerynostring
Request body

application/jsonChannel

Responses
StatusDescriptionSchema
200Successful responseChannel
GET/calendars/{calendarId}/acl/{ruleId}
Parameters
NameInRequiredType
calendarIdpathyesstring
ruleIdpathyesstring
Responses
StatusDescriptionSchema
200Successful responseAclRule
PUT/calendars/{calendarId}/acl/{ruleId}
Parameters
NameInRequiredType
calendarIdpathyesstring
ruleIdpathyesstring
sendNotificationsquerynoboolean
Request body

application/jsonAclRule

Responses
StatusDescriptionSchema
200Successful responseAclRule
PATCH/calendars/{calendarId}/acl/{ruleId}
Parameters
NameInRequiredType
calendarIdpathyesstring
ruleIdpathyesstring
sendNotificationsquerynoboolean
Request body

application/jsonAclRule

Responses
StatusDescriptionSchema
200Successful responseAclRule
DELETE/calendars/{calendarId}/acl/{ruleId}
Parameters
NameInRequiredType
calendarIdpathyesstring
ruleIdpathyesstring
Responses
StatusDescriptionSchema
200Successful response
calendarList7
GET/users/me/calendarList
Parameters
NameInRequiredType
maxResultsquerynointeger
minAccessRolequerynostring
pageTokenquerynostring
showDeletedquerynoboolean
showHiddenquerynoboolean
syncTokenquerynostring
Responses
StatusDescriptionSchema
200Successful responseCalendarList
POST/users/me/calendarList
Parameters
NameInRequiredType
colorRgbFormatquerynoboolean
Request body

application/jsonCalendarListEntry

Responses
StatusDescriptionSchema
200Successful responseCalendarListEntry
POST/users/me/calendarList/watch
Parameters
NameInRequiredType
maxResultsquerynointeger
minAccessRolequerynostring
pageTokenquerynostring
showDeletedquerynoboolean
showHiddenquerynoboolean
syncTokenquerynostring
Request body

application/jsonChannel

Responses
StatusDescriptionSchema
200Successful responseChannel
GET/users/me/calendarList/{calendarId}
Parameters
NameInRequiredType
calendarIdpathyesstring
Responses
StatusDescriptionSchema
200Successful responseCalendarListEntry
PUT/users/me/calendarList/{calendarId}
Parameters
NameInRequiredType
calendarIdpathyesstring
colorRgbFormatquerynoboolean
Request body

application/jsonCalendarListEntry

Responses
StatusDescriptionSchema
200Successful responseCalendarListEntry
PATCH/users/me/calendarList/{calendarId}
Parameters
NameInRequiredType
calendarIdpathyesstring
colorRgbFormatquerynoboolean
Request body

application/jsonCalendarListEntry

Responses
StatusDescriptionSchema
200Successful responseCalendarListEntry
DELETE/users/me/calendarList/{calendarId}
Parameters
NameInRequiredType
calendarIdpathyesstring
Responses
StatusDescriptionSchema
200Successful response
calendars6
POST/calendars
Request body

application/jsonCalendar

Responses
StatusDescriptionSchema
200Successful responseCalendar
GET/calendars/{calendarId}
Parameters
NameInRequiredType
calendarIdpathyesstring
Responses
StatusDescriptionSchema
200Successful responseCalendar
PUT/calendars/{calendarId}
Parameters
NameInRequiredType
calendarIdpathyesstring
Request body

application/jsonCalendar

Responses
StatusDescriptionSchema
200Successful responseCalendar
PATCH/calendars/{calendarId}
Parameters
NameInRequiredType
calendarIdpathyesstring
Request body

application/jsonCalendar

Responses
StatusDescriptionSchema
200Successful responseCalendar
DELETE/calendars/{calendarId}
Parameters
NameInRequiredType
calendarIdpathyesstring
Responses
StatusDescriptionSchema
200Successful response
POST/calendars/{calendarId}/clear
Parameters
NameInRequiredType
calendarIdpathyesstring
Responses
StatusDescriptionSchema
200Successful response
channels1
POST/channels/stop
Request body

application/jsonChannel

Responses
StatusDescriptionSchema
200Successful response
colors1
GET/colors
Responses
StatusDescriptionSchema
200Successful responseColors
events11
GET/calendars/{calendarId}/events
Parameters
NameInRequiredType
calendarIdpathyesstring
alwaysIncludeEmailquerynoboolean
eventTypesquerynoarray
iCalUIDquerynostring
maxAttendeesquerynointeger
maxResultsquerynointeger
orderByquerynostring
pageTokenquerynostring
privateExtendedPropertyquerynoarray
qquerynostring
sharedExtendedPropertyquerynoarray
showDeletedquerynoboolean
showHiddenInvitationsquerynoboolean
singleEventsquerynoboolean
syncTokenquerynostring
timeMaxquerynostring
timeMinquerynostring
timeZonequerynostring
updatedMinquerynostring
Responses
StatusDescriptionSchema
200Successful responseEvents
POST/calendars/{calendarId}/events
Parameters
NameInRequiredType
calendarIdpathyesstring
conferenceDataVersionquerynointeger
maxAttendeesquerynointeger
sendNotificationsquerynoboolean
sendUpdatesquerynostring
supportsAttachmentsquerynoboolean
Request body

application/jsonEvent

Responses
StatusDescriptionSchema
200Successful responseEvent
POST/calendars/{calendarId}/events/import
Parameters
NameInRequiredType
calendarIdpathyesstring
conferenceDataVersionquerynointeger
supportsAttachmentsquerynoboolean
Request body

application/jsonEvent

Responses
StatusDescriptionSchema
200Successful responseEvent
POST/calendars/{calendarId}/events/quickAdd
Parameters
NameInRequiredType
calendarIdpathyesstring
textqueryyesstring
sendNotificationsquerynoboolean
sendUpdatesquerynostring
Responses
StatusDescriptionSchema
200Successful responseEvent
POST/calendars/{calendarId}/events/watch
Parameters
NameInRequiredType
calendarIdpathyesstring
alwaysIncludeEmailquerynoboolean
eventTypesquerynoarray
iCalUIDquerynostring
maxAttendeesquerynointeger
maxResultsquerynointeger
orderByquerynostring
pageTokenquerynostring
privateExtendedPropertyquerynoarray
qquerynostring
sharedExtendedPropertyquerynoarray
showDeletedquerynoboolean
showHiddenInvitationsquerynoboolean
singleEventsquerynoboolean
syncTokenquerynostring
timeMaxquerynostring
timeMinquerynostring
timeZonequerynostring
updatedMinquerynostring
Request body

application/jsonChannel

Responses
StatusDescriptionSchema
200Successful responseChannel
GET/calendars/{calendarId}/events/{eventId}
Parameters
NameInRequiredType
calendarIdpathyesstring
eventIdpathyesstring
alwaysIncludeEmailquerynoboolean
maxAttendeesquerynointeger
timeZonequerynostring
Responses
StatusDescriptionSchema
200Successful responseEvent
PUT/calendars/{calendarId}/events/{eventId}
Parameters
NameInRequiredType
calendarIdpathyesstring
eventIdpathyesstring
alwaysIncludeEmailquerynoboolean
conferenceDataVersionquerynointeger
maxAttendeesquerynointeger
sendNotificationsquerynoboolean
sendUpdatesquerynostring
supportsAttachmentsquerynoboolean
Request body

application/jsonEvent

Responses
StatusDescriptionSchema
200Successful responseEvent
PATCH/calendars/{calendarId}/events/{eventId}
Parameters
NameInRequiredType
calendarIdpathyesstring
eventIdpathyesstring
alwaysIncludeEmailquerynoboolean
conferenceDataVersionquerynointeger
maxAttendeesquerynointeger
sendNotificationsquerynoboolean
sendUpdatesquerynostring
supportsAttachmentsquerynoboolean
Request body

application/jsonEvent

Responses
StatusDescriptionSchema
200Successful responseEvent
DELETE/calendars/{calendarId}/events/{eventId}
Parameters
NameInRequiredType
calendarIdpathyesstring
eventIdpathyesstring
sendNotificationsquerynoboolean
sendUpdatesquerynostring
Responses
StatusDescriptionSchema
200Successful response
GET/calendars/{calendarId}/events/{eventId}/instances
Parameters
NameInRequiredType
calendarIdpathyesstring
eventIdpathyesstring
alwaysIncludeEmailquerynoboolean
maxAttendeesquerynointeger
maxResultsquerynointeger
originalStartquerynostring
pageTokenquerynostring
showDeletedquerynoboolean
timeMaxquerynostring
timeMinquerynostring
timeZonequerynostring
Responses
StatusDescriptionSchema
200Successful responseEvents
POST/calendars/{calendarId}/events/{eventId}/move
Parameters
NameInRequiredType
calendarIdpathyesstring
eventIdpathyesstring
destinationqueryyesstring
sendNotificationsquerynoboolean
sendUpdatesquerynostring
Responses
StatusDescriptionSchema
200Successful responseEvent
freebusy1
POST/freeBusy
Request body

application/jsonFreeBusyRequest

Responses
StatusDescriptionSchema
200Successful responseFreeBusyResponse
settings3
GET/users/me/settings
Parameters
NameInRequiredType
maxResultsquerynointeger
pageTokenquerynostring
syncTokenquerynostring
Responses
StatusDescriptionSchema
200Successful responseSettings
POST/users/me/settings/watch
Parameters
NameInRequiredType
maxResultsquerynointeger
pageTokenquerynostring
syncTokenquerynostring
Request body

application/jsonChannel

Responses
StatusDescriptionSchema
200Successful responseChannel
GET/users/me/settings/{setting}
Parameters
NameInRequiredType
settingpathyesstring
Responses
StatusDescriptionSchema
200Successful responseSetting

Try it

Developer reference

Base URLhttps://www.googleapis.com/calendar/v3
Rate limit

Google's Calendar API usage-limits docs (developers.google.com/workspace/calendar/api/guides/quota) publish a concrete default -- confirmed live -- of 10,000 requests/minute/project and 600 requests/minute/user, both sliding-window per-minute quotas, plus a 1,000,000-requests/day-per-project threshold before overage billing applies; project owners can request a higher ceiling through the Cloud Console's Quotas page, though approval isn't guaranteed.

Key endpoints
  • GET/users/me/calendarList
  • GET/calendars/{calendarId}
  • GET/calendars/{calendarId}/events
  • POST/calendars/{calendarId}/events/quickAdd
  • POST/freeBusy