---
title: Google Calendar API Integration on Truto
slug: googlecalendar
category: Scheduling
canonical: "https://truto.one/integrations/detail/googlecalendar/"
---

# Google Calendar API Integration on Truto



**Category:** Scheduling  
**Status:** Generally available

## Unified APIs

### Unified User Directory API

- **Me** — 

### Unified Calendar API

- **Availability** — Represents the availability of a person in a time period.
- **Calendars** — Represents a calendar of a user. Can have multiple events associated with it.
- **Contacts** — 
- **Events** — Events are the time-bound tasks that are associated with a calendar.

### Unified Search API

- **Search** — Search endpoint for all the apps.

## MCP-ready AI tools

Truto exposes 38 tools for Google Calendar that AI agents can call directly.

- **list_all_googlecalendar_userinfo** — Returns information about the currently authenticated user in Google Calendar.
- **list_all_googlecalendar_calendar_lists** — Returns the calendars on the user's calendar list. You can filter the results using optional query parameters such as minAccessRole to restrict results by access level, showDeleted to include deleted calendars, and showHidden to include hidden ones. 
- **get_single_googlecalendar_calendar_list_by_id** — Retrieves detailed information about a specific calendar from the user's calendar list. It always requires the ID to fetch.
- **create_a_googlecalendar_calendar_list** — Create an access control rule for a calendar in Google Calendar. Requires calendar id and a request body with scope type and role. Returns the created ACL rule including its id, scope, and role.
- **update_a_googlecalendar_calendar_list_by_id** — Update an existing calendar on the user's calendar list in Google Calendar using id. Returns the updated calendar resource including etag for versioning.
- **delete_a_googlecalendar_calendar_list_by_id** — Delete a calendar from the user's calendar list in Google Calendar. Requires calendarId as id. Returns an empty response body on success.
- **googlecalendar_calendar_lists_watch** — Watch for changes to CalendarList resources in Google Calendar. Requires a request body with id, type, and address to create a notification channel. Returns channel id, resourceId, resourceUri, token, and expiration timestamp.
- **get_single_googlecalendar_calendar_by_id** — Get metadata for a calendar by id in Google Calendar. Returns fields such as summary, description, timeZone, and location.
- **create_a_googlecalendar_calendar** — Create a secondary calendar with summary in Google Calendar. Returns the created calendar's id and other calendar details.
- **update_a_googlecalendar_calendar_by_id** — Update metadata for a calendar using id in Google Calendar. Returns updated calendar fields including etag for versioning.
- **delete_a_googlecalendar_calendar_by_id** — Delete a secondary calendar by id in Google Calendar. Returns an empty response body on success. Use calendars.clear for clearing events on primary calendars.
- **googlecalendar_calendars_clear** — Clear all events from the calendar identified by id in Google Calendar. This deletes all events associated with the specified calendar. The response is empty if successful.
- **list_all_googlecalendar_events** — Returns events on the specified calendar. Use the required query parameter calendarId to specify which calendar to retrieve events from. This endpoint supports a variety of optional query parameters to filter and customize the list of returned events. You can filter by event type using eventTypes (e.g., birthday, focusTime, outOfOffice), or search for a specific event using iCalUID. Use maxAttendees to limit the number of attendees returned per event, and orderBy to sort results by startTime or updated. The privateExtendedProperty and sharedExtendedProperty parameters allow filtering events by custom key-value metadata. The q parameter performs a free text search across several fields: summary, description, location, attendee's displayName, attendee's email, organizer's displayName, organizer's email, workingLocationProperties.officeLocation.buildingId, deskId, label, and workingLocationProperties.customLocation.label. You can include deleted events using showDeleted, hidden invitations with showHiddenInvitations, or expand recurring events into single instances using singleEvents. Use timeMin and timeMax to set the date range, timeZone to define the time zone used in responses, and updatedMin to return only events updated since a specific time. 
- **create_a_googlecalendar_event** — Creates an event in the specified calendar. The calendarId is required to identify which calendar the event should be added to. 
- **get_single_googlecalendar_event_by_id** — Returns a single event on the specified calendar. It always requires an ID to fetch. Use the required parameter calendar_id to identify which calendar to retrieve the event. 
- **update_a_googlecalendar_event_by_id** — Update an event in the specified calendar. This operation always requires the ID to identify which event to update. Additionally, the calendarId is required to specify which calendar the event belongs to.
- **googlecalendar_events_quick_add** — Create an event in Google Calendar using calendar_id and text describing the event. Returns the created event resource including id, summary, start, and end times.
- **googlecalendar_events_move** — Move an event identified by id from calendar_id to a destination calendar in Google Calendar. Only default events can be moved. Returns the updated event resource including the updated timestamp.
- **delete_a_googlecalendar_event_by_id** — Delete a single event on the specified calendar. The calendarId parameter is required to specify which calendar the event belongs to, and an ID is always required to perform the deletion. You can also use the optional sendUpdates parameter to control who receives a notification about the event being deleted.
- **googlecalendar_events_import** — Import an event to a calendar in Google Calendar using calendar_id and an Events resource with required start, end, and iCalUID fields. Returns the imported event with its id and details.
- **googlecalendar_events_watch** — Watch for changes to Events in Google Calendar for calendar_id. Returns channel id, resourceId, resourceUri, token, and expiration timestamp.
- **list_all_googlecalendar_event_instances** — Get instances of a recurring event by calendar_id and id in Google Calendar. Returns event details including summary, start and end times, and status for each instance.
- **list_all_googlecalendar_free_busy** — Retrieves free/busy availability information for a list of specified calendars or groups within a defined time range. You must provide timeMin and timeMax parameters to set the start and end of the interval in RFC3339 format, and items, which is a list of calendar or group IDs to query. Optionally, you can specify a timeZone to format the response (defaults to UTC), set a groupExpansionMax to limit the number of calendar identifiers returned for a group (maximum 100), and define a calendarExpansionMax to restrict how many individual calendars are included in the response (maximum 50).
- **list_all_googlecalendar_search_contacts** — Provides a list of contacts from the authenticated user's grouped contacts that match the given search query. The required query parameter performs a prefix match on fields such as names, nickNames, emailAddresses, phoneNumbers, and organizations. The readMask parameter is also required and specifies which fields to return for each contact, using a comma-separated list in FieldMask format (e.g., names, emailAddresses, phoneNumbers, etc.). The optional sources query parameter can be used to control which source types to return.
- **get_single_googlecalendar_search_contact_by_id** — Get information about a specific contact by id in Google Calendar. Requires personFields parameter specifying which fields to return such as names, emailAddresses, phoneNumbers, and organizations.
- **delete_a_googlecalendar_search_contact_by_id** — Delete a contact person by id in Google Calendar. The response is empty if successful. Non-contact data will not be deleted. Mutate requests must be sent sequentially to avoid latency and failures.
- **list_all_googlecalendar_other_contacts** — Returns a list of contacts from the authenticated user's other contacts that match the search query. The "query" parameter is required and performs a prefix match against the contact's names, emailAddresses, and phoneNumbers fields. The "readMask" parameter is also required and specifies which fields to return for each contact, such as names, emailAddresses, phoneNumbers, or metadata, using a comma-separated list in FieldMask format.
- **list_all_googlecalendar_acl** — Get the access control list rules for the calendar with calendar_id in Google Calendar. Returns items with ACL rules including kind, etag, and tokens for pagination or synchronization.
- **get_single_googlecalendar_acl_by_id** — Get an access control rule for a calendar in Google Calendar using calendar_id and id. Returns fields id and role representing the rule identifier and its access role.
- **delete_a_googlecalendar_acl_by_id** — Delete an access control rule for a calendar in Google Calendar. Requires calendar_id and id. Returns an empty response body on success.
- **update_a_googlecalendar_acl_by_id** — Update an access control rule for a calendar in Google Calendar using calendar_id and id. Returns the updated ACL resource including scope and role.
- **create_a_googlecalendar_acl** — Create an access control rule for a calendar in Google Calendar using calendar_id. Returns the created ACL rule including role and scope details.
- **googlecalendar_acl_watch** — Watch for changes to ACL resources for calendar identified by calendar_id in Google Calendar. Returns channel id, resourceId, resourceUri, token, and expiration timestamp.
- **googlecalendar_channels_stop** — Stop watching resources through a channel in Google Calendar. Returns an empty response on success.
- **list_all_googlecalendar_colors** — Get color definitions for calendars and events in Google Calendar. Returns calendar and event color IDs with their background and foreground color codes.
- **list_all_googlecalendar_settings** — Get all user settings for the authenticated user in Google Calendar. Returns settings including id and value fields. Supports maxResults, pageToken, and syncToken for pagination and incremental sync.
- **get_single_googlecalendar_setting_by_id** — Get a single user setting by id in Google Calendar. Returns the setting's id and value.
- **googlecalendar_settings_watch** — Watch for changes to Settings resources in Google Calendar. Requires a request body with id, type, and address to create a notification channel. Returns channel id, resourceId, resourceUri, token, and expiration timestamp.

## How it works

1. **Link your customer's Google Calendar account.** Use Truto's frontend SDK; we handle every OAuth and API key flow so you don't need to create the OAuth app.
2. **Authentication is automatic.** Truto refreshes tokens, stores credentials securely, and injects them into every API request.
3. **Call Truto's API to reach Google Calendar.** The Proxy API is a 1-to-1 mapping of the Google Calendar API.
4. **Get a unified response format.** Every response uses a single shape, with cursor-based pagination and data in the `result` field.

## Use cases

- **Automate interview scheduling in your ATS** — Query real-time availability across multiple interviewers using free/busy data, then programmatically create interview events with attendees and conferencing links — all without your recruiters leaving your platform.
- **Power bidirectional meeting sync for your CRM** — Keep your CRM timeline in lockstep with Google Calendar by watching for event changes via webhooks and syncing meeting updates, reschedules, and cancellations back to contact and deal records automatically.
- **Build native scheduling into your customer-facing product** — Let your users expose bookable time slots to their clients by reading calendar availability and creating confirmed events directly, replacing the need for a separate scheduling tool.
- **Enable meeting intelligence and call recording workflows** — Subscribe to calendar event changes to detect upcoming meetings with external attendees and conferencing links, so your platform can automatically join, record, and associate transcripts with the right records.
- **Sync project tasks to calendar time blocks** — When users are assigned work in your project management tool, automatically create focused time blocks on their Google Calendar to protect deep work time and reduce context switching.

## What you can build

- **Real-time availability engine** — Use the free/busy endpoint to query multiple users' calendars simultaneously and surface open meeting slots to external parties without exposing private event details.
- **Two-way event sync with conflict detection** — Combine event webhooks with incremental event listing to maintain a perfect mirror between your platform's meetings and Google Calendar, detecting and resolving conflicts in real time.
- **Multi-calendar routing picker** — Let your end users choose which of their Google calendars to check for conflicts and which to push new events to, using the calendar list endpoints to present all available calendars.
- **Recurring event instance management** — Expand recurring event series into individual occurrences so your platform can track attendance, notes, or status changes on a per-instance basis without breaking sync logic.
- **Automated meeting creation with conferencing links** — Programmatically create calendar events with Google Meet links, attendee lists, and custom descriptions when workflows are triggered inside your product — like moving a deal stage or confirming a booking.
- **Contact-enriched meeting prep dashboard** — Scan upcoming events for attendee emails, match them against contacts via the search contacts endpoints, and surface contextual prep cards before each meeting starts.

## FAQs

### What authentication method does the Google Calendar integration use?

Truto handles OAuth 2.0 authentication with Google on your behalf. Your end users go through a standard Google consent flow to grant calendar access, and Truto manages token storage, refresh, and revocation automatically.

### Can I receive real-time notifications when a user's calendar changes?

Yes. Truto supports watch endpoints for events, calendar lists, ACLs, and settings. You can set up webhook channels via googlecalendar_events_watch, googlecalendar_calendar_lists_watch, and others to receive push notifications when data changes, eliminating the need for constant polling.

### How does the integration handle recurring events?

You can use the list_all_googlecalendar_event_instances endpoint to expand a recurring event series into its individual occurrences. This lets you manage, update, or track each instance independently without affecting the entire series.

### Can I query availability without reading full event details?

Yes. The list_all_googlecalendar_free_busy endpoint returns only busy/free time ranges for specified calendars within a time window, without exposing event titles, descriptions, or attendee lists — ideal for booking flows where privacy matters.

### Which Unified APIs map to Google Calendar resources?

Google Calendar is covered by the Unified Calendar API (Events, Calendars, Availability, Contacts), the Unified User Directory API (Me for user info), and the Unified Search API. This means you can write integration code once and extend to other scheduling providers later.

### Can I tag events with custom metadata to link them back to my application's records?

Yes. When creating or updating events via create_a_googlecalendar_event or update_a_googlecalendar_event_by_id, you can attach extended properties (private or shared) to events. You can then filter events by these custom keys when listing, making it straightforward to map Google Calendar events to your internal entities.
