---
title: "List calendar events"
method: GET
path: "/v1/calendar/events"
tags: ["Calendar"]
---

# List calendar events

`GET /v1/calendar/events`

## Request

- Base URL: `https://api.slashy.com`
- URL: `https://api.slashy.com/v1/calendar/events`
- Auth: HTTP bearer

Events between `start` and `end` (at most 31 days apart) on the member's own primary calendar, sorted by start. Recurring series are expanded into occurrences and cancelled events are left out. Calendars the member only subscribes to are not included. Private events are busy time only: `private: true` and no summary, location, organizer or attendees.

**Scope:** `calendar.read`. **Rate limit class:** `calendar` (120/minute per key).

## Query parameters

- `inbox_id` string, uuid, required
- `start` string, date-time, required
- `end` string, date-time, required

## Response `200`

OK

- CalendarEventList
  - `events` CalendarEvent[], required: Sorted by start.
    - `id` string, required: Event id. A recurring occurrence's id is `<series id>_<start, UTC>`.
    - `calendar_id` string, required
    - `recurring_event_id` string, nullable, required: The series this occurrence belongs to.
    - `start` string, date-time, required
    - `end` string, date-time, required
    - `all_day` boolean, required
    - `status` string, nullable, required: e.g. `confirmed` or `tentative`. Cancelled events are left out.
    - `private` boolean, required: Private events are busy time only: the four fields below are left out.
    - `summary` string, nullable: Left out when `private` is true.
    - `location` string, nullable: Left out when `private` is true.
    - `organizer_email` string, nullable: Left out when `private` is true.
    - `attendees` Attendee[]: Left out when `private` is true.
      - `email` string, nullable, required
      - `name` string, nullable, required
      - `response_status` string, nullable, required: As the calendar provider reports it, e.g. `accepted`, `declined`, `tentative`, `needsAction`.

## Other responses

- `400`: Bad request. `error` is one of: `invalid_window`.
- `401`: Missing, malformed, unknown, revoked or expired API key. `error` is one of: `invalid_api_key`, `api_key_revoked`, `api_key_expired`.
- `403`: The key is valid but may not make this call. `error` is one of: `browser_not_allowed`, `ip_not_allowed`, `not_enterprise`, `key_owner_inactive`, `insufficient_scope`.
- `404`: Not found, or not readable by this key (the two look the same). `error` is one of: `inbox_not_found`.
- `422`: A parameter is missing or invalid. The body lists each problem (not the `Error` shape).
- `429`: Too many requests. Wait `Retry-After` seconds, then retry. `error` is one of: `too_many_auth_failures`, `rate_limited`, `too_many_concurrent_requests`.

---

[API](https://skmtc.dev/slashy/apis/slashy-enterprise-api.md) - [All operations](https://skmtc.dev/slashy/apis/slashy-enterprise-api/llms.txt) - [OpenAPI document](https://skmtc.dev/slashy/apis/slashy-enterprise-api/revisions/49841c75ad9f?raw)
