Home/Products/Calendar API
// Calendar API

Calendar API: bots that schedule themselves from Google Calendar and Outlook

The MeetStream Calendar API connects a calendar once. Bots then join every meeting on it, on schedule, with nobody sending a link.

Google CalendarMicrosoft 365 / OutlookRead-only scopes200 connections per user
Calendar

Why a calendar should drive your bots

A calendar already knows when every meeting starts. Connect a user once, and it becomes the trigger rather than a copy.

An isometric grid of day cells lighting one after another, with a small orange cube dropping onto a cell just before it lights
Events sync from the calendar, and a bot lands on the meeting.

A calendar-scheduled bot is an ordinary meeting bot: same webhooks, same per-participant recordings, same transcription engines.

What does one calendar connection give you?

Read-only access

Nothing is written back to Google or Microsoft.

Changes pushed, not polled

Google watch channels and Microsoft change notifications.

Recurring series

One, all or rolling, read from the event’s own rule.

Many accounts, one key

Up to 200 connections per MeetStream user.

Coverage

Build on the calendar API

Connect an account, sync the meetings ahead, and book the ones you choose.

  • Read-only calendar access
    Nothing is written back to the calendar.
  • Events with their meeting links
    Sync reads the link and labels the platform.
  • A bot scheduled onto the meeting
    It joins one minute before the start.
CalendarGoogle or OutlookSyncevents and linksSchedule1 min before startBot joinsWebhooksbot.scheduled to bot.done
Connect once, and MeetStream syncs the calendar, schedules the bot and keeps it in step with every change.

Google Calendar and Outlook in one API

What each provider gives you, and what you get through MeetStream.

CapabilityGoogle CalendarGoogle CalendarOutlookOutlook and Microsoft 365MeetStream
Read-only calendar accessYesYesYesNothing written back
Events with their meeting linksYesYesYesPlatform labelled
Changes pushed, not polledWatch channelsChange notificationsYesEvery calendar
Recurring series from the ruleYesYesYesOne, all or rolling
A bot scheduled onto the meetingCalendar data onlyCalendar data onlyYesA minute before
Many accounts, one keyOne grant eachOne grant eachYesUp to 200
One event contract, both providersGoogle formatMicrosoft formatYesThe same bot events

Colour key: green, yes   amber, conditional   red, provider side only

Where the calendar endpoints live

Calendar endpoints in the API referenceEvery request, response and optionGoogle Calendar OAuth setup guideThe consent flowOutlook calendar setup guideAzure app registration

Schedule a bot for a set time

Schedule a bot for a set timebash
curl -X POST https://api.meetstream.ai/api/v1/bots/create_bot \
  -H "Authorization: Token $MEETSTREAM_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "meeting_link": "https://meet.google.com/abc-defg-hij",
    "bot_name": "Notetaker",
    "join_at": "2026-12-20T20:00:00+05:30"
  }'
Sync

What happens when a meeting moves?

The join time moves with it. MeetStream listens rather than polling.

  • Changes arrive as a push
    Google watch channels and Microsoft Graph notifications.
  • Channels renew themselves
    A Google channel lasts about 30 days, renewed two days early.
  • Your webhooks still fire
    The bot sends its usual lifecycle webhooks.
Watch channelsGoogle, per calendarGraph notificationsOutlook, per calendarRenewed daily03:00 UTC, before expiry
Each channel is checked against its own client-state secret.

Connect a Google Calendar or an Outlook calendar and every change arrives as a push.

Calendar changeWhat MeetStream does
Meeting rescheduledScheduled join time moves with it
Meeting cancelledSchedule deleted, bot marked Cancelled
Meeting moved into the pastBot record cancelled
Series editedExisting schedules rebuilt with the new times
New meeting addedPicked up by the next auto-schedule run

What happens to a recurring series?

A weekly call is one event with a recurrence rule. Three ways to cover it.

One occurrenceName the dateAll occurrencesThe series, cap 52RollingBooks the next one
Rolling reads the recurrence rule and books the next meeting after each one ends.

Daily, weekly, monthly and yearly patterns are all read from the event’s own rule.

To stop future bots, cancel every occurrence or give a start date. The scheduling bots guide has the detail.

Safeguards

Double-booking safeguards

Three things stop a meeting getting two bots.

  • The API hands the bot back
    Book an event that already has a bot and you get that bot to edit.
  • Auto-schedule skips booked events
    Manual and automatic booking can both run.
  • A deduplication key
    A retry returns the original bot, and one replay is billed once.
409 ConflictWith the existing bot IDThe job skipsEvents that carry a botDeduplication keyA retry returns the original
Manual and automatic scheduling can both run without doubling up.

Bots join one minute before the start. On Zoom and Teams a host admits the bot, so allow for the lobby.

Which meeting links are detected

A link on the event is all it takes. Sync reads it and notes the platform.

ZoomA bot joinsGoogle MeetA bot joinsMicrosoft TeamsA bot joins
Webex, GoToMeeting, BlueJeans and Whereby links are recognised and labelled too.

Bots join Zoom, Google Meet and Microsoft Teams meetings. Events on other platforms sync too, each one labelled.

MEETSTREAM DASHBOARDScheduled bots listed in the MeetStream dashboard with platform, status and join time
Scheduled bots wait in the dashboard, with platform, status and join time. The Calendar page carries the auto-schedule toggle.
Security

Enterprise-level security, keep your data private.

Read-only on both providers. MeetStream leaves the calendar exactly as it found it. The security page covers the wider controls.

Read-only scopes

Google grants read access to events and calendars. Microsoft grants calendar read and user read.

Encrypted at rest

Refresh tokens are encrypted at rest, one set per connection. Synced events are encrypted too.

Disconnect ends it

Credentials, watch channels and scheduled bots go with the connection.

SOC 2Type 2 (Under Audit)
ISO 27001Certified
GDPRCompliant

Which calendar permissions do you grant?

Read onlyBoth providersEncrypted at restTokens and synced eventsDisconnect any timeCredentials and bots go
What a calendar connection holds, and how a user ends it.
ProviderWhat is granted
GoogleRead scopes for events and calendars, plus email and profile
MicrosoftCalendar read, user read, and offline access for a long-lived refresh token

What are the calendar API limits?

200calendar connections per user
28 daysdefault sync window ahead
52recurring occurrences per request, default cap
1 minbefore start, the bot joins
What to design forHow it behaves
The auto-schedule jobDaily at midnight UTC, over the next 24 hours
The sync window28 days ahead by default. A set join time reaches three months
OAuth grantsWatch the connection list, and reconnect through the same flow

A multi-tenant product holds its customers’ connections under one API key.

FAQ

Got a question? We got the answer.

Common questions about connecting a calendar, scheduling bots, and what is stored.

What can I build with the Calendar API?

Notetakers, coaching tools, CRM enrichment and meeting analytics. Connect a calendar, and every meeting on it comes back with a recording, a transcript and speaker labels.

Which calendars does the Calendar API support?

Google Calendar (personal or Workspace) and Microsoft 365 Outlook calendars. One MeetStream user can hold up to 200 connections across both. Each one is keyed by provider and account email.

Can one user connect several calendar accounts?

Yes. Up to 200 connections per MeetStream user across Google and Outlook, each keyed by provider and account email, each with its own credentials.

How far ahead can bots be scheduled?

A one-off bot with a set join time can be scheduled up to three months ahead. Calendar sync reads from one day back to 28 days forward by default, and you can widen that window on the request.

What happens when a meeting moves or is cancelled?

Google watch channels and Microsoft Graph change notifications push the change to MeetStream. A reschedule moves the join time; a cancellation deletes the schedule and marks the bot Cancelled.

Can I pick which meetings get a bot?

Yes. Book specific events one at a time from the schedule endpoint. Or turn on auto-schedule to cover every upcoming meeting with a link, then unschedule any you would rather skip.

Does it detect Zoom, Google Meet and Teams links?

Yes. Sync reads the link on each event and labels the platform. Bots join Zoom, Google Meet and Microsoft Teams. Webex, GoToMeeting, BlueJeans and Whereby links are labelled too.

Does it handle recurring meetings?

Yes. Standard iCalendar recurrence rules are read (daily, weekly, bi-weekly, monthly, yearly). Book a single occurrence, or all of them up to a limit of 52 by default. Or let MeetStream set up the next occurrence after each meeting ends.

What calendar permissions are requested?

Read-only on both. Google grants read access to events and calendars, plus email and profile to name the account. Microsoft grants calendar read, user read and offline access. MeetStream reads the calendar and leaves it exactly as it found it.

Where are calendar credentials stored?

OAuth refresh tokens are encrypted at rest, and synced events are stored encrypted too. The flow uses OAuth throughout, so a calendar password never reaches MeetStream.

Why use a calendar API instead of Google and Microsoft directly?

One connection covers both providers: one set of read-only scopes, one push path for changes, one set of bot events.

How do my end users connect their calendars in production?

Your app runs the Google or Microsoft consent flow with your own client ID, then passes the refresh token it receives to the matching connect endpoint. The localhost helper in the docs is there to get your first token while you build, and your own consent flow takes over in production.

Let the calendar decide which meetings get a bot.

Connect once, read-only. Bots are booked, moved and cancelled with the meeting.

Google Calendar
Microsoft 365 Outlook
Read-only scopes
Recurring series
Auto-join

Connect a calendar this afternoon

Read-only on Google or Outlook. Every meeting with a link gets a bot.