Events
Events may be created or updated. The request and response bodies are the same in both situations.
In order to update an event after creating it, you must store the ID that is returned when creating it. Note that we do not support partial updates for required attributes, required attributes must be supplied at all times
Attributes
title
string required
Title of the event in question. Note that titles do not have to be unique and we do not prevent duplication.
type
int required
This must be a valid event type ID, see event-types.
contactEmail
string required
Must be a correctly formatted, valid email address.
startedAt
DateTime required
Note
This is stored as-is and should be the event's local date and time. Our systems and app will use the given location to then convert these to a members' own timezone where applicable.
Required unless isSelfPacedCourse is true.
endedAt
DateTime required
Note
This is stored as-is and should be the event's local date and time. Our systems and app will use the given location to then convert these to a members' own timezone where applicable.
Required unless isSelfPacedCourse is true.
isVip
bool required
Whether this event requires the feature flag for event access to be set.
When set to true, members will be prompted to upgrade their membership if their feature flag
was returned as false by your SSO.
receivesRsvpWebhooks
bool required
Warning
This value must be set correctly at all times.
If set to true without actually calling the endpoint, this may degrade members' experience!
Whether webhooks to confirm RSVPs are set up for this event.
If set to false, communication around the event will be geared towards members' interest in the event,
rather than them going to the event.
isPaid
bool required
Whether this is a paid event. This is used to display the correct label in any event listings.
externalUrl
url optional
Must be a valid URL if provided.
If set to null this will create a free event on our platform.
image
string required: on create
Must be a valid URL to an image. It may be omitted when updating an event. We assume it is a new image if provided, so it is retrieved and stored whenever it is provided.
Recommendation is using a 2:1 ratio, minimum 1400x700px.
location
string required
This must be a valid Google Places ID. This is used to display an approximate location, with address and addressDetails allowing you to display the location a textual format. The location does not have to be the exact address, but we do recommend resolving the address to a Google Place. Note that we also use the timezone from this location to display the correct start/end times to members.
description
string required
A description of the event. May contain linebreaks.
host
int required
Must be a valid Page ID, see pages.
cohosts
array
Default: []
Each value in this array must be a valid Page ID, see pages.
isSelfPacedCourse
bool optional
Default: false
Indicates a self-paced course which has no formal start or end dates/times.
isVirtual
bool optional
Default: false
Indicates a virtual (online) event.
isTicketless
bool optional
Default: false
Whether the event is ticketless, meaning people can show up at will.
capacity
int optional
Default: null
If not provided or set to 0, the event will allow unlimited registrations.
This is the total available capacity for this event (in our system).
Availability for the event will be calculated by subtracting the number of RSVPs;
if receivesRsvpWebhooks is enabled, only confirmed RSVPs will count towards capacity.
When updating, this value can not be set to less than the number of RSVPs already registered.
address
string optional
Default: null
May not be longer than 255 characters. Note that location is not resolved from this, as resolving addresses requires human input.
addressDetails
string optional
Default: null
This may be provided to clarify the address. For example, clarifying routes or rooms within buildings.
publishedAt
DateTime optional
Default: "now"
Note
The event's location is not taken into account for this attribute. It will always be interpreted as UTC.
This may be used to schedule events ahead of time. Has no effect on start or end dates, only on visibility. If not provided, the event will be published immediately.
Endpoints
Create
POST /v1/events.create
Content-Type: application/json
Authorization: Channel <Api Key>
X-Channel: <Channel Identifier>
{
"title": "Chinese New Year Celebration",
"type": 1,
"contactEmail": "events@the-dots.com",
"startedAt": "2026-02-17 00:00",
"endedAt": "2026-02-17 03:00",
"isVip": false,
"receivesRsvpWebhooks": true,
"isPaid": false,
"externalUrl": "https://my-website.com/events/123",
"image": "https://my-website.com/images/event-123.jpg",
"location": "ChIJuSwU55ZS8DURiqkPryBWYrk",
"description": "Chinese New Year celebration, in Beijing",
"host": [1],
"cohosts": [2, 3],
"isSelfPacedCourse": false,
"isVirtual": false,
"isTicketless": false,
"capacity": 100,
"address": "Tiananmen Square",
"addressDetails": "Some further details",
"publishedAt": "now"
}
Update
POST /v1/events.update/{id}
Content-Type: application/json
Authorization: Channel <Api Key>
X-Channel: <Channel Identifier>
{
"title": "Chinese New Year Celebration",
"type": 1,
"contactEmail": "events@the-dots.com",
"startedAt": "2026-02-17 00:00",
"endedAt": "2026-02-17 03:00",
"isVip": false,
"receivesRsvpWebhooks": true,
"isPaid": false,
"externalUrl": "https://my-website.com/events/123",
"image": "https://my-website.com/images/event-123.jpg",
"location": "ChIJuSwU55ZS8DURiqkPryBWYrk",
"description": "Chinese New Year celebration, in Beijing",
"host": [1],
"cohosts": [2, 3],
"isSelfPacedCourse": false,
"isVirtual": false,
"isTicketless": false,
"capacity": 100,
"address": "Tiananmen Square",
"addressDetails": "Some further details, with additions",
"publishedAt": "now"
}