HomeREST APICalendar events API

Calendar events API

Create, read, update and delete calendar events and recurring event series, and manage attendees, invitations and RSVPs through the REST API.

Before you start

  • You need an API key and secret created in Control Panel > Security, used to obtain a bearer token. See Authentication overview.
  • Every request must send the Authorization: Bearer {{access_token}} and X-Tenant: {{tenant_id}} headers.
  • To create, update or delete an event you must act as a user with author rights on the target section. Calendar events belong to a section, so the authenticated user's permissions on that section apply.

Note: All examples use the base URL {{api_domain}}/api. Replace {{api_domain}} with your intranet API domain and the {{snake_case}} placeholders with your own values.

Overview

The API exposes two related resources:

  • Calendar events (/calendar-event) — a single, one-off event.
  • Calendar event series (/calendar-event-series) — a recurring event defined by recurrence settings (for example, every Tuesday). A series has the same sub-resources as a single event, plus create and update operations that accept recurrence rules.

Both resources share the same sub-resources for attendees, RSVPs (responses) and iCal export, so once you know one set you know the other. Identifiers in paths are integers.

Important: The /api/event/{{event_id}} endpoints are a legacy version retained for backward compatibility. Use /api/calendar-event/... for new integrations. See Deprecated endpoints.

Calendar event endpoints

Method Path Purpose
GET /calendar-event/{{event_id}} Get a single event.
GET /calendar-event/list?sectionId={{section_id}} List events in a section.
POST /calendar-event Create an event.
DELETE /calendar-event/{{event_id}} Delete an event.
GET /calendar-event/{{event_id}}/ical Export the event as an iCal (.ics) file.
GET /calendar-event/{{event_id}}/attendees List attendees.
GET /calendar-event/{{event_id}}/responses/{{response}} List people who gave a given RSVP.
GET /calendar-event/{{event_id}}/response-counts Get RSVP totals by response type.
POST /calendar-event/{{event_id}}/respond?response={{response}} RSVP to the event as the authenticated user.
POST /calendar-event/{{event_id}}/invite Invite users or groups.

Get a calendar event

GET {{api_domain}}/api/calendar-event/{{event_id}}

Returns the event object (the same fields you supply when creating an event — see Event object fields).

List calendar events

GET {{api_domain}}/api/calendar-event/list?sectionId={{section_id}}
Query parameter Required Description
sectionId Yes The section whose events you want to list.

Create a calendar event

POST {{api_domain}}/api/calendar-event
Content-Type: application/json
{
  "StartDate": "2026-06-06T07:38:18.503Z",
  "EndDate": "2026-06-06T08:38:18.503Z",
  "TimeZone": "GMT Standard Time",
  "AllDayEvent": true,
  "SectionID": 11436,
  "OwnerID": 1344,
  "Title": "Quarterly all-hands",
  "AssetID": 0,
  "Summary": "",
  "Tags": "API",
  "Location": "",
  "Active": true,
  "InAllCalendars": false,
  "AttendType": "OpenAttendance",
  "Category": "0",
  "MaxNumberOfAttendees": 0,
  "Description": "Some content goes here"
}

See Event object fields for the meaning of each field.

Delete a calendar event

DELETE {{api_domain}}/api/calendar-event/{{event_id}}

Export an event as iCal

GET {{api_domain}}/api/calendar-event/{{event_id}}/ical

Returns an iCal (.ics) representation suitable for importing into external calendar clients.

Attendees and RSVPs

GET {{api_domain}}/api/calendar-event/{{event_id}}/attendees
GET {{api_domain}}/api/calendar-event/{{event_id}}/responses/{{response}}
GET {{api_domain}}/api/calendar-event/{{event_id}}/response-counts
  • attendees lists everyone attending.
  • responses/{{response}} lists people who gave a specific RSVP, where {{response}} is one of yes, no or maybe.
  • response-counts returns the totals for each response type.

Respond to an event

POST {{api_domain}}/api/calendar-event/{{event_id}}/respond?response={{response}}
Query parameter Required Description
response Yes The RSVP to record for the authenticated user: Yes, No or Maybe.

This endpoint takes no request body.

Invite users to an event

POST {{api_domain}}/api/calendar-event/{{event_id}}/invite
Content-Type: application/json
{
  "Message": "Please join our event!",
  "Invitations": [
    {
      "ID": 280,
      "IsPerson": true
    }
  ]
}
Field Type Description
Message string Message included with the invitation.
Invitations array One entry per invitee.
Invitations[].ID integer The person or group identifier.
Invitations[].IsPerson boolean true to invite a person, false to invite a group.

Event series endpoints

A series uses the same sub-resources as a single event. The differences are that create and update accept recurrence settings, and update requires a confirmRegeneration flag.

Method Path Purpose
GET /calendar-event-series/{{series_id}} Get a series.
POST /calendar-event-series Create a series.
PUT /calendar-event-series/{{series_id}}?confirmRegeneration=true Update a series.
DELETE /calendar-event-series/{{series_id}} Delete a series.
GET /calendar-event-series/{{series_id}}/ical Export the series as iCal.
GET /calendar-event-series/{{series_id}}/attendees List attendees.
GET /calendar-event-series/{{series_id}}/responses/{{response}} List people who gave a given RSVP.
GET /calendar-event-series/{{series_id}}/response-counts Get RSVP totals by response type.
POST /calendar-event-series/{{series_id}}/respond?response={{response}} RSVP to the series.
POST /calendar-event-series/{{series_id}}/invite Invite users or groups.

Create an event series

POST {{api_domain}}/api/calendar-event-series
Content-Type: application/json
{
  "SeriesStartDate": "2026-05-29T07:38:18.521Z",
  "EventStartDate": "2026-05-29T07:38:18.521Z",
  "EventEndDate": "2026-05-29T08:38:18.521Z",
  "TimeZone": "GMT Standard Time",
  "AllDayEvent": false,
  "RecurrenceSettings": {
    "Type": {
      "Mode": "Weekly",
      "TypeSettings": {
        "WeeklySelectedDays": ["Tuesday"],
        "WeeklyFreq": "1"
      }
    },
    "Ends": {
      "Type": "EndBy",
      "NumberOfOccurrences": 0,
      "EndDate": "2026-08-31T00:00:00.000Z"
    }
  },
  "SectionID": 11436,
  "OwnerID": 1344,
  "Title": "Weekly stand-up",
  "AssetID": 0,
  "Summary": "",
  "Tags": "API"
}

Update an event series

PUT {{api_domain}}/api/calendar-event-series/{{series_id}}?confirmRegeneration=true
Content-Type: application/json
Query parameter Required Description
confirmRegeneration Yes Set to true to confirm that changing the recurrence rules may regenerate the events in the series.

The body matches the create body. The Type.Mode value (for example Daily or Weekly) determines which TypeSettings apply.

Warning: Updating recurrence settings can regenerate the events in a series, which may remove existing events and their RSVPs. Set confirmRegeneration=true only when you intend this.

Reference

Event object fields

Field Type Description
StartDate string (ISO 8601) Event start, in UTC.
EndDate string (ISO 8601) Event end, in UTC.
TimeZone string Windows time-zone name, for example GMT Standard Time.
AllDayEvent boolean Whether the event runs all day.
SectionID integer The section the event belongs to.
OwnerID integer The person who owns the event.
Title string Event title.
AssetID integer Optional header image asset; 0 for none.
Summary string Short summary.
Tags string Comma-separated tags.
Location string Free-text location.
Active boolean Whether the event is published.
InAllCalendars boolean Whether the event appears in all users' calendars.
AttendType string Attendance mode — see Attendance types.
Category string Category identifier.
MaxNumberOfAttendees integer Attendee cap; 0 for unlimited.
Description string Full event body.

Series add the recurrence fields: SeriesStartDate, EventStartDate, EventEndDate and RecurrenceSettings.

Attendance types

Value Meaning
OpenAttendance Anyone with access can attend without approval.

Note: OpenAttendance (anyone with access can attend) is the confirmed value. Other attendance modes may exist for invite-only or approval-required events; verify the exact value against your intranet before relying on it.

Response (RSVP) values

Yes, No, Maybe. The respond endpoints accept these as the response query value; the responses/{{response}} listing uses the lower-case form (yes, no, maybe).

Recurrence settings

Field Description
Type.Mode Recurrence frequency, for example Daily or Weekly.
Type.TypeSettings Settings specific to the mode. For Weekly: WeeklySelectedDays (array of day names) and WeeklyFreq (interval in weeks).
Ends.Type How the series ends: EndAfter (a number of occurrences) or EndBy (a date).
Ends.NumberOfOccurrences Used with EndAfter.
Ends.EndDate Used with EndBy.

Deprecated endpoints

Method Path Replacement
GET /event/{{event_id}} /calendar-event/{{event_id}}
GET /event/{{event_id}}/ical /calendar-event/{{event_id}}/ical

Note: For response body schemas, see the calendar endpoints under Events & calendar in the API reference. The request methods, paths, parameters and bodies on this page were verified against the API.

Section: REST API