Calendars
Read calendar integration metadata for team members — provider, connected email, and sync status. Requires a secret key with the calendars:read scope.
The Calendars API exposes calendar integration metadata for your organization's team members. It is read-only and returns no OAuth tokens or credentials.
Requires the calendars:read scope on a secret key (sk_*). Public keys are not accepted.
List calendars
Returns all calendar integrations across your organization, ordered by primary calendar first, then by creation date.
Query parameters
| Prop | Type | Default |
|---|---|---|
userId | UUID | - |
teamId | string | - |
provider | "GOOGLE" | "MICROSOFT" | "APPLE" | - |
syncStatus | "PENDING" | "SYNCING" | "SUCCESS" | "ERROR" | "NEEDS_REAUTH" | - |
limit | integer | 50 |
offset | integer | 0 |
Sync status values:
| Value | Meaning |
|---|---|
PENDING | Integration created but not yet synced |
SYNCING | Sync currently in progress |
SUCCESS | Last sync completed successfully |
ERROR | Last sync failed — check lastSyncAt |
NEEDS_REAUTH | OAuth token expired, user must reconnect |
Response
Get calendars for a user
Returns all calendars connected by a specific team member.
Returns 404 not_found if the user does not exist in your organization or is not an active team member.
Response fields
| Prop | Type | Default |
|---|---|---|
id | string | - |
userId | UUID | - |
teamId | string | - |
provider | "GOOGLE" | "MICROSOFT" | "APPLE" | - |
calendarId | string | - |
calendarName | string | - |
providerEmail | string | - |
timezone | string | - |
isPrimary | boolean | - |
syncStatus | string | - |
lastSyncAt | ISO 8601 | - |
supportsWebhooks | boolean | - |
Common patterns
Detect stale integrations — find members who need to reconnect:
Check before scheduling — verify a member has a healthy primary calendar before assigning a booking: