Unified.to
All articles

Calendar API Integration: Real-Time Events, Free/Busy, Scheduling Links & Meeting Recordings Across Platforms


February 12, 2026

Calendar systems sit at the center of how teams coordinate time.

Meetings are created, rescheduled, canceled, converted into webinars, enriched with video links, and sometimes recorded with transcripts. Availability shifts constantly as new events are added. Recurring series split, single instances are edited, and conference links are regenerated.

When calendar data is stitched together with batch sync jobs or cached replicas, availability drifts, deleted events linger, and meeting links break.

Calendar API integration exists to solve this problem.

In this guide, we'll define exactly what the Unified Calendar API covers, how its objects behave in practice, how real-time updates are delivered, how recurrence and deletions work across providers, and how the Calendar category differs from Messaging, Call Center, KMS, Storage, CRM, and GenAI.

What Is the Unified Calendar API?

The Unified Calendar API provides a normalized interface for accessing scheduling data across providers such as:

  • Google Calendar
  • Microsoft Outlook / Office 365
  • Apple iCloud
  • Calendly
  • Cal.com
  • Acuity Scheduling
  • Zoom (meetings & webinars)
  • Google Meet
  • GoTo
  • Dialpad
  • Fathom
  • Fireflies
  • and more

Instead of building separate integrations for each platform, you use one API surface to:

  • List calendars
  • Create, update, and delete events
  • Check free/busy availability
  • Generate scheduling links
  • Retrieve meeting recordings and transcripts
  • Create and manage webinars

Every request is real-time and pass-through. Unified does not cache or store calendar data. Calls are executed directly against the source platform, and results are returned immediately.

There is no replica database. No background sync jobs. No stale state.

Core Calendar Data Objects

The Unified Calendar API standardizes six primary objects.

1. Calendar

Represents a calendar container (e.g., a Google calendar or Outlook calendar).

Key fields

  • id
  • created_at
  • updated_at
  • name
  • timezone
  • is_primary

Methods

  • Create
  • List
  • Retrieve
  • Update
  • Remove

Calendars group events. They do not link to CRM contacts, tickets, storage files, repository objects, or GenAI artifacts.

2. Event

Represents a scheduled meeting or appointment.

Key fields

  • id
  • calendar_id
  • subject
  • start_at
  • end_at
  • timezone
  • status (CONFIRMED / TENTATIVE / CANCELED)
  • organizer
  • attendees
  • recurring_event_id
  • recurrence
  • has_conference
  • conference
  • attachments
  • web_url
  • send_notifications

Methods

  • Create
  • List
  • Retrieve
  • Update
  • Remove

Events support:

  • Single meetings
  • Recurring series
  • Single-instance edits
  • Conference link generation (Google Meet, Teams, etc.)

Organizer and attendee objects contain names and emails only. They are not CRM contacts and do not reference HR, Ticketing, or other Unified categories.

3. Busy (Free/Busy)

Represents blocks of unavailable time.

Key fields

  • id
  • start_at
  • end_at
  • timezone
  • description

Methods

  • List only

Busy objects are derived from provider free/busy endpoints. They cannot be created or modified.

There is no separate 'FreeBusy' object — Busy is the normalized representation.

Represents booking links (e.g., Calendly or Cal.com links).

Key fields

  • id
  • name
  • url
  • duration
  • is_active
  • price_amount
  • price_currency

Methods

  • Create
  • List
  • Retrieve
  • Update
  • Remove

A Link defines availability rules and booking metadata.

It does not represent an actual meeting. An Event is only created after someone books through the link.

5. Recording

Represents metadata about a meeting recording.

Key fields

  • id
  • event_id
  • start_at
  • end_at
  • expires_at
  • web_url
  • media (recording + transcript descriptors)

Methods

  • List
  • Retrieve

Recordings are read-only. Unified does not store audio, video, or transcript files. It returns metadata and provider-hosted URLs.

There is no cross-link to Call Center recordings.

6. Webinar

Represents webinar sessions (e.g., Zoom Webinars).

Key fields

  • id
  • calendar_id
  • subject
  • start_at
  • end_at
  • status
  • join_url
  • panelists
  • registrants
  • recurrence
  • capacity
  • has_recording

Methods

  • Create
  • List
  • Retrieve
  • Update
  • Remove

Webinars differ from events in structure and scale. They include panelists, registrants, registration requirements, and optional Q&A/polling features.

They do not reference CRM contacts or storage files.

Recurrence & Instance Behavior

Recurring events are handled differently by each provider, but Unified normalizes the structure.

Google Calendar

  • recurringEventId links instances to the series master
  • originalStartTime identifies an occurrence
  • Updating one instance requires patching the instance ID
  • Updating 'this and following' requires splitting the series

Canceled events return minimal stubs and eventually disappear.

Microsoft Graph (Outlook)

  • Series master and occurrence objects are separate
  • seriesMasterId links occurrences to the master
  • Deletions appear as @removed entries in delta queries
  • Single-instance edits may not trigger distinct notifications

Developers must reconcile instance changes carefully.

Zoom Meetings

  • Recurrence is defined at creation
  • Occurrences are referenced by occurrence_id
  • Deleting one occurrence requires passing occurrence_id
  • Meeting IDs expire (30 days for non-recurring, 365 days for recurring)

Zoom does not expose a 'completed' meeting state via API.

Real-Time Updates: Native vs Virtual Webhooks

Calendar systems differ widely in event delivery support.

Native Webhooks

Available for:

  • Google Calendar (events.watch)
  • Microsoft Graph change notifications
  • Zoom meeting/webinar events
  • Calendly invitee events
  • Cal.com booking lifecycle events

Native webhooks deliver:

  • Created
  • Updated
  • Deleted
  • Started / Ended (Zoom, Cal.com)
  • Recording completed

These are true push events from the provider.

Virtual Webhooks (Polling)

Used when providers lack push notifications.

Unified polls:

  • Event lists (using updatedMin, delta tokens, etc.)
  • Free/busy endpoints
  • Booking endpoints

Virtual webhooks:

  • Support created and updated events
  • Do not emit deletion events unless provider supports them
  • Respect rate limits
  • Can be configured by interval

Deletion detection often requires full list reconciliation.

Identity & Cross-Category Isolation

Calendar objects are isolated from other Unified categories.

There are:

  • No CRM contact IDs
  • No Ticketing IDs
  • No StorageFile references
  • No Repository IDs
  • No GenAI model references

Organizer and attendee objects contain:

  • name
  • email

They are not linked to CRM or HR records.

Recording objects include:

  • event_id
  • provider-hosted URLs

They are not Storage API objects.

Unified may transform provider IDs internally. If the exact upstream identifier is needed, it is available in raw.__id.

The combination of connection_id + id uniquely identifies a calendar object.

Security & Data Handling

Unified operates under a zero-storage model.

What that means

  • No calendar data is stored at rest
  • No event bodies are written to logs
  • No transcripts are cached
  • No meeting media is stored
  • No attendee data is persisted

All requests are:

  • Encrypted in transit (TLS 1.2+)
  • Operational metadata encrypted at rest (AES-256)
  • Scoped to region (US / EU / AU)
  • Executed in memory only

Customers may use:

  • SAML / OIDC SSO
  • IP allow-listing
  • Environment-scoped API keys
  • Bring-your-own secrets vault

Unified is SOC 2 Type II certified and positions itself for GDPR, CCPA/CPRA, HIPAA and PIPEDA alignment.

FAQ

What's the difference between Free/Busy and Events?

Busy returns minimal availability blocks. Event returns full meeting objects. Busy is read-only. Events support full lifecycle management.

How does a booking link differ from an event?

A Link defines availability rules and a shareable booking URL. An Event represents a confirmed meeting. A booking link does not create an event until someone selects a time.

How is a webinar different from an event?

Events are typically interactive meetings. Webinars are broadcast-oriented sessions with registrants and panelists. Webinars include join URLs, passwords, capacity controls, and optional Q&A/polls.

Does Unified store recordings or transcripts?

No. Recording objects return metadata and provider URLs only. Media remains hosted by the meeting provider.

Can I sync Google and Outlook calendars?

Yes. Unified normalizes both platforms. You can:

  • List events
  • Create events
  • Update events
  • Delete events
  • Subscribe to changes

Across both providers using one schema.

Can I feed meeting transcripts into AI?

Yes. Use the Calendar Recording object to retrieve transcript metadata, then send transcript text into the GenAI API for summarization or embedding. Calendar does not run inference itself.

Build Scheduling Features Without Owning Calendar Complexity

Calendar systems are deceptively complex:

  • Recurring instance edits
  • Conference link immutability
  • Deletion semantics
  • Provider-specific lifecycle states
  • Recording retention policies
  • Busy polling vs push updates

Unified abstracts this into:

  • One event model
  • One free/busy object
  • One recording object
  • One webhook interface

All real-time. All pass-through. No storage layer.

If your product needs:

  • Cross-platform scheduling
  • Real-time availability checks
  • Calendar sync
  • Booking links
  • Meeting recording retrieval
  • Webinar creation
  • Or AI-powered meeting workflows

You can build it once.

→ Start your 30-day free trial

→ Book a demo

All articles