Skip to main content

List events

GET /rest/v1/events

Returns the events in the API key's organization, including drafts, private events, and invite-only events.

Requires the events:read scope. See Authentication for headers, rate limits, and the shared error format.

Query parameters​

ParameterTypeRequiredDefaultDescription
pageintegerNo1Page number. Must be ≥ 1.
limitintegerNo50Events per page. Must be from 1 to 100.
statusstringNo—draft, published, or completed. cancelled is rejected.
branch_idintegerNo—Numeric id of a branch in this organization.
fromISO 8601 datetimeNo—Events whose start is greater than or equal to this value.
toISO 8601 datetimeNo—Events whose start is less than or equal to this value.
updated_sinceISO 8601 datetimeNo—Events updated at or after this timestamp.
searchstringNo—Case-insensitive match on the event title. Maximum 200 characters.
sortstringNostart_atstart_at, created_at, updated_at, or title.
orderstringNoascasc or desc.

status is derived from the event record:

ValueMeaning
draftThe event is still a draft.
publishedThe event is not a draft and its end date is still in the future.
completedThe event is not a draft and its end date is in the past.

Datetimes must include a time and a timezone, for example 2026-09-15T09:00:00Z.

Response 200​

{
"data": [
{
"id": "7f4c1b2e-8e9b-4e31-9c1d-123456789abc",
"slug": "annual-conference-2026",
"title": "Annual Conference 2026",
"description": "Our annual organization conference.",
"coverImage": "org-id/branch-id/event-id/cover.jpg",
"coverImageUrl": "https://example.supabase.co/storage/v1/object/sign/event-covers/...",
"type": "in-person",
"visibility": "public",
"isDraft": false,
"startDate": "2026-09-15T09:00:00.000Z",
"endDate": "2026-09-15T18:00:00.000Z",
"timezone": "America/Monterrey",
"meetingUrl": null,
"allowGuestsToInvite": true,
"showGuestList": true,
"enableChat": true,
"sendReminders": true,
"generateWalletPass": true,
"createdAt": "2026-06-01T14:30:00.000Z",
"updatedAt": "2026-08-20T18:42:00.000Z"
}
],
"pagination": {
"page": 1,
"limit": 50,
"total": 1,
"totalPages": 1
}
}
FieldTypeNullableDescription
idstringNoEvent id.
slugstringNoURL slug, unique inside the organization.
titlestringNoEvent title.
descriptionstringYesEvent description.
coverImagestringNoStorage path of the cover image.
coverImageUrlstringYesSigned URL for the cover. It expires after one hour. null when the URL cannot be created.
typestringNoin-person, online, or hybrid.
visibilitystringNopublic, private, or invite-only.
isDraftbooleanNoWhether the event is still a draft.
startDatestringNoStart time in ISO 8601.
endDatestringNoEnd time in ISO 8601.
timezonestringNoIANA timezone, for example America/Monterrey.
meetingUrlstringYesOnline meeting URL.
allowGuestsToInvitebooleanNoWhether registered guests can invite others.
showGuestListbooleanNoWhether attendees can see the guest list.
enableChatbooleanNoWhether event chat is enabled.
sendRemindersbooleanNoWhether reminders are enabled.
generateWalletPassbooleanNoWhether wallet passes are generated.
createdAtstringNoCreation time in ISO 8601.
updatedAtstringNoLast update time in ISO 8601.

pagination.total is the number of events that match the filters, not just the current page.

Errors​

Shared codes are documented in Authentication. These are specific to this route:

400 invalid query​

{
"error": {
"code": "INVALID_REQUEST",
"message": "One or more query parameters are invalid.",
"details": {
"page": "Must be greater than or equal to 1.",
"limit": "Must be between 1 and 100."
}
}
}

403 missing scope​

{
"error": {
"code": "FORBIDDEN",
"message": "The API key does not have permission to access events."
}
}

404 unknown branch​

GET /rest/v1/events?branch_id=999999
{
"error": {
"code": "NOT_FOUND",
"message": "The requested branch was not found."
}
}

branch_id is the numeric branch id, not a UUID. A branch that belongs to another organization is also not found.

405 other methods​

POST /rest/v1/events
{
"error": {
"code": "METHOD_NOT_ALLOWED",
"message": "Only GET requests are allowed for this resource."
}
}

The response includes Allow: GET.