> ## Documentation Index
> Fetch the complete documentation index at: https://bundleup.io/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Calendar

> Calendar events, meetings and bookings in a time window, in one shape.

The Calendar category returns the events in a user’s calendar between two points in time.

**Use it to:** show a user’s upcoming meetings, find free time, or link meetings to records in your product.

## Endpoint

| Endpoint | What it does |
| - | - |
| `GET /v1/calendar/events` | List events that start inside a time window |

Parameters and full schema: [Unified API reference](/docs/api-reference/unified-api). Which calendar providers are supported: [bundleup.io/integrations](https://www.bundleup.io/integrations).

## The time window is required

| Parameter | Description |
| - | - |
| `starts_after` | Return events starting at or after this time. ISO 8601 with offset. |
| `starts_before` | Return events starting before this time. ISO 8601 with offset. |

Both are required. Without a window, providers either refuse the request or return years of history, so there’s no default.

```bash theme={null}
curl -G https://unify.bundleup.io/v1/calendar/events \
  --data-urlencode "starts_after=2026-09-01T00:00:00Z" \
  --data-urlencode "starts_before=2026-09-08T00:00:00Z" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "BU-Connection-Id: conn_abc123"
```

```json theme={null}
{
  "data": [
    {
      "id": "7p4k2n9c1m",
      "title": "Design review",
      "description": "Walk through the new onboarding flow",
      "start_date": "2026-09-01T15:00:00Z",
      "end_date": "2026-09-01T16:00:00Z",
      "status": "confirmed",
      "url": "https://calendar.google.com/event?eid=..."
    },
    {
      "id": "3x8y1z",
      "title": "Company offsite",
      "description": null,
      "start_date": "2026-09-04",
      "end_date": "2026-09-05",
      "status": "confirmed",
      "url": "https://calendar.google.com/event?eid=..."
    }
  ],
  "metadata": { "next": null }
}
```

## Response notes

* **Recurring events are expanded.** Each occurrence is its own entry with its real date, so you never have to interpret a recurrence rule.
* **All-day events** use a `YYYY-MM-DD` date in `start_date` and `end_date` instead of a timestamp. Check the length or format before parsing.
* **`status`** is `confirmed`, `tentative` or `cancelled`.

## What a “calendar event” is, per provider

Providers mean different things by an event:

| Provider type | Returns |
| - | - |
| Calendars (Google Calendar, Outlook) | Calendar events. `url` opens the event. |
| Scheduling tools (Calendly) | Scheduled bookings. `url` is the booking’s API resource. |
| Meeting tools (Zoom) | Scheduled meetings. There’s no web page for one, so `url` is `null`. Zoom filters by calendar date rather than exact time, so a window can include meetings from earlier on its first day or later on its last. |

Attendees, conferencing links and organizers aren’t part of the normalized shape. Get them with [`include_raw=true`](/docs/guides/unified/conventions#include-the-raw-response) or through the [Proxy](/docs/guides/proxy/overview).


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.