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

Calendars

User-owned calendars and the events placed on them. Distinct from public profile events; these are the user's personal schedule.


List calendars

GET
https://api.every.day
/v1/calendars

Returns the authenticated user's calendars. Calendars are personal; this endpoint is scoped to the caller only.

List calendars › 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 calendars › Responses

Page

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

Retrieve calendar

GET
https://api.every.day
/v1/calendars/{calendar_id}

Returns a single calendar owned by the authenticated user.

Retrieve calendar › path Parameters

calendar_id
​string · required

Prefixed unique identifier of the calendar (e.g., cal_8f3ab21e49c44c8baf7b5e4a1b2c3d4e).

Retrieve calendar › Responses

Calendar

id
​string
name
​string
description
​string | null
color
​string | null
is_default
​boolean
created_at
​string · date-time
updated_at
​string · date-time
GET/v1/calendars/{calendar_id}
curl --request GET \ --url https://api.every.day/v1/calendars/:calendar_id
shell
Example Responses
No example specified for this content type
application/json

List calendar events

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

Returns events on the specified calendar. Includes both user-created calendar events and events synced from active subscriptions.

List calendar events › path Parameters

calendar_id
​string · required

Prefixed unique identifier of the calendar (e.g., cal_8f3ab21e49c44c8baf7b5e4a1b2c3d4e).

List calendar 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 calendar events › Responses

Page

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

Create calendar event

POST
https://api.every.day
/v1/calendars/{calendar_id}/events

Creates a personal event on the authenticated user's calendar. Distinct from POST /v1/events, which creates public-facing profile events.

Create calendar event › path Parameters

calendar_id
​string · required

Prefixed unique identifier of the calendar (e.g., cal_8f3ab21e49c44c8baf7b5e4a1b2c3d4e).

Create calendar 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 calendar event › Request Body

title
​string · required
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 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 for start_time. Required. Used for display and recurrence; not used to reinterpret an explicit offset. Must not be null.

end_timezone
​string

IANA timezone name for end_time. Independent of start_timezone. Required when end_time is present. Must not be null.

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. Optional; defaults to start_date + 1 day (single day) and must be after start_date (multi-day allowed).

is_all_day
​boolean
recurrence_rule
​string | null

Create calendar 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
is_all_day
​boolean
recurrence_rule
​string | null
status
​string | null
created_at
​string · date-time
updated_at
​string · date-time
POST/v1/calendars/{calendar_id}/events
curl --request POST \ --url https://api.every.day/v1/calendars/:calendar_id/events \ --header 'Content-Type: application/json' \ --data ' { "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", "is_all_day": true, "recurrence_rule": "recurrence_rule" } '
shell
Example Request Body
{ "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", "is_all_day": true, "recurrence_rule": "recurrence_rule" }
json
Example Responses
No example specified for this content type
application/json

Delete calendar event

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

Deletes a personal calendar event. Subscription-synced events cannot be deleted this way — unsubscribe from the source via deleteSubscription instead.

Delete calendar event › path Parameters

calendar_id
​string · required

Prefixed unique identifier of the calendar (e.g., cal_8f3ab21e49c44c8baf7b5e4a1b2c3d4e).

event_id
​string · required

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

Delete calendar event › Responses

Deleted

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

Update calendar event

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

Updates a personal calendar event. Only events created via createCalendarEvent are mutable here; subscription-synced events are read-only and changes must be made on the source profile.

Update calendar event › path Parameters

calendar_id
​string · required

Prefixed unique identifier of the calendar (e.g., cal_8f3ab21e49c44c8baf7b5e4a1b2c3d4e).

event_id
​string · required

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

Update calendar event › Request Body

title
​string
description
​string | null
location
​string | null
start_time
​string · pattern: ^\d{4}-\d{2}-\d{2}[T…

Event start time (naive local + start_timezone recommended; offset-bearing also accepted). When present, must be sent together with start_timezone.

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 for start_time. Required when start_time is present. Used for display and recurrence; not used to reinterpret an explicit offset. Must not be null.

end_timezone
​string

IANA timezone name for end_time. Independent of start_timezone. Required when end_time is present. Must not be null.

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. Optional; defaults to start_date + 1 day (single day) and must be after start_date (multi-day allowed).

is_all_day
​boolean
recurrence_rule
​string | null

Update calendar 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
is_all_day
​boolean
recurrence_rule
​string | null
status
​string | null
created_at
​string · date-time
updated_at
​string · date-time
PATCH/v1/calendars/{calendar_id}/events/{event_id}
curl --request PATCH \ --url https://api.every.day/v1/calendars/:calendar_id/events/:event_id \ --header 'Content-Type: application/json' \ --data ' { "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", "is_all_day": true, "recurrence_rule": "recurrence_rule" } '
shell
Example Request Body
{ "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", "is_all_day": true, "recurrence_rule": "recurrence_rule" }
json
Example Responses
No example specified for this content type
application/json

SeriesSubscriptions