Sapilon becomes publicly available on 15 November 2026: 34 days to go. The core goes open source the same day →

Google Calendar integration

In short

Read and create events on a shared calendar. Connect it on the Integrations page; your app then calls Google Calendar through Sapilon without ever holding a Google credential.

Lets your app list calendars and read, create, change and delete events on the account you connect.

Use a shared or service account for anything long-lived: the connection stops working when the person who connected it leaves the company.

Connecting

On the Integrations page choose Connect on Google Calendar, sign in to Google and allow access. Under Advanced you can use your own Google OAuth app instead of Sapilon’s.

You choose these permissions while connecting:

  • See all calendars (on by default)

  • Events your app creates appear under the account you connect.

  • Sapilon’s Google app is still in verification: you may see an “unverified app” screen. Advanced → Bring your own OAuth app avoids it.

What your app can do

Only these requests are available; anything else is refused.

  • GET /users/me/calendarList
  • GET|POST /calendars/*/events
  • GET|PATCH|DELETE /calendars/*/events/*

How the agent uses it

Use integrations.request('google-calendar', …); paths are relative to https://www.googleapis.com/calendar/v3.

  • GET /users/me/calendarList — the calendars the account can see. Example: { method: 'GET', path: '/users/me/calendarList' }.
  • GET /calendars/{calendarId}/events — list events; use query: { timeMin, timeMax, singleEvents: 'true', orderBy: 'startTime' }. Example: { method: 'GET', path: '/calendars/primary/events', query: { timeMin: '2026-10-01T00:00:00Z' } }.
  • POST /calendars/{calendarId}/events — create an event. Example: { method: 'POST', path: '/calendars/primary/events', body: { summary: 'Review', start: { dateTime: '2026-10-05T10:00:00+02:00' }, end: { dateTime: '2026-10-05T11:00:00+02:00' } } }.
  • GET|PATCH|DELETE /calendars/{calendarId}/events/{eventId} — read, change or delete one event. Example: { method: 'PATCH', path: '/calendars/primary/events/abc123', body: { summary: 'Moved' } }.

Times are RFC 3339 with an explicit time zone. Percent-encode calendar ids that contain @ or # inside the path segment.

More from Google: https://developers.google.com/calendar/api

Last updated .

Was this page helpful?