List a profile's events
Returns events belonging to the specified profile. Honors the same visibility rules as listEvents — private events on a private profile are not returned to non-owners.
path Parameters
profile_idPrefixed unique identifier of the profile (e.g., prf_8f3ab21e49c44c8baf7b5e4a1b2c3d4e).
query Parameters
cursorOpaque cursor returned from a previous list response.
limitMaximum number of items to return per page. Range 1-100, default 20.
List a profile's events › Responses
Page
has_morenext_cursorCreate event for a profile
Creates an event under a profile owned by the authenticated user. The profile_id is taken from the path; the request body must not also set it. Identical to createEvent except that the parent profile is path-bound.
Time formats — timed events: send a naive local time plus a timezone (recommended), e.g. start_time "2026-06-06T09:30:00" with start_timezone "America/New_York"; the server resolves it to UTC. An offset-bearing RFC 3339 value (e.g. "2026-06-06T09:30:00-04:00") is also accepted and validated against the zone. All-day events: set is_all_day true and send date-only start_date/end_date (end_date exclusive) instead of start_time/end_time.
path Parameters
profile_idPrefixed unique identifier of the profile (e.g., prf_8f3ab21e49c44c8baf7b5e4a1b2c3d4e).
Headers
Idempotency-KeyA client-generated identifier (UUIDv4 recommended; 8–255 chars, alphanumeric/underscore/hyphen) for the request. The header is validated and logged, but server-side deduplication is not enforced: resubmitting a create with the same key produces a second resource. Treat creates as non-idempotent and design retries accordingly. Deduplication is planned for a future API version.
Create event for a profile › Request Body
titleprofile_idRequired when calling POST /v1/events; inferred from path when calling POST /v1/profiles/{profile_id}/events.
descriptionlocationstart_time^\d{4}-\d{2}-\d{2}[T…Event start time. Recommended: a naive local time (no offset) interpreted in start_timezone — e.g. "2026-06-06T09:30:00". An offset-bearing RFC 3339 value (e.g. "2026-06-06T09:30:00-04:00") is also accepted. Must be sent together with start_timezone. Omit for all-day events (use start_date).
end_time^\d{4}-\d{2}-\d{2}[T…Event end time, same formats as start_time. When present, must be sent together with end_timezone. Omit for all-day events (use end_date).
start_timezoneIANA timezone name (e.g. "America/New_York") for start_time. Required. Used for display, outbound calendar sync, and recurrence expansion; it does not reinterpret an explicit offset in start_time. Must not be null.
end_timezoneIANA timezone name for end_time. Independent of start_timezone (e.g. a NYC→LA flight). Must be sent together with end_time and must not be null. When omitted on create, the platform fills it from start_timezone.
start_date^\d{4}-\d{2}-\d{2}$All-day start date (YYYY-MM-DD, date only). Required when is_all_day is true; do not send with start_time/end_time.
end_date^\d{4}-\d{2}-\d{2}$All-day end date (YYYY-MM-DD), EXCLUSIVE — the event spans up to but not including this date. Optional; defaults to start_date + 1 day (single day) and must be after start_date (multi-day allowed).
recurrence_ruleslugURL slug for the event. Optional — when omitted the platform derives one from the title and start time (evaluated in start_timezone). Reserved values (history, previous, s) are rejected.
image_urlis_all_dayis_privaterequire_rsvprequire_paymentCreate event for a profile › Responses
Created
idtitledescriptionlocationstart_timeend_timestart_timezoneend_timezonerecurrence_rulestatusslugimage_urlis_all_dayis_privaterequire_rsvprequire_paymentcancellation_reasoncancelled_atis_rescheduledcreated_atupdated_atList events
Returns a global feed of events visible to the authenticated user — a discovery feed that may include public events you do not manage. To act on events you can edit, resolve them by drilling down from listProfiles to listProfileEvents, or use listCalendarEvents for a user's personal calendar view. Returns base event rows as stored, not expanded recurrence occurrences — expanding a recurrence rule into individual occurrences is a client-side concern.
query Parameters
cursorOpaque cursor returned from a previous list response.
limitMaximum number of items to return per page. Range 1-100, default 20.
List events › Responses
Page
has_morenext_cursorCreate event
Creates an event owned by the authenticated user. profile_id is required in the body to specify the parent profile.
Time formats — timed events: send a naive local time plus a timezone (recommended), e.g. start_time "2026-06-06T09:30:00" with start_timezone "America/New_York"; the server resolves it to UTC. An offset-bearing RFC 3339 value (e.g. "2026-06-06T09:30:00-04:00") is also accepted and validated against the zone. All-day events: set is_all_day true and send date-only start_date/end_date (end_date exclusive) instead of start_time/end_time.
Headers
Idempotency-KeyA client-generated identifier (UUIDv4 recommended; 8–255 chars, alphanumeric/underscore/hyphen) for the request. The header is validated and logged, but server-side deduplication is not enforced: resubmitting a create with the same key produces a second resource. Treat creates as non-idempotent and design retries accordingly. Deduplication is planned for a future API version.
Create event › Request Body
titleprofile_idRequired when calling POST /v1/events; inferred from path when calling POST /v1/profiles/{profile_id}/events.
descriptionlocationstart_time^\d{4}-\d{2}-\d{2}[T…Event start time. Recommended: a naive local time (no offset) interpreted in start_timezone — e.g. "2026-06-06T09:30:00". An offset-bearing RFC 3339 value (e.g. "2026-06-06T09:30:00-04:00") is also accepted. Must be sent together with start_timezone. Omit for all-day events (use start_date).
end_time^\d{4}-\d{2}-\d{2}[T…Event end time, same formats as start_time. When present, must be sent together with end_timezone. Omit for all-day events (use end_date).
start_timezoneIANA timezone name (e.g. "America/New_York") for start_time. Required. Used for display, outbound calendar sync, and recurrence expansion; it does not reinterpret an explicit offset in start_time. Must not be null.
end_timezoneIANA timezone name for end_time. Independent of start_timezone (e.g. a NYC→LA flight). Must be sent together with end_time and must not be null. When omitted on create, the platform fills it from start_timezone.
start_date^\d{4}-\d{2}-\d{2}$All-day start date (YYYY-MM-DD, date only). Required when is_all_day is true; do not send with start_time/end_time.
end_date^\d{4}-\d{2}-\d{2}$All-day end date (YYYY-MM-DD), EXCLUSIVE — the event spans up to but not including this date. Optional; defaults to start_date + 1 day (single day) and must be after start_date (multi-day allowed).
recurrence_ruleslugURL slug for the event. Optional — when omitted the platform derives one from the title and start time (evaluated in start_timezone). Reserved values (history, previous, s) are rejected.
image_urlis_all_dayis_privaterequire_rsvprequire_paymentCreate event › Responses
Created
idtitledescriptionlocationstart_timeend_timestart_timezoneend_timezonerecurrence_rulestatusslugimage_urlis_all_dayis_privaterequire_rsvprequire_paymentcancellation_reasoncancelled_atis_rescheduledcreated_atupdated_atRetrieve event
Returns a single event by ID. Use the expand query parameter to inline related resources (e.g., RSVPs). Returns the base event row as stored, not an expanded recurrence occurrence.
path Parameters
event_idPrefixed unique identifier of the event (e.g., evt_8f3ab21e49c44c8baf7b5e4a1b2c3d4e).
query Parameters
expandComma-separated list of relationships to expand inline in the response. Max 3 expansions, depth 1.
Retrieve event › Responses
Event
idtitledescriptionlocationstart_timeend_timestart_timezoneend_timezonerecurrence_rulestatusslugimage_urlis_all_dayis_privaterequire_rsvprequire_paymentcancellation_reasoncancelled_atis_rescheduledcreated_atupdated_atDelete event
Permanently deletes an event and its RSVPs. For a softer flow that preserves attendee history and notifies them, use cancelEvent instead.
path Parameters
event_idPrefixed unique identifier of the event (e.g., evt_8f3ab21e49c44c8baf7b5e4a1b2c3d4e).
query Parameters
expandComma-separated list of relationships to expand inline in the response. Max 3 expansions, depth 1.
Delete event › Responses
Deleted
Update event
Updates fields on an event owned by the authenticated user. Cancelling or rescheduling an event has dedicated endpoints (POST /v1/events/{event_id}/cancel, POST /v1/events/{event_id}/reschedule) that handle the side effects on RSVPs.
path Parameters
event_idPrefixed unique identifier of the event (e.g., evt_8f3ab21e49c44c8baf7b5e4a1b2c3d4e).
query Parameters
expandComma-separated list of relationships to expand inline in the response. Max 3 expansions, depth 1.
Update event › Request Body
titledescriptionlocationstart_time^\d{4}-\d{2}-\d{2}[T…Event start as an RFC 3339 date-time. When present, must be sent together with start_timezone.
end_time^\d{4}-\d{2}-\d{2}[T…Event end as an RFC 3339 date-time. When present, must be sent together with end_timezone.
start_timezoneIANA timezone name for start_time. Required when start_time is present (they must travel together). Used for display, outbound calendar sync, and recurrence expansion. Must not be null. Omit to leave unchanged.
end_timezoneIANA timezone name for end_time. Independent of start_timezone. Required when end_time is present. Must not be null. Omit to leave unchanged; no cascade from a start_timezone change.
start_date^\d{4}-\d{2}-\d{2}$All-day start date (YYYY-MM-DD, date only). Required when is_all_day is true; do not send with start_time/end_time.
end_date^\d{4}-\d{2}-\d{2}$All-day end date (YYYY-MM-DD), EXCLUSIVE — the event spans up to but not including this date. Optional; defaults to start_date + 1 day (single day) and must be after start_date (multi-day allowed).
recurrence_ruleslugimage_urlis_all_dayis_privaterequire_rsvpUpdate event › Responses
Updated
idtitledescriptionlocationstart_timeend_timestart_timezoneend_timezonerecurrence_rulestatusslugimage_urlis_all_dayis_privaterequire_rsvprequire_paymentcancellation_reasoncancelled_atis_rescheduledcreated_atupdated_atCancel event
Marks an event as cancelled and records an optional reason. RSVP records are preserved so attendees can be notified; the event itself is no longer mutable until rescheduled.
path Parameters
event_idPrefixed unique identifier of the event (e.g., evt_8f3ab21e49c44c8baf7b5e4a1b2c3d4e).
Headers
Idempotency-KeyA client-generated identifier (UUIDv4 recommended; 8–255 chars, alphanumeric/underscore/hyphen) for the request. The header is validated and logged, but server-side deduplication is not enforced: resubmitting a create with the same key produces a second resource. Treat creates as non-idempotent and design retries accordingly. Deduplication is planned for a future API version.
Cancel event › Responses
Cancelled
idtitledescriptionlocationstart_timeend_timestart_timezoneend_timezonerecurrence_rulestatusslugimage_urlis_all_dayis_privaterequire_rsvprequire_paymentcancellation_reasoncancelled_atis_rescheduledcreated_atupdated_atReschedule event
Updates an event's start_time (and optionally end_time) and flags the event as rescheduled. Distinct from updateEvent because rescheduling is the moment to notify attendees and reset acknowledgement state.
path Parameters
event_idPrefixed unique identifier of the event (e.g., evt_8f3ab21e49c44c8baf7b5e4a1b2c3d4e).
Headers
Idempotency-KeyA client-generated identifier (UUIDv4 recommended; 8–255 chars, alphanumeric/underscore/hyphen) for the request. The header is validated and logged, but server-side deduplication is not enforced: resubmitting a create with the same key produces a second resource. Treat creates as non-idempotent and design retries accordingly. Deduplication is planned for a future API version.
Reschedule event › Request Body
start_time^\d{4}-\d{2}-\d{2}[T… · requiredNew event start as an RFC 3339 date-time. Must be sent together with start_timezone.
end_time^\d{4}-\d{2}-\d{2}[T…New event end as an RFC 3339 date-time. When present, must be sent together with end_timezone.
start_timezoneIANA timezone name for the new start_time. Required (reschedule always sets start_time). Must not be null.
end_timezoneIANA timezone name for the new end_time. Independent of start_timezone. Required when end_time is present. Must not be null.
Reschedule event › Responses
Rescheduled
idtitledescriptionlocationstart_timeend_timestart_timezoneend_timezonerecurrence_rulestatusslugimage_urlis_all_dayis_privaterequire_rsvprequire_paymentcancellation_reasoncancelled_atis_rescheduledcreated_atupdated_atList RSVPs
Returns RSVPs for an event. Only the event's owner sees full attendee details; non-owners see a redacted view limited to status counts and the caller's own RSVP if present.
path Parameters
event_idPrefixed unique identifier of the event (e.g., evt_8f3ab21e49c44c8baf7b5e4a1b2c3d4e).
query Parameters
cursorOpaque cursor returned from a previous list response.
limitMaximum number of items to return per page. Range 1-100, default 20.
List RSVPs › Responses
Page
has_morenext_cursorCreate RSVP
Creates or replaces the authenticated user's RSVP for an event. Calling again with a different status updates the existing RSVP rather than creating a duplicate.
path Parameters
event_idPrefixed unique identifier of the event (e.g., evt_8f3ab21e49c44c8baf7b5e4a1b2c3d4e).
Headers
Idempotency-KeyA client-generated identifier (UUIDv4 recommended; 8–255 chars, alphanumeric/underscore/hyphen) for the request. The header is validated and logged, but server-side deduplication is not enforced: resubmitting a create with the same key produces a second resource. Treat creates as non-idempotent and design retries accordingly. Deduplication is planned for a future API version.
Create RSVP › Request Body
statusattendee_user_idattendee_emailattendee_first_nameattendee_last_namersvp_typenum_guestsCreate RSVP › Responses
Created
iduser_idattendee_user_idattendee_emailattendee_first_nameattendee_last_namestatusrsvp_typenum_guestscreated_atupdated_atDelete RSVP
Withdraws an RSVP. Equivalent to setting status to not_going but also removes the record from the event's attendee count.
path Parameters
event_idPrefixed unique identifier of the event (e.g., evt_8f3ab21e49c44c8baf7b5e4a1b2c3d4e).
rsvp_idPrefixed unique identifier of the RSVP (e.g., rsvp_8f3ab21e49c44c8baf7b5e4a1b2c3d4e).
Delete RSVP › Responses
Deleted
Update RSVP
Updates an existing RSVP. Only the RSVP owner or the event owner can modify; others receive 404.
path Parameters
event_idPrefixed unique identifier of the event (e.g., evt_8f3ab21e49c44c8baf7b5e4a1b2c3d4e).
rsvp_idPrefixed unique identifier of the RSVP (e.g., rsvp_8f3ab21e49c44c8baf7b5e4a1b2c3d4e).
Update RSVP › Request Body
statusnum_guestsUpdate RSVP › Responses
Updated
iduser_idattendee_user_idattendee_emailattendee_first_nameattendee_last_namestatusrsvp_typenum_guestscreated_atupdated_atRSVP statistics
Returns aggregate RSVP counts by status (going, maybe, not_going, waitlist) plus total attendee count. Available to anyone who can see the event.
path Parameters
event_idPrefixed unique identifier of the event (e.g., evt_8f3ab21e49c44c8baf7b5e4a1b2c3d4e).
RSVP statistics › Responses
Stats
event_idgoingmaybenot_goingwaitlisttotal_attendeesGet RSVP settings
Returns the event's RSVP configuration (capacity, waitlist, notification policies).
path Parameters
event_idPrefixed unique identifier of the event (e.g., evt_8f3ab21e49c44c8baf7b5e4a1b2c3d4e).
Get RSVP settings › Responses
Settings
idenable_capacity_limitcapacity_limitallow_waitlistallow_multiple_attendeesallow_notificationsUpdate RSVP settings
Updates the event's RSVP configuration. Owner-only. Reducing capacity below current attendee count does not retroactively remove RSVPs but does prevent new ones.
path Parameters
event_idPrefixed unique identifier of the event (e.g., evt_8f3ab21e49c44c8baf7b5e4a1b2c3d4e).
Update RSVP settings › Request Body
enable_capacity_limitcapacity_limitallow_waitlistallow_multiple_attendeesallow_notificationsUpdate RSVP settings › Responses
Updated
idenable_capacity_limitcapacity_limitallow_waitlistallow_multiple_attendeesallow_notificationsList events in a series
Returns events in the specified series, ordered by start time.
path Parameters
series_idPrefixed unique identifier of the series (e.g., ser_8f3ab21e49c44c8baf7b5e4a1b2c3d4e).
query Parameters
cursorOpaque cursor returned from a previous list response.
limitMaximum number of items to return per page. Range 1-100, default 20.
List events in a series › Responses
Page
has_morenext_cursorAdd event to series
Adds an existing event to the series. The event and series must both be owned by the authenticated user. Adding an event that is already in the series is a no-op.
path Parameters
series_idPrefixed unique identifier of the series (e.g., ser_8f3ab21e49c44c8baf7b5e4a1b2c3d4e).
Headers
Idempotency-KeyA client-generated identifier (UUIDv4 recommended; 8–255 chars, alphanumeric/underscore/hyphen) for the request. The header is validated and logged, but server-side deduplication is not enforced: resubmitting a create with the same key produces a second resource. Treat creates as non-idempotent and design retries accordingly. Deduplication is planned for a future API version.
Add event to series › Responses
Linked
Remove event from series
Removes the event-series link but does not delete the event itself. Inverse of addEventToSeries.
path Parameters
series_idPrefixed unique identifier of the series (e.g., ser_8f3ab21e49c44c8baf7b5e4a1b2c3d4e).
event_idPrefixed unique identifier of the event (e.g., evt_8f3ab21e49c44c8baf7b5e4a1b2c3d4e).
Remove event from series › Responses
Removed
