---
title: "Get calendar event occurrences."
method: GET
path: "/calendar/v0-nsfw/events/occurrences"
tags: ["CalendarEvent"]
---

# Get calendar event occurrences.

`GET /calendar/v0-nsfw/events/occurrences`

## Request

- Base URL: `https://api.apaleo.com` (the document declares no server; this is the origin it was published from)
- URL: `https://api.apaleo.com/calendar/v0-nsfw/events/occurrences`
- Auth: OAuth 2
  - Implicit: `https://identity.apaleo.com/connect/authorize`
  - Scopes: `calendar-events.read`, `admin`

Get every expanded occurrence that overlaps the given date range for the properties
the caller can access. Recurrence is expanded and cancelled slots are omitted.
`textSearch` narrows to events where every word of this text is a case-insensitive prefix of a word in the title or the description. A hyphenated word also matches when each of its parts is a prefix of some word.<br>You must have this scope: 'calendar-events.read'.<br>For fine-grained clients, you must have this permission: 'core.calendar_events.read'.

## Query parameters

- `propertyIds` string[]
- `from` string, date, required
- `to` string, date, required
- `categories` string[]
- `eventIds` string[]
- `textSearch` string
- `expand` string[]

## Response `200`

Success.

- CalendarEventOccurrenceListModel
  - `occurrences` CalendarEventOccurrenceModel[], required: List of calendar event occurrences
    - `eventId` string, required: The id of the calendar event this occurrence came from.
    - `propertyIds` string[], required: The caller-accessible properties of the event this occurrence applies to, sorted A–Z by property code. A property is left out when this date is cancelled or overridden for it.
    - `title` string, required: The title of the calendar event at read time.
    - `description` string, nullable: The description of the calendar event at read time.
    - `category` 'ConcertsAndMusic' | 'Sports' | 'ArtsAndEntertainment' | 'ConferencesAndBusiness' | 'CommunityAndLifestyle' | 'PublicHoliday' | 'SchoolHoliday' | 'Other', required: The category of the calendar event.
    - `from` string, date, required: The first date this occurrence takes place.
    - `to` string, date, required: The last date this occurrence takes place, inclusive.
    - `originalEvent` CalendarEventOriginalEventModel, required
      - `from` string, date, required: The first date stored on the calendar event that produced this occurrence.
      - `to` string, date, required: The last date stored on the calendar event that produced this occurrence, inclusive.
    - `isShared` boolean, required: True when the underlying calendar event currently lists more than one property in total — not whether this occurrence lists more than one. A single-entry `propertyIds` with `isShared: true` means the event also spans a property the caller cannot access.
    - `recurrence` CalendarEventRecurrenceModel
      - `frequency` 'Daily' | 'Weekly' | 'Monthly' | 'Yearly', required: How often the event repeats.
      - `interval` integer, nullable: The number of frequency units between occurrences. Defaults to 1 when omitted.
      - `end` string, date, nullable: The date after which the event no longer recurs. Recurs indefinitely when omitted.
    - `actions` ActionModelCalendarEventActionNotAllowedCalendarEventActionReason[], nullable: Present only with expand=actions.
      - `action` 'Patch' | 'Delete' | 'DeleteOccurrence' | 'Split' | 'Fork' | 'OverrideOccurrence', required
      - `isAllowed` boolean, required
      - `reasons` ActionReasonModelNotAllowedCalendarEventActionReason[], nullable
        - `code` 'PatchNotAllowedWithoutPermissionOnEveryProperty' | 'DeleteNotAllowedWithoutPermissionOnEveryProperty' | 'DeleteOccurrenceNotAllowedForNonRecurringEvent' | 'DeleteOccurrenceNotAllowedForOnlyRemainingOccurrence' | 'SplitNotAllowedForNonRecurringEvent' | 'SplitNotAllowedAtFirstOccurrence' | 'SplitNotAllowedAtLastOccurrence' | 'SplitNotAllowedWithoutPermissionOnEveryProperty' | 'ForkNotAllowedForSinglePropertyEvent' | 'OverrideOccurrenceNotAllowedForNonRecurringEvent', required
        - `message` string, required
  - `count` integer, required: Total count of items

## Other responses

- `204`: No calendar event occurrences could be found.
- `400`: Bad request.
- `401`: You are unauthorized.
- `403`: Forbidden.
- `404`: The Request-URI could not be found.
- `422`: Validation errors in the request body or query params.
- `499`: Client closed request.
- `500`: An unexpected error occurred.
- `503`: The server is currently unavailable. Please try later.

## Changes

- **2026-10-29** `e3f959069a09`: 1 info
  - added the new optional `query` request parameter `expand`
- **2026-10-02** `c083a688ad03`: 1 info
  - added the new optional `query` request parameter `textSearch`
- **2026-09-25** `7d907468782f`: 1 info
  - the `query` request parameter `propertyIds` became optional
- **2026-09-14** `873c32b7ce0a`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/apaleo/apis/apaleo-calendar-api-not-safe-for-work/changes/calendar/v0-nsfw/events/occurrences/get.md)

---

[API](https://skmtc.dev/apaleo/apis/apaleo-calendar-api-not-safe-for-work.md) - [All operations](https://skmtc.dev/apaleo/apis/apaleo-calendar-api-not-safe-for-work/llms.txt) - [OpenAPI document](https://skmtc.dev/apaleo/apis/apaleo-calendar-api-not-safe-for-work/revisions/e3f959069a09?raw)
