Everyday | API DocumentationEveryday | API Documentation
  • Pricing
  • Documentation
  • API Reference
Information
Organizations
    List available organizationsget
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 eventpatchList connected external calendarsgetRead your agendaget
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 · pattern: ^cal_[0-9a-fA-F]{32}… · required

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

Retrieve calendar › Responses

Calendar

id
​string · pattern: ^cal_[0-9a-fA-F]{32}…
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

Stored events on one Everyday calendar, ordered by creation time. Includes personal events and materialized profile subscription events; recurring personal series remain stored rows with a rule. Connected provider events are excluded. Use GET /v1/agenda for a time-window schedule.

List calendar events › path Parameters

calendar_id
​string · pattern: ^cal_[0-9a-fA-F]{32}… · 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 · pattern: ^cal_[0-9a-fA-F]{32}… · 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 · maxLength: 8192

Single RRULE text (optional RRULE: prefix), or null to clear recurrence. Must produce a first occurrence within a bounded work allowance using the effective event start. Invalid or excessively costly rules return 400 invalid_recurrence_rule. Advanced rules such as BYDAY=2TU are supported.

transparency
​string · enum

RFC 5545 busy/free behavior: opaque blocks time; transparent does not.

Enum values:
opaque
transparent

Create calendar event › Responses

Created

id
​string · pattern: ^cev_[0-9a-fA-F]{32}…
calendar_id
​string · pattern: ^cal_[0-9a-fA-F]{32}…

Personal calendar containing this event.

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
transparency
​string · enum

RFC 5545 busy/free behavior: opaque blocks time; transparent does not.

Enum values:
opaque
transparent
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", "transparency": "opaque" } '
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", "transparency": "opaque" }
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 · pattern: ^cal_[0-9a-fA-F]{32}… · required

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

event_id
​string · pattern: ^cev_[0-9a-fA-F]{32}… · required

Prefixed unique identifier of the calendar event (e.g., cev_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 · pattern: ^cal_[0-9a-fA-F]{32}… · required

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

event_id
​string · pattern: ^cev_[0-9a-fA-F]{32}… · required

Prefixed unique identifier of the calendar event (e.g., cev_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 · maxLength: 8192

Single RRULE text (optional RRULE: prefix), or null to clear recurrence. Must produce a first occurrence within a bounded work allowance using the effective event start. Invalid or excessively costly rules return 400 invalid_recurrence_rule. Advanced rules such as BYDAY=2TU are supported.

transparency
​string · enum

RFC 5545 busy/free behavior: opaque blocks time; transparent does not.

Enum values:
opaque
transparent

Update calendar event › Responses

Updated

id
​string · pattern: ^cev_[0-9a-fA-F]{32}…
calendar_id
​string · pattern: ^cal_[0-9a-fA-F]{32}…

Personal calendar containing this event.

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
transparency
​string · enum

RFC 5545 busy/free behavior: opaque blocks time; transparent does not.

Enum values:
opaque
transparent
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", "transparency": "opaque" } '
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", "transparency": "opaque" }
json
Example Responses
No example specified for this content type
application/json

List connected external calendars

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

Lists connected calendars visible to the caller. Use xcal_ IDs as external subscription targets; cal_ identifies an Everyday personal calendar.

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

Page

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

Read your agenda

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

Read-only combined schedule over 1–31 local days. The entire window must fall within 30 days back and 365 days ahead, measured in the resolved timezone. These are query bounds, not a promise of source coverage. At most 500 sorted occurrences; complete=false reports query or expansion truncation. Sources include empty calendars; warnings indicate unknown, failed, disabled, old, or unverified sync state. Connected calendars reflect available synced data, not a live provider request. No-end events are points; all-day end dates are exclusive. RSVPs not saved to a calendar are excluded.

Read your agenda › query Parameters

date
​string · date

First local calendar day, YYYY-MM-DD. Defaults to today in the resolved timezone.

days
​integer · min: 1 · max: 31

Window length in local days. For this week, choose the week start as date; seven days from today is a rolling week.

Default: 1
timezone
​string

IANA timezone. Defaults to the saved user timezone, then UTC.

calendar_ids
​string

Optional comma-separated list of 1–100 exact cal_ or xcal_ IDs. Defaults to all Everyday calendars and selected eligible connected calendars.

detail
​string · enum

Summary includes titles, times, location and source. Full also includes description.

Enum values:
summary
full
Default: summary

Read your agenda › Responses

Combined agenda of matching stored occurrences

​object · required
​object[] · maxItems: 500 · required
complete
​boolean · required

Whether the query and expansion returned all matching stored data. Does not guarantee provider coverage or freshness.

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

SeriesSubscriptions