> [!NOTE]
> As of **May 1, 2026**, the usage limits for this API were updated. Google Cloud projects that made
> any use of this API between November 2025 and April 2026 will continue with their previously set usage
> quotas. Cloud projects created on or after May 1, 2026 are subject to the new API quotas.
>
> For more information, including timelines, see [Google Workspace standardized model for agent tools and APIs](https://developers.google.com/workspace/tools-safety).
>
> For the full announcement, see [Agent tools and security updates for Google Workspace developers](http://workspaceupdates.googleblog.com/2026/05/agent-tools-and-security-updates-for-workspace-developers.html).

CalDAV is an extension of WebDAV that provides a standard for clients to access
calendar information on a remote server.

Google provides a CalDAV interface that you can use to view and manage calendars
using the CalDAV protocol.

The CalDAV API has the same quota limits as the
Calendar API. For more information, see [Usage
limits](https://developers.google.com/workspace/calendar/api/guides/quota).

## Specifications

For each of the relevant specifications, Google's CalDAV support is as follows:

- [rfc4918: HTTP Extensions for Web Distributed Authoring and Versioning
  (WebDAV)](https://datatracker.ietf.org/doc/html/rfc4918)

  - Supports the HTTP methods `GET`, `PUT`, `HEAD`, `DELETE`, `POST`, `OPTIONS`, `PROPFIND`, and `PROPPATCH`.
  - Doesn't support the HTTP methods `LOCK`, `UNLOCK`, `COPY`, `MOVE`, `MKCOL`, or the `If*` header (except for `If-Match`).
  - Doesn't support arbitrary (user-defined) WebDAV properties.
  - Doesn't support WebDAV Access Control (rfc3744).
- [rfc4791: Calendaring Extensions to WebDAV (CalDAV)](https://datatracker.ietf.org/doc/html/rfc4791)

  - Supports the HTTP method `REPORT`. All reports except `free-busy-query` are implemented.
  - Doesn't support the HTTP method `MKCALENDAR`.
  - Doesn't support the `AUDIO` action.
- [rfc5545: iCalendar](https://datatracker.ietf.org/doc/html/rfc5545)

  - Data exposed in the CalDAV interface is formatted according to the iCalendar specification.
  - Doesn't support `VTODO` or `VJOURNAL` data.
  - Doesn't support the Apple iCal extension to allow user-settable URL properties.
- [rfc6578: Collection Synchronization for WebDAV](https://datatracker.ietf.org/doc/html/rfc6578)

  - Client applications must switch to this mode of operation after the initial sync.
- [rfc6638: Scheduling Extensions to CalDAV](https://datatracker.ietf.org/doc/html/rfc6638)

  - Supports a trivial "inbox," which is always empty.
  - Invitations you receive are automatically delivered into your "events" collection rather than being placed into your "inbox."
  - Doesn't support `free-busy` lookup.
- [caldav-ctag-02: Calendar Collection Entity Tag (CTag) in
  CalDAV](https://www.calendarserver.org/)

  - The calendar `ctag` is like a resource `etag`; it changes when anything in the calendar has changed. This allows the client application to quickly determine that it doesn't need to synchronize any changed events.
- [calendar-proxy: Calendar User Proxy Functionality in CalDAV](https://github.com/apple/ccs-calendarserver/blob/master/doc/Extensions/caldav-proxy.txt)

  - To improve calendar sync performance, requests that include the `calendar-proxy-read-for` or `calendar-proxy-write-for` properties will fail with an iOS UserAgent because iOS devices don't support delegation.

Although our CalDAV implementation doesn't cover every specification, it works
correctly for many clients, including Apple Calendar.

> [!NOTE]
> **Note:** For account security and to prevent abuse, Google might set cookies on client applications that access data using CalDAV.

## Create your client ID

To use the CalDAV API you need to have a [Google
Account](https://www.google.com/accounts/NewAccount).

Before you can send requests to the CalDAV API, you must register your
client with the [Google Cloud console](https://console.cloud.google.com/) by creating a project.


Go to the [Google API Console](https://console.cloud.google.com/project). Click **Create project** ,
enter a name, and click **Create**.

You next need to activate the **CalDAV API**.

To enable an API for your project, do the following:

1. [Open the API Library](https://console.cloud.google.com/apis/library) in the Google API Console. If prompted, select a project or create a new one. The API Library lists all available APIs, grouped by product family and popularity.
2. If the API you want to enable isn't visible in the list, use search to find it.
3. Select the API you want to enable, then click the **Enable** button.
4. If prompted, enable billing.
5. If prompted, accept the API's Terms of Service.

To perform **CalDAV API** requests you need a **Client ID** and
**Client Secret**.

To find your project's client ID and client secret, do the following:

1. Select an existing OAuth 2.0 credential or open the [Credentials page](https://console.cloud.google.com/apis/credentials).
2. If you haven't done so already, create your project's OAuth 2.0 credentials by clicking **Create credentials \> OAuth client ID**, and providing the information needed to create the credentials.
3. Look for the **Client ID** in the **OAuth 2.0 client IDs** section. For details, click the client ID.

## Connect to Google's CalDAV server

To use the CalDAV interface, a client program initially connects with the
calendar server at one of two starting points. In either case, the connection
must be made over HTTPS and must use the [OAuth
2.0](https://developers.google.com/workspace/guides/configure-oauth-consent) authentication scheme. The
CalDAV server refuses to authenticate a request unless it arrives over HTTPS
with OAuth 2.0 authentication of a Google Account. Attempting to connect over
HTTP or using Basic Authentication results in an HTTP `401 Unauthorized` status
code.

If the client program (such as Apple's Calendar app) requires a principal
collection as the starting point, the URI to connect to is:

    https://apidata.googleusercontent.com/caldav/v2/CALENDAR_ID/user

Replace <var translate="no">CALENDAR_ID</var> with the ID of the calendar to be
accessed.

To find the calendar ID through the web interface, select \*\*
Calendar Settings\*\* in the drop-down menu next to the calendar
name. The calendar ID is shown in a section labeled **Calendar
Address**. The calendar ID for a user's primary calendar is the same as that
user's email address.

If a client program (such as [Mozilla
Thunderbird](https://www.thunderbird.net/en-US/calendar/)) requires a calendar
collection as the starting point, use the following URI:

    https://apidata.googleusercontent.com/caldav/v2/CALENDAR_ID/events

> [!WARNING]
> **Warning:** The old **https://www.google.com/calendar/dav** endpoint is deprecated and is no longer supported; use it at your own risk. We recommend you transition to the new endpoint format.