Everyday | API DocumentationEveryday | API Documentation
  • Pricing
  • Documentation
  • API Reference
Information
Profiles
    List profilesgetCreate profilepostRetrieve profilegetDelete profiledeleteUpdate profilepatchList a profile's eventsgetCreate event for a profilepostList a profile's seriesgetCreate series for a profilepostList followers of a profileget
Events
    List a profile's eventsgetCreate event for a profilepostList eventsgetCreate eventpostRetrieve eventgetDelete eventdeleteUpdate eventpatchCancel eventpostReschedule eventpostList RSVPsgetCreate RSVPpostDelete RSVPdeleteUpdate RSVPpatchRSVP statisticsgetGet RSVP settingsgetUpdate RSVP settingspatchList events in a seriesgetAdd event to seriespostRemove event from seriesdelete
RSVPs
    List RSVPsgetCreate RSVPpostDelete RSVPdeleteUpdate RSVPpatchRSVP statisticsgetGet RSVP settingsgetUpdate RSVP settingspatch
Series
    List a profile's seriesgetCreate series for a profilepostList seriesgetRetrieve seriesgetDelete seriesdeleteUpdate seriespatchPreview series deletiongetList events in a seriesgetAdd event to seriespostRemove event from seriesdelete
Calendars
    List calendarsgetRetrieve calendargetList calendar eventsgetCreate calendar eventpostDelete calendar eventdeleteUpdate calendar eventpatch
Subscriptions
    List subscriptionsgetCreate subscriptionpostRetrieve subscriptiongetDelete subscriptiondeleteUpdate subscriptionpatch
Follows
    List followers of a profilegetList followsgetCreate followpostDelete followdelete
Search
    Search across events, profiles, and seriesget
MCP
    MCP Server (consumer / OAuth)postMCP Server (developer / API key)post
Schemas
powered by Zuplo
Everyday Public API
Everyday Public API

Events

Individual scheduled events with start times, RSVPs, and optional recurrence.


List a profile's events

GET
https://api.every.day
/v1/profiles/{profile_id}/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.

List a profile's events › path Parameters

profile_id
​string · required

Prefixed unique identifier of the profile (e.g., prf_8f3ab21e49c44c8baf7b5e4a1b2c3d4e).

List a profile's events › query Parameters

cursor
​string

Opaque cursor returned from a previous list response.

limit
​integer · min: 1 · max: 100

Maximum number of items to return per page. Range 1-100, default 20.

Default: 20

List a profile's events › Responses

Page

​object[] · required
has_more
​boolean · required
next_cursor
​string | null · required
GET/v1/profiles/{profile_id}/events
curl --request GET \ --url https://api.every.day/v1/profiles/:profile_id/events
shell
Example Responses
No example specified for this content type
application/json

Create event for a profile

POST
https://api.every.day
/v1/profiles/{profile_id}/events

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.

Create event for a profile › path Parameters

profile_id
​string · required

Prefixed unique identifier of the profile (e.g., prf_8f3ab21e49c44c8baf7b5e4a1b2c3d4e).

Create event for a profile › Headers

Idempotency-Key
​string · minLength: 8 · maxLength: 255

A 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

title
​string · required
profile_id
​string

Required when calling POST /v1/events; inferred from path when calling POST /v1/profiles/{profile_id}/events.

description
​string | null
location
​string | null
start_time
​string · pattern: ^\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).

Example: 2026-06-06T09:30:00
end_time
​string | null · pattern: ^\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).

Example: 2026-06-06T11:30:00
start_timezone
​string

IANA 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_timezone
​string

IANA 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
​string · pattern: ^\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
​string · pattern: ^\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_rule
​string | null
slug
​string

URL 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_url
​string | null · uri
is_all_day
​boolean
is_private
​boolean
require_rsvp
​boolean
require_payment
​boolean

Create event for a profile › Responses

Created

id
​string
title
​string
description
​string | null
location
​string | null
start_time
​string · date-time
end_time
​string | null · date-time
start_timezone
​string | null
end_timezone
​string | null
recurrence_rule
​string | null
status
​string | null
slug
​string
image_url
​string | null · uri
is_all_day
​boolean
is_private
​boolean
require_rsvp
​boolean
require_payment
​boolean
cancellation_reason
​string | null
cancelled_at
​string | null · date-time
is_rescheduled
​boolean | null
created_at
​string · date-time
updated_at
​string · date-time
POST/v1/profiles/{profile_id}/events
curl --request POST \ --url https://api.every.day/v1/profiles/:profile_id/events \ --header 'Content-Type: application/json' \ --data ' { "profile_id": "profile_id", "title": "title", "description": "description", "location": "location", "start_time": "2026-06-06T09:30:00", "end_time": "2026-06-06T11:30:00", "start_timezone": "start_timezone", "end_timezone": "end_timezone", "start_date": "start_date", "end_date": "end_date", "recurrence_rule": "recurrence_rule", "slug": "slug", "image_url": "https://www.example.com/path/to/resource", "is_all_day": true, "is_private": true, "require_rsvp": true, "require_payment": true } '
shell
Example Request Body
{ "profile_id": "profile_id", "title": "title", "description": "description", "location": "location", "start_time": "2026-06-06T09:30:00", "end_time": "2026-06-06T11:30:00", "start_timezone": "start_timezone", "end_timezone": "end_timezone", "start_date": "start_date", "end_date": "end_date", "recurrence_rule": "recurrence_rule", "slug": "slug", "image_url": "https://www.example.com/path/to/resource", "is_all_day": true, "is_private": true, "require_rsvp": true, "require_payment": true }
json
Example Responses
No example specified for this content type
application/json

List events

GET
https://api.every.day
/v1/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.

List events › query Parameters

cursor
​string

Opaque cursor returned from a previous list response.

limit
​integer · min: 1 · max: 100

Maximum number of items to return per page. Range 1-100, default 20.

Default: 20

List events › Responses

Page

​object[] · required
has_more
​boolean · required
next_cursor
​string | null · required
GET/v1/events
curl --request GET \ --url https://api.every.day/v1/events
shell
Example Responses
No example specified for this content type
application/json

Create event

POST
https://api.every.day
/v1/events

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.

Create event › Headers

Idempotency-Key
​string · minLength: 8 · maxLength: 255

A 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

title
​string · required
profile_id
​string

Required when calling POST /v1/events; inferred from path when calling POST /v1/profiles/{profile_id}/events.

description
​string | null
location
​string | null
start_time
​string · pattern: ^\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).

Example: 2026-06-06T09:30:00
end_time
​string | null · pattern: ^\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).

Example: 2026-06-06T11:30:00
start_timezone
​string

IANA 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_timezone
​string

IANA 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
​string · pattern: ^\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
​string · pattern: ^\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_rule
​string | null
slug
​string

URL 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_url
​string | null · uri
is_all_day
​boolean
is_private
​boolean
require_rsvp
​boolean
require_payment
​boolean

Create event › Responses

Created

id
​string
title
​string
description
​string | null
location
​string | null
start_time
​string · date-time
end_time
​string | null · date-time
start_timezone
​string | null
end_timezone
​string | null
recurrence_rule
​string | null
status
​string | null
slug
​string
image_url
​string | null · uri
is_all_day
​boolean
is_private
​boolean
require_rsvp
​boolean
require_payment
​boolean
cancellation_reason
​string | null
cancelled_at
​string | null · date-time
is_rescheduled
​boolean | null
created_at
​string · date-time
updated_at
​string · date-time
POST/v1/events
curl --request POST \ --url https://api.every.day/v1/events \ --header 'Content-Type: application/json' \ --data ' { "profile_id": "profile_id", "title": "title", "description": "description", "location": "location", "start_time": "2026-06-06T09:30:00", "end_time": "2026-06-06T11:30:00", "start_timezone": "start_timezone", "end_timezone": "end_timezone", "start_date": "start_date", "end_date": "end_date", "recurrence_rule": "recurrence_rule", "slug": "slug", "image_url": "https://www.example.com/path/to/resource", "is_all_day": true, "is_private": true, "require_rsvp": true, "require_payment": true } '
shell
Example Request Body
{ "profile_id": "profile_id", "title": "title", "description": "description", "location": "location", "start_time": "2026-06-06T09:30:00", "end_time": "2026-06-06T11:30:00", "start_timezone": "start_timezone", "end_timezone": "end_timezone", "start_date": "start_date", "end_date": "end_date", "recurrence_rule": "recurrence_rule", "slug": "slug", "image_url": "https://www.example.com/path/to/resource", "is_all_day": true, "is_private": true, "require_rsvp": true, "require_payment": true }
json
Example Responses
No example specified for this content type
application/json

Retrieve event

GET
https://api.every.day
/v1/events/{event_id}

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.

Retrieve event › path Parameters

event_id
​string · required

Prefixed unique identifier of the event (e.g., evt_8f3ab21e49c44c8baf7b5e4a1b2c3d4e).

Retrieve event › query Parameters

expand
​string

Comma-separated list of relationships to expand inline in the response. Max 3 expansions, depth 1.

Retrieve event › Responses

Event

id
​string
title
​string
description
​string | null
location
​string | null
start_time
​string · date-time
end_time
​string | null · date-time
start_timezone
​string | null
end_timezone
​string | null
recurrence_rule
​string | null
status
​string | null
slug
​string
image_url
​string | null · uri
is_all_day
​boolean
is_private
​boolean
require_rsvp
​boolean
require_payment
​boolean
cancellation_reason
​string | null
cancelled_at
​string | null · date-time
is_rescheduled
​boolean | null
created_at
​string · date-time
updated_at
​string · date-time
GET/v1/events/{event_id}
curl --request GET \ --url https://api.every.day/v1/events/:event_id
shell
Example Responses
No example specified for this content type
application/json

Delete event

DELETE
https://api.every.day
/v1/events/{event_id}

Permanently deletes an event and its RSVPs. For a softer flow that preserves attendee history and notifies them, use cancelEvent instead.

Delete event › path Parameters

event_id
​string · required

Prefixed unique identifier of the event (e.g., evt_8f3ab21e49c44c8baf7b5e4a1b2c3d4e).

Delete event › query Parameters

expand
​string

Comma-separated list of relationships to expand inline in the response. Max 3 expansions, depth 1.

Delete event › Responses

Deleted

No data returned
DELETE/v1/events/{event_id}
curl --request DELETE \ --url https://api.every.day/v1/events/:event_id
shell
Example Responses
No example specified for this content type

Update event

PATCH
https://api.every.day
/v1/events/{event_id}

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.

Update event › path Parameters

event_id
​string · required

Prefixed unique identifier of the event (e.g., evt_8f3ab21e49c44c8baf7b5e4a1b2c3d4e).

Update event › query Parameters

expand
​string

Comma-separated list of relationships to expand inline in the response. Max 3 expansions, depth 1.

Update event › Request Body

title
​string
description
​string | null
location
​string | null
start_time
​string · pattern: ^\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
​string | null · pattern: ^\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_timezone
​string

IANA 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_timezone
​string

IANA 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
​string · pattern: ^\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
​string · pattern: ^\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_rule
​string | null
slug
​string
image_url
​string | null · uri
is_all_day
​boolean
is_private
​boolean
require_rsvp
​boolean

Update event › Responses

Updated

id
​string
title
​string
description
​string | null
location
​string | null
start_time
​string · date-time
end_time
​string | null · date-time
start_timezone
​string | null
end_timezone
​string | null
recurrence_rule
​string | null
status
​string | null
slug
​string
image_url
​string | null · uri
is_all_day
​boolean
is_private
​boolean
require_rsvp
​boolean
require_payment
​boolean
cancellation_reason
​string | null
cancelled_at
​string | null · date-time
is_rescheduled
​boolean | null
created_at
​string · date-time
updated_at
​string · date-time
PATCH/v1/events/{event_id}
curl --request PATCH \ --url https://api.every.day/v1/events/:event_id \ --header 'Content-Type: application/json' \ --data ' { "title": "title", "description": "description", "location": "location", "start_time": "start_time", "end_time": "end_time", "start_timezone": "start_timezone", "end_timezone": "end_timezone", "start_date": "start_date", "end_date": "end_date", "recurrence_rule": "recurrence_rule", "slug": "slug", "image_url": "https://www.example.com/path/to/resource", "is_all_day": true, "is_private": true, "require_rsvp": true } '
shell
Example Request Body
{ "title": "title", "description": "description", "location": "location", "start_time": "start_time", "end_time": "end_time", "start_timezone": "start_timezone", "end_timezone": "end_timezone", "start_date": "start_date", "end_date": "end_date", "recurrence_rule": "recurrence_rule", "slug": "slug", "image_url": "https://www.example.com/path/to/resource", "is_all_day": true, "is_private": true, "require_rsvp": true }
json
Example Responses
No example specified for this content type
application/json

Cancel event

POST
https://api.every.day
/v1/events/{event_id}/cancel

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.

Cancel event › path Parameters

event_id
​string · required

Prefixed unique identifier of the event (e.g., evt_8f3ab21e49c44c8baf7b5e4a1b2c3d4e).

Cancel event › Headers

Idempotency-Key
​string · minLength: 8 · maxLength: 255

A 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 › Request Body optional

reason
​string

Cancel event › Responses

Cancelled

id
​string
title
​string
description
​string | null
location
​string | null
start_time
​string · date-time
end_time
​string | null · date-time
start_timezone
​string | null
end_timezone
​string | null
recurrence_rule
​string | null
status
​string | null
slug
​string
image_url
​string | null · uri
is_all_day
​boolean
is_private
​boolean
require_rsvp
​boolean
require_payment
​boolean
cancellation_reason
​string | null
cancelled_at
​string | null · date-time
is_rescheduled
​boolean | null
created_at
​string · date-time
updated_at
​string · date-time
POST/v1/events/{event_id}/cancel
curl --request POST \ --url https://api.every.day/v1/events/:event_id/cancel \ --header 'Content-Type: application/json' \ --data ' { "reason": "reason" } '
shell
Example Request Body
{ "reason": "reason" }
json
Example Responses
No example specified for this content type
application/json

Reschedule event

POST
https://api.every.day
/v1/events/{event_id}/reschedule

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.

Reschedule event › path Parameters

event_id
​string · required

Prefixed unique identifier of the event (e.g., evt_8f3ab21e49c44c8baf7b5e4a1b2c3d4e).

Reschedule event › Headers

Idempotency-Key
​string · minLength: 8 · maxLength: 255

A 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
​string · pattern: ^\d{4}-\d{2}-\d{2}[T… · required

New event start as an RFC 3339 date-time. Must be sent together with start_timezone.

end_time
​string · pattern: ^\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_timezone
​string

IANA timezone name for the new start_time. Required (reschedule always sets start_time). Must not be null.

end_timezone
​string

IANA 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

id
​string
title
​string
description
​string | null
location
​string | null
start_time
​string · date-time
end_time
​string | null · date-time
start_timezone
​string | null
end_timezone
​string | null
recurrence_rule
​string | null
status
​string | null
slug
​string
image_url
​string | null · uri
is_all_day
​boolean
is_private
​boolean
require_rsvp
​boolean
require_payment
​boolean
cancellation_reason
​string | null
cancelled_at
​string | null · date-time
is_rescheduled
​boolean | null
created_at
​string · date-time
updated_at
​string · date-time
POST/v1/events/{event_id}/reschedule
curl --request POST \ --url https://api.every.day/v1/events/:event_id/reschedule \ --header 'Content-Type: application/json' \ --data ' { "start_time": "start_time", "end_time": "end_time", "start_timezone": "start_timezone", "end_timezone": "end_timezone" } '
shell
Example Request Body
{ "start_time": "start_time", "end_time": "end_time", "start_timezone": "start_timezone", "end_timezone": "end_timezone" }
json
Example Responses
No example specified for this content type
application/json

List RSVPs

GET
https://api.every.day
/v1/events/{event_id}/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.

List RSVPs › path Parameters

event_id
​string · required

Prefixed unique identifier of the event (e.g., evt_8f3ab21e49c44c8baf7b5e4a1b2c3d4e).

List RSVPs › query Parameters

cursor
​string

Opaque cursor returned from a previous list response.

limit
​integer · min: 1 · max: 100

Maximum number of items to return per page. Range 1-100, default 20.

Default: 20

List RSVPs › Responses

Page

​object[] · required
has_more
​boolean · required
next_cursor
​string | null · required
GET/v1/events/{event_id}/rsvps
curl --request GET \ --url https://api.every.day/v1/events/:event_id/rsvps
shell
Example Responses
No example specified for this content type
application/json

Create RSVP

POST
https://api.every.day
/v1/events/{event_id}/rsvps

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.

Create RSVP › path Parameters

event_id
​string · required

Prefixed unique identifier of the event (e.g., evt_8f3ab21e49c44c8baf7b5e4a1b2c3d4e).

Create RSVP › Headers

Idempotency-Key
​string · minLength: 8 · maxLength: 255

A 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

status
​string · enum · required
Enum values:
going
maybe
not_going
waitlist
attendee_user_id
​string | null · uuid
attendee_email
​string | null
attendee_first_name
​string | null
attendee_last_name
​string | null
rsvp_type
​string | null
num_guests
​integer · min: 1
Default: 1

Create RSVP › Responses

Created

id
​string
user_id
​string | null · uuid
attendee_user_id
​string | null · uuid
attendee_email
​string | null
attendee_first_name
​string | null
attendee_last_name
​string | null
status
​string
rsvp_type
​string | null
num_guests
​integer
created_at
​string · date-time
updated_at
​string · date-time
POST/v1/events/{event_id}/rsvps
curl --request POST \ --url https://api.every.day/v1/events/:event_id/rsvps \ --header 'Content-Type: application/json' \ --data ' { "attendee_user_id": "00000000-0000-0000-0000-000000000000", "attendee_email": "attendee_email", "attendee_first_name": "attendee_first_name", "attendee_last_name": "attendee_last_name", "status": "going", "rsvp_type": "rsvp_type", "num_guests": 1 } '
shell
Example Request Body
{ "attendee_user_id": "00000000-0000-0000-0000-000000000000", "attendee_email": "attendee_email", "attendee_first_name": "attendee_first_name", "attendee_last_name": "attendee_last_name", "status": "going", "rsvp_type": "rsvp_type", "num_guests": 1 }
json
Example Responses
No example specified for this content type
application/json

Delete RSVP

DELETE
https://api.every.day
/v1/events/{event_id}/rsvps/{rsvp_id}

Withdraws an RSVP. Equivalent to setting status to not_going but also removes the record from the event's attendee count.

Delete RSVP › path Parameters

event_id
​string · required

Prefixed unique identifier of the event (e.g., evt_8f3ab21e49c44c8baf7b5e4a1b2c3d4e).

rsvp_id
​string · required

Prefixed unique identifier of the RSVP (e.g., rsvp_8f3ab21e49c44c8baf7b5e4a1b2c3d4e).

Delete RSVP › Responses

Deleted

No data returned
DELETE/v1/events/{event_id}/rsvps/{rsvp_id}
curl --request DELETE \ --url https://api.every.day/v1/events/:event_id/rsvps/:rsvp_id
shell
Example Responses
No example specified for this content type

Update RSVP

PATCH
https://api.every.day
/v1/events/{event_id}/rsvps/{rsvp_id}

Updates an existing RSVP. Only the RSVP owner or the event owner can modify; others receive 404.

Update RSVP › path Parameters

event_id
​string · required

Prefixed unique identifier of the event (e.g., evt_8f3ab21e49c44c8baf7b5e4a1b2c3d4e).

rsvp_id
​string · required

Prefixed unique identifier of the RSVP (e.g., rsvp_8f3ab21e49c44c8baf7b5e4a1b2c3d4e).

Update RSVP › Request Body

status
​string · enum
Enum values:
going
maybe
not_going
waitlist
num_guests
​integer · min: 1

Update RSVP › Responses

Updated

id
​string
user_id
​string | null · uuid
attendee_user_id
​string | null · uuid
attendee_email
​string | null
attendee_first_name
​string | null
attendee_last_name
​string | null
status
​string
rsvp_type
​string | null
num_guests
​integer
created_at
​string · date-time
updated_at
​string · date-time
PATCH/v1/events/{event_id}/rsvps/{rsvp_id}
curl --request PATCH \ --url https://api.every.day/v1/events/:event_id/rsvps/:rsvp_id \ --header 'Content-Type: application/json' \ --data ' { "status": "going", "num_guests": 1 } '
shell
Example Request Body
{ "status": "going", "num_guests": 1 }
json
Example Responses
No example specified for this content type
application/json

RSVP statistics

GET
https://api.every.day
/v1/events/{event_id}/rsvps/stats

Returns aggregate RSVP counts by status (going, maybe, not_going, waitlist) plus total attendee count. Available to anyone who can see the event.

RSVP statistics › path Parameters

event_id
​string · required

Prefixed unique identifier of the event (e.g., evt_8f3ab21e49c44c8baf7b5e4a1b2c3d4e).

RSVP statistics › Responses

Stats

event_id
​string
going
​integer
maybe
​integer
not_going
​integer
waitlist
​integer
total_attendees
​integer
GET/v1/events/{event_id}/rsvps/stats
curl --request GET \ --url https://api.every.day/v1/events/:event_id/rsvps/stats
shell
Example Responses
No example specified for this content type
application/json

Get RSVP settings

GET
https://api.every.day
/v1/events/{event_id}/rsvp-settings

Returns the event's RSVP configuration (capacity, waitlist, notification policies).

Get RSVP settings › path Parameters

event_id
​string · required

Prefixed unique identifier of the event (e.g., evt_8f3ab21e49c44c8baf7b5e4a1b2c3d4e).

Get RSVP settings › Responses

Settings

id
​string
enable_capacity_limit
​boolean
capacity_limit
​integer | null
allow_waitlist
​boolean
allow_multiple_attendees
​boolean
allow_notifications
​boolean
GET/v1/events/{event_id}/rsvp-settings
curl --request GET \ --url https://api.every.day/v1/events/:event_id/rsvp-settings
shell
Example Responses
No example specified for this content type
application/json

Update RSVP settings

PATCH
https://api.every.day
/v1/events/{event_id}/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.

Update RSVP settings › path Parameters

event_id
​string · required

Prefixed unique identifier of the event (e.g., evt_8f3ab21e49c44c8baf7b5e4a1b2c3d4e).

Update RSVP settings › Request Body

enable_capacity_limit
​boolean
capacity_limit
​integer | null
allow_waitlist
​boolean
allow_multiple_attendees
​boolean
allow_notifications
​boolean

Update RSVP settings › Responses

Updated

id
​string
enable_capacity_limit
​boolean
capacity_limit
​integer | null
allow_waitlist
​boolean
allow_multiple_attendees
​boolean
allow_notifications
​boolean
PATCH/v1/events/{event_id}/rsvp-settings
curl --request PATCH \ --url https://api.every.day/v1/events/:event_id/rsvp-settings \ --header 'Content-Type: application/json' \ --data ' { "enable_capacity_limit": true, "capacity_limit": 0, "allow_waitlist": true, "allow_multiple_attendees": true, "allow_notifications": true } '
shell
Example Request Body
{ "enable_capacity_limit": true, "capacity_limit": 0, "allow_waitlist": true, "allow_multiple_attendees": true, "allow_notifications": true }
json
Example Responses
No example specified for this content type
application/json

List events in a series

GET
https://api.every.day
/v1/series/{series_id}/events

Returns events in the specified series, ordered by start time.

List events in a series › path Parameters

series_id
​string · required

Prefixed unique identifier of the series (e.g., ser_8f3ab21e49c44c8baf7b5e4a1b2c3d4e).

List events in a series › query Parameters

cursor
​string

Opaque cursor returned from a previous list response.

limit
​integer · min: 1 · max: 100

Maximum number of items to return per page. Range 1-100, default 20.

Default: 20

List events in a series › Responses

Page

​object[] · required
has_more
​boolean · required
next_cursor
​string | null · required
GET/v1/series/{series_id}/events
curl --request GET \ --url https://api.every.day/v1/series/:series_id/events
shell
Example Responses
No example specified for this content type
application/json

Add event to series

POST
https://api.every.day
/v1/series/{series_id}/events

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.

Add event to series › path Parameters

series_id
​string · required

Prefixed unique identifier of the series (e.g., ser_8f3ab21e49c44c8baf7b5e4a1b2c3d4e).

Add event to series › Headers

Idempotency-Key
​string · minLength: 8 · maxLength: 255

A 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 › Request Body

event_id
​string · required

Add event to series › Responses

Linked

No data returned
POST/v1/series/{series_id}/events
curl --request POST \ --url https://api.every.day/v1/series/:series_id/events \ --header 'Content-Type: application/json' \ --data ' { "event_id": "event_id" } '
shell
Example Request Body
{ "event_id": "event_id" }
json
Example Responses
No example specified for this content type

Remove event from series

DELETE
https://api.every.day
/v1/series/{series_id}/events/{event_id}

Removes the event-series link but does not delete the event itself. Inverse of addEventToSeries.

Remove event from series › path Parameters

series_id
​string · required

Prefixed unique identifier of the series (e.g., ser_8f3ab21e49c44c8baf7b5e4a1b2c3d4e).

event_id
​string · required

Prefixed unique identifier of the event (e.g., evt_8f3ab21e49c44c8baf7b5e4a1b2c3d4e).

Remove event from series › Responses

Removed

No data returned
DELETE/v1/series/{series_id}/events/{event_id}
curl --request DELETE \ --url https://api.every.day/v1/series/:series_id/events/:event_id
shell
Example Responses
No example specified for this content type

ProfilesRSVPs