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

# Search CalendarEvents

> Search and list CalendarEvent records with filtering, sorting, and pagination.

A **CalendarEvent** represents a physical, virtual, or hybrid event published on the Members Portal. Events can be free or monetised with ticket products.

Physical events can be linked to a space resource via `ResourceId`, which automatically blocks that resource from being booked for the event's duration. Virtual events require the Zoom integration and support both conference calls (`IncludeZoomInvite`) and webinars (`CreateZoomWebinarInvite`).

Events support recurring schedules: set `RepeatEvent = true` on creation and configure `Repeats`, `RepeatEvery`, `RepeatUntil`, and the day-of-week flags. `RepeatEvent` and all repeat-configuration fields (`Repeats`, `RepeatEvery`, `RepeatUntil`, `RepeatOn*`) are create-only. Once an event series is created, only `WhichEventsToUpdate` can be used to update or delete events in the series. New events cannot be added to an existing series.

Attendance can be restricted to all customers, contacts only (`OnlyForContacts`), or members only (`OnlyForMembers`). Set `Allocation` to cap total attendees and enable `EnableWaitList` to allow overflow sign-ups.

## Authentication

<Note>
  This endpoint requires OAuth2 authentication. Include a valid bearer token in the `Authorization` header.
  The authenticated user must be a full unrestricted administrator or have the **`CalendarEvent-List`** role.
</Note>

## Enums

<Accordion title="eCalendarEventRepeatCycle — Repeats values">
  | Value | Name          |
  | ----- | ------------- |
  | 1     | Daily         |
  | 2     | Weekly        |
  | 3     | Monthly       |
  | 4     | Yearly        |
  | 5     | FirstOfMonth  |
  | 6     | SecondOfMonth |
  | 7     | ThirdOfMonth  |
  | 8     | LastOfMonth   |
  | 9     | FourthOfMonth |
</Accordion>

<Accordion title="eRepeatedCalendarEventUpdateAction — WhichEventsToUpdate values">
  | Value | Name                   |
  | ----- | ---------------------- |
  | 1     | UpdateThisEventOnly    |
  | 2     | UpdateFutureEventsOnly |
  | 3     | UpdateAllEvents        |
  | 4     | DeleteAllEvents        |
  | 5     | DeleteEventsAfterThis  |
  | 6     | UpdateEventProducts    |
</Accordion>

## Query Parameters

### Pagination & Sorting

<ParamField query="page" type="integer" default="1">
  The page number to retrieve.
</ParamField>

<ParamField query="size" type="integer" default="25">
  The number of records per page.
</ParamField>

<ParamField query="orderBy" type="string">
  The property name to sort results by (e.g. `Name`, `CreatedOn`).
</ParamField>

<ParamField query="dir" type="integer">
  Sort direction. `0` for ascending, `1` for descending.
</ParamField>

### Filters

<ParamField query="CalendarEvent_Business" type="integer">
  Filter by the location this event belongs to.
</ParamField>

<ParamField query="CalendarEvent_Name" type="string">
  Filter by event name.
</ParamField>

<ParamField query="CalendarEvent_HostFullName" type="string">
  Filter by full name of the event host or presenter.
</ParamField>

<ParamField query="CalendarEvent_ShortDescription" type="string">
  Filter by brief summary shown under the event name on the Members Portal.
</ParamField>

<ParamField query="CalendarEvent_LongDescription" type="string">
  Filter by full event description visible when a customer opens the event on the Members Portal.
</ParamField>

<ParamField query="CalendarEvent_TicketNotes" type="string">
  Filter by additional notes included in ticket confirmation emails.
</ParamField>

<ParamField query="CalendarEvent_EnableWaitList" type="boolean">
  Filter by allow customers to join a waiting list when the event is at full capacity.
</ParamField>

<ParamField query="CalendarEvent_AskBuyerAddress" type="boolean">
  Filter by request the buyer's postal address during ticket checkout.
</ParamField>

<ParamField query="CalendarEvent_ShowEventAttendees" type="boolean">
  Filter by display the attendee list on the Members Portal event page.
</ParamField>

<ParamField query="CalendarEvent_Location" type="string">
  Filter by venue or room name displayed on the event page.
</ParamField>

<ParamField query="CalendarEvent_VenueAddress" type="string">
  Filter by street address of the event venue.
</ParamField>

<ParamField query="CalendarEvent_Resource" type="integer">
  Filter by resource linked to this event; automatically blocked from bookings for the event's duration.
</ParamField>

<ParamField query="CalendarEvent_StartDate" type="string">
  Filter by event start date and time (UTC).
</ParamField>

<ParamField query="CalendarEvent_EndDate" type="string">
  Filter by event end date and time (UTC).
</ParamField>

<ParamField query="CalendarEvent_Allocation" type="integer">
  Filter by maximum number of attendees; leave empty for unlimited.
</ParamField>

<ParamField query="CalendarEvent_PublishDate" type="string">
  Filter by date and time the event becomes visible on the Members Portal (UTC).
</ParamField>

<ParamField query="CalendarEvent_ShowInHomeBanner" type="boolean">
  Filter by display this event in the home page banner on the Members Portal.
</ParamField>

<ParamField query="CalendarEvent_ShowInHomePage" type="boolean">
  Filter by display this event on the Members Portal home page.
</ParamField>

<ParamField query="CalendarEvent_AllowComments" type="boolean">
  Filter by allow customers to post comments on the event.
</ParamField>

<ParamField query="CalendarEvent_IncludeZoomInvite" type="boolean">
  Filter by attach a Zoom conference call link to this event.
</ParamField>

<ParamField query="CalendarEvent_CreateZoomWebinarInvite" type="boolean">
  Filter by create a Zoom webinar instead of a regular conference call.
</ParamField>

<ParamField query="CalendarEvent_ZoomWebinarAlternativeHosts" type="string">
  Filter by comma-separated email addresses of alternative Zoom hosts who can start the meeting.
</ParamField>

<ParamField query="CalendarEvent_ZoomEventData" type="string">
  Filter by raw Zoom meeting data returned after the Zoom event is created.
</ParamField>

<ParamField query="CalendarEvent_ZoomMeetingId" type="string">
  Filter by zoom meeting or webinar ID.
</ParamField>

<ParamField query="CalendarEvent_OnlyForContacts" type="boolean">
  Filter by restrict event attendance to contacts only.
</ParamField>

<ParamField query="CalendarEvent_OnlyForMembers" type="boolean">
  Filter by restrict event attendance to members only.
</ParamField>

<ParamField query="CalendarEvent_SmallLogoFileName" type="string">
  Filter by filename of the small event image shown in related-events sections (read-only; set via `NewSmallLogoUrl`).
</ParamField>

<ParamField query="CalendarEvent_NewSmallLogoUrl" type="string">
  Filter by uRL of an image to upload as the small event image.
</ParamField>

<ParamField query="CalendarEvent_ClearSmallLogo" type="boolean">
  Filter by remove the current small event image.
</ParamField>

<ParamField query="CalendarEvent_LargeLogoFileName" type="string">
  Filter by filename of the large event image shown on the event list and detail page (read-only; set via `NewLargeLogoUrl`).
</ParamField>

<ParamField query="CalendarEvent_NewLargeLogoUrl" type="string">
  Filter by uRL of an image to upload as the large event image.
</ParamField>

<ParamField query="CalendarEvent_ClearLargeLogo" type="boolean">
  Filter by remove the current large event image.
</ParamField>

<ParamField query="CalendarEvent_WebAddress" type="string">
  Filter by uRL of an external website related to this event.
</ParamField>

<ParamField query="CalendarEvent_FacebookPage" type="string">
  Filter by uRL of a Facebook event or page for this event.
</ParamField>

<ParamField query="CalendarEvent_TicketsPage" type="string">
  Filter by uRL of an external ticketing page for this event.
</ParamField>

<ParamField query="CalendarEvent_RepeatSeriesUniqueId" type="string">
  Filter by unique identifier shared by all occurrences in a repeat series.
</ParamField>

<ParamField query="CalendarEvent_RepeatEvent" type="boolean">
  Filter by create this event as a recurring series (create only).
</ParamField>

<ParamField query="CalendarEvent_Repeats" type="integer">
  Filter by recurrence pattern for the event series.
</ParamField>

<ParamField query="CalendarEvent_WhichEventsToUpdate" type="integer">
  Filter by which events in the recurring series to update (update only).
</ParamField>

<ParamField query="CalendarEvent_RepeatEvery" type="integer">
  Filter by number of cycles between occurrences (e.g. 2 with Weekly means every two weeks).
</ParamField>

<ParamField query="CalendarEvent_RepeatUntil" type="string">
  Filter by date the recurring series ends (create only).
</ParamField>

<ParamField query="CalendarEvent_RepeatOnMondays" type="boolean">
  Filter by include Mondays in the recurring schedule.
</ParamField>

<ParamField query="CalendarEvent_RepeatOnTuesdays" type="boolean">
  Filter by include Tuesdays in the recurring schedule.
</ParamField>

<ParamField query="CalendarEvent_RepeatOnWednesdays" type="boolean">
  Filter by include Wednesdays in the recurring schedule.
</ParamField>

<ParamField query="CalendarEvent_RepeatOnThursdays" type="boolean">
  Filter by include Thursdays in the recurring schedule.
</ParamField>

<ParamField query="CalendarEvent_RepeatOnFridays" type="boolean">
  Filter by include Fridays in the recurring schedule.
</ParamField>

<ParamField query="CalendarEvent_RepeatOnSaturdays" type="boolean">
  Filter by include Saturdays in the recurring schedule.
</ParamField>

<ParamField query="CalendarEvent_RepeatOnSundays" type="boolean">
  Filter by include Sundays in the recurring schedule.
</ParamField>

<ParamField query="CalendarEvent_StartDateLocal" type="string">
  Filter by event start date and time in the location's local timezone.
</ParamField>

<ParamField query="CalendarEvent_EndDateLocal" type="string">
  Filter by event end date and time in the location's local timezone.
</ParamField>

<ParamField query="CalendarEvent_PublishDateLocal" type="string">
  Filter by publish date and time in the location's local timezone.
</ParamField>

<ParamField query="CalendarEvent_AfterEventNotificationJobId" type="string">
  Filter by background job ID for the scheduled post-event notification email.
</ParamField>

<ParamField query="CalendarEvent_SendAfterEventNotification" type="boolean">
  Filter by send a follow-up notification email to attendees after the event ends.
</ParamField>

<ParamField query="CalendarEvent_AfterEventNotificationText" type="string">
  Filter by custom message body for the post-event notification email.
</ParamField>

<ParamField query="CalendarEvent_SendBeforeEventNotification" type="boolean">
  Filter by send a reminder notification email to attendees before the event starts.
</ParamField>

<ParamField query="CalendarEvent_HasEventForm" type="boolean">
  Filter by a form is linked to this event that attendees are asked to complete.
</ParamField>

<ParamField query="CalendarEvent_SendEventFormByEmail" type="boolean">
  Filter by send the linked event form to attendees by email.
</ParamField>

<ParamField query="CalendarEvent_FormPage" type="integer">
  Filter by iD of the form page linked to this event.
</ParamField>

<ParamField query="CalendarEvent_FormPage_Name" type="string">
  Filter by name of the linked form page.
</ParamField>

### Range Filters

<ParamField query="from_CalendarEvent_StartDate" type="string">
  Filter by event start date and time (UTC) greater than or equal to this value. Format: `YYYY-MM-DDTHH:mm`.
</ParamField>

<ParamField query="to_CalendarEvent_StartDate" type="string">
  Filter by event start date and time (UTC) less than or equal to this value. Format: `YYYY-MM-DDTHH:mm`.
</ParamField>

<ParamField query="from_CalendarEvent_EndDate" type="string">
  Filter by event end date and time (UTC) greater than or equal to this value. Format: `YYYY-MM-DDTHH:mm`.
</ParamField>

<ParamField query="to_CalendarEvent_EndDate" type="string">
  Filter by event end date and time (UTC) less than or equal to this value. Format: `YYYY-MM-DDTHH:mm`.
</ParamField>

<ParamField query="from_CalendarEvent_Allocation" type="integer">
  Filter by maximum number of attendees; leave empty for unlimited greater than or equal to this value.
</ParamField>

<ParamField query="to_CalendarEvent_Allocation" type="integer">
  Filter by maximum number of attendees; leave empty for unlimited less than or equal to this value.
</ParamField>

<ParamField query="from_CalendarEvent_PublishDate" type="string">
  Filter by date and time the event becomes visible on the Members Portal (UTC) greater than or equal to this value. Format: `YYYY-MM-DDTHH:mm`.
</ParamField>

<ParamField query="to_CalendarEvent_PublishDate" type="string">
  Filter by date and time the event becomes visible on the Members Portal (UTC) less than or equal to this value. Format: `YYYY-MM-DDTHH:mm`.
</ParamField>

<ParamField query="from_CalendarEvent_RepeatEvery" type="integer">
  Filter by number of cycles between occurrences (e.g. 2 with Weekly means every two weeks) greater than or equal to this value.
</ParamField>

<ParamField query="to_CalendarEvent_RepeatEvery" type="integer">
  Filter by number of cycles between occurrences (e.g. 2 with Weekly means every two weeks) less than or equal to this value.
</ParamField>

<ParamField query="from_CalendarEvent_RepeatUntil" type="string">
  Filter by date the recurring series ends (create only) greater than or equal to this value. Format: `YYYY-MM-DDTHH:mm`.
</ParamField>

<ParamField query="to_CalendarEvent_RepeatUntil" type="string">
  Filter by date the recurring series ends (create only) less than or equal to this value. Format: `YYYY-MM-DDTHH:mm`.
</ParamField>

<ParamField query="from_CalendarEvent_StartDateLocal" type="string">
  Filter by event start date and time in the location's local timezone greater than or equal to this value. Format: `YYYY-MM-DDTHH:mm`.
</ParamField>

<ParamField query="to_CalendarEvent_StartDateLocal" type="string">
  Filter by event start date and time in the location's local timezone less than or equal to this value. Format: `YYYY-MM-DDTHH:mm`.
</ParamField>

<ParamField query="from_CalendarEvent_EndDateLocal" type="string">
  Filter by event end date and time in the location's local timezone greater than or equal to this value. Format: `YYYY-MM-DDTHH:mm`.
</ParamField>

<ParamField query="to_CalendarEvent_EndDateLocal" type="string">
  Filter by event end date and time in the location's local timezone less than or equal to this value. Format: `YYYY-MM-DDTHH:mm`.
</ParamField>

<ParamField query="from_CalendarEvent_PublishDateLocal" type="string">
  Filter by publish date and time in the location's local timezone greater than or equal to this value. Format: `YYYY-MM-DDTHH:mm`.
</ParamField>

<ParamField query="to_CalendarEvent_PublishDateLocal" type="string">
  Filter by publish date and time in the location's local timezone less than or equal to this value. Format: `YYYY-MM-DDTHH:mm`.
</ParamField>

<ParamField query="from_CalendarEvent_CreatedOn" type="string">
  Filter records created on or after this date. Format: `YYYY-MM-DDTHH:mm`.
</ParamField>

<ParamField query="to_CalendarEvent_CreatedOn" type="string">
  Filter records created on or before this date. Format: `YYYY-MM-DDTHH:mm`.
</ParamField>

<ParamField query="from_CalendarEvent_UpdatedOn" type="string">
  Filter records updated on or after this date. Format: `YYYY-MM-DDTHH:mm`.
</ParamField>

<ParamField query="to_CalendarEvent_UpdatedOn" type="string">
  Filter records updated on or before this date. Format: `YYYY-MM-DDTHH:mm`.
</ParamField>

## Code Examples

### Simple listing

<CodeGroup>
  ```bash cURL theme={null}
  curl -X GET \
    "https://spaces.nexudus.com/api/content/calendarevents?page=1&size=15&orderBy=Name&dir=0" \
    -H "Authorization: Bearer YOUR_TOKEN"
  ```

  ```javascript JavaScript theme={null}
  const response = await fetch(
    'https://spaces.nexudus.com/api/content/calendarevents?' + new URLSearchParams({
      page: 1,
      size: 15,
      orderBy: 'Name',
      dir: 1 // Ascending
    }),
    {
      headers: {
        'Authorization': 'Bearer YOUR_TOKEN'
      }
    }
  );

  const data = await response.json();
  ```

  ```python Python theme={null}
  import requests

  response = requests.get(
      'https://spaces.nexudus.com/api/content/calendarevents',
      params={
          'page': 1,
          'size': 15,
          'orderBy': 'Name',
          'dir': 0 // Ascending
      },
      headers={
          'Authorization': 'Bearer YOUR_TOKEN'
      }
  )

  data = response.json()
  ```
</CodeGroup>

### Filtering by Name

<CodeGroup>
  ```bash cURL theme={null}
  curl -X GET \
    "https://spaces.nexudus.com/api/content/calendarevents?CalendarEvent_Name=example-value&orderBy=Name&dir=0" \
    -H "Authorization: Bearer YOUR_TOKEN"
  ```

  ```javascript JavaScript theme={null}
  const response = await fetch(
    'https://spaces.nexudus.com/api/content/calendarevents?' + new URLSearchParams({
      CalendarEvent_Name: 'example-value',
      orderBy: 'Name',
      dir: 1
    }),
    {
      headers: {
        'Authorization': 'Bearer YOUR_TOKEN'
      }
    }
  );

  const data = await response.json();
  ```

  ```python Python theme={null}
  import requests

  response = requests.get(
      'https://spaces.nexudus.com/api/content/calendarevents',
      params={
          'CalendarEvent_Name': 'example-value',
          'orderBy': 'Name',
          'dir': 0 // Ascending
      },
      headers={
          'Authorization': 'Bearer YOUR_TOKEN'
      }
  )

  data = response.json()
  ```
</CodeGroup>

### Range filters

<CodeGroup>
  ```bash cURL theme={null}
  curl -X GET \
    "https://spaces.nexudus.com/api/content/calendarevents?from_CalendarEvent_UpdatedOn=2025-01-01T00:00&to_CalendarEvent_UpdatedOn=2025-12-31T23:59&orderBy=UpdatedOn&dir=0" \
    -H "Authorization: Bearer YOUR_TOKEN"
  ```

  ```javascript JavaScript theme={null}
  const response = await fetch(
    'https://spaces.nexudus.com/api/content/calendarevents?' + new URLSearchParams({
      from_CalendarEvent_UpdatedOn: '2025-01-01T00:00',
      to_CalendarEvent_UpdatedOn: '2025-12-31T23:59',
      orderBy: 'UpdatedOn',
      dir: 1 // Descending
     }),
    {
      headers: {
        'Authorization': 'Bearer YOUR_TOKEN'
      }
    }
  );

  const data = await response.json();
  ```

  ```python Python theme={null}
  import requests

  response = requests.get(
      'https://spaces.nexudus.com/api/content/calendarevents',
      params={
          'from_CalendarEvent_UpdatedOn': '2025-01-01T00:00',
          'to_CalendarEvent_UpdatedOn': '2025-12-31T23:59',
          'orderBy': 'UpdatedOn',
          'dir': 1 // Descending
      },
      headers={
          'Authorization': 'Bearer YOUR_TOKEN'
      }
  )

  data = response.json()
  ```
</CodeGroup>

## Response

### 200

<ResponseField name="Records" type="CalendarEvent[]">
  The list of CalendarEvent records matching the query. See the [Get one CalendarEvent](/rest-api/content/get-calendarevents-by-id) endpoint for the full list of properties returned for each record.
</ResponseField>

<Warning>
  **Partial records** — The listing endpoint returns a summary representation of each CalendarEvent. The following fields are **not populated** in the `Records[]` response: `ShortDescription`, `LongDescription`, `TicketNotes`, `EnableWaitList`, `AskBuyerAddress`, `ShowEventAttendees`, `Location`, `VenueAddress`, `ShowInHomeBanner`, `ShowInHomePage`, `IncludeZoomInvite`, `CreateZoomWebinarInvite`, `ZoomWebinarAlternativeHosts`, `WebAddress`, `FacebookPage`, `TicketsPage`, `RepeatEvent`, `Repeats`, `WhichEventsToUpdate`, `RepeatEvery`, `RepeatUntil`, `RepeatOnMondays`, `RepeatOnTuesdays`, `RepeatOnWednesdays`, `RepeatOnThursdays`, `RepeatOnFridays`, `RepeatOnSaturdays`, `RepeatOnSundays`, `SendAfterEventNotification`, `AfterEventNotificationText`, `SendBeforeEventNotification`, `HasEventForm`, `SendEventFormByEmail`.

  To get all fields, fetch the full record using the [Get one CalendarEvent](/rest-api/content/get-calendarevents-by-id) endpoint.

  **Important for updates:** When updating a record via `PUT`, always retrieve the full record with a `GET` request first, apply your changes to that complete data, and then send the updated record. Do not use data from a listing response as the base for a `PUT` request, as missing fields may be unintentionally cleared.
</Warning>

<ResponseField name="CurrentPage" type="integer">
  Current page number.
</ResponseField>

<ResponseField name="CurrentPageSize" type="integer">
  Number of records per page.
</ResponseField>

<ResponseField name="CurrentOrderField" type="string">
  The field used for sorting.
</ResponseField>

<ResponseField name="CurrentSortDirection" type="integer">
  The sort direction (`0` = ascending, `1` = descending).
</ResponseField>

<ResponseField name="FirstItem" type="integer">
  Index of the first item on the current page.
</ResponseField>

<ResponseField name="LastItem" type="integer">
  Index of the last item on the current page.
</ResponseField>

<ResponseField name="TotalItems" type="integer">
  Total number of matching records across all pages.
</ResponseField>

<ResponseField name="TotalPages" type="integer">
  Total number of pages.
</ResponseField>

<ResponseField name="HasNextPage" type="boolean">
  Whether there is a next page of results.
</ResponseField>

<ResponseField name="HasPreviousPage" type="boolean">
  Whether there is a previous page of results.
</ResponseField>

```json Example Response theme={null}
{
  "Records": [
    {
      "BusinessId": 0,
      "Name": "",
      "HostFullName": null,
      "ResourceId": null,
      "StartDate": "2025-01-15T10:30:00Z",
      "EndDate": "2025-01-15T10:30:00Z",
      "Allocation": null,
      "EventCategories": [],
      "PublishDate": null,
      "AllowComments": false,
      "ZoomEventData": null,
      "ZoomMeetingId": null,
      "OnlyForContacts": false,
      "OnlyForMembers": false,
      "SmallLogoFileName": null,
      "NewSmallLogoUrl": null,
      "ClearSmallLogoFile": null,
      "LargeLogoFileName": null,
      "NewLargeLogoUrl": null,
      "ClearLargeLogoFile": null,
      "RepeatSeriesUniqueId": null,
      "StartDateLocal": null,
      "EndDateLocal": null,
      "PublishDateLocal": null,
      "AfterEventNotificationJobId": null,
      "FormPageId": null,
      "FormPageName": null,
      "Id": 87654321,
      "UpdatedOn": "2025-01-15T10:30:00Z",
      "CreatedOn": "2025-01-10T08:00:00Z",
      "UniqueId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
      "UpdatedBy": "admin@example.com",
      "IsNew": false,
      "SystemId": null,
      "ToStringText": "CalendarEvent Example",
      "LocalizationDetails": null,
      "CustomFields": null
    }
  ],
  "CurrentPageSize": 15,
  "CurrentPage": 1,
  "CurrentOrderField": "Name",
  "CurrentSortDirection": 1,
  "FirstItem": 1,
  "HasNextPage": false,
  "HasPreviousPage": false,
  "LastItem": 1,
  "PageNumber": 1,
  "PageSize": 15,
  "TotalItems": 1,
  "TotalPages": 1
}
```
