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

Profiles

Public-facing profiles owned by Everyday users. Each profile groups events, series, and followers under a single identity.


List profiles

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

Returns the profiles the authenticated caller can manage — those they own directly or administer through an organization they belong to. This is a workflow endpoint, not platform-wide discovery: public profiles owned by others are not returned. Use it to resolve a name to a profile you can write to before creating or modifying its events or series. (Platform-wide public search is a separate, forthcoming capability.)

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

A page of profiles.

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

Create profile

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

Creates a profile owned by the authenticated user. everyday_id must be unique across the platform; conflicts return 409.

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

everyday_id
​string · required
display_name
​string · required
description
​string | null
profile_image_url
​string | null · uri
header_image_url
​string | null · uri
is_private
​boolean

Create profile › Responses

Created

id
​string
everyday_id
​string
display_name
​string
description
​string | null
profile_image_url
​string | null · uri
header_image_url
​string | null · uri
is_private
​boolean
featured_event_id
​string | null
default_event_duration_minutes
​integer | null
created_at
​string · date-time
updated_at
​string · date-time
POST/v1/profiles
curl --request POST \ --url https://api.every.day/v1/profiles \ --header 'Content-Type: application/json' \ --data ' { "everyday_id": "everyday_id", "display_name": "display_name", "description": "description", "profile_image_url": "https://www.example.com/path/to/resource", "header_image_url": "https://www.example.com/path/to/resource", "is_private": true } '
shell
Example Request Body
{ "everyday_id": "everyday_id", "display_name": "display_name", "description": "description", "profile_image_url": "https://www.example.com/path/to/resource", "header_image_url": "https://www.example.com/path/to/resource", "is_private": true }
json
Example Responses
No example specified for this content type
application/json

Retrieve profile

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

Returns a single profile by its prefixed ID. Returns 404 if the profile does not exist or is private and not visible to the caller.

Retrieve profile › path Parameters

profile_id
​string · required

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

Retrieve profile › Responses

Profile

id
​string
everyday_id
​string
display_name
​string
description
​string | null
profile_image_url
​string | null · uri
header_image_url
​string | null · uri
is_private
​boolean
featured_event_id
​string | null
default_event_duration_minutes
​integer | null
created_at
​string · date-time
updated_at
​string · date-time
GET/v1/profiles/{profile_id}
curl --request GET \ --url https://api.every.day/v1/profiles/:profile_id
shell
Example Responses
No example specified for this content type
application/json

Delete profile

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

Soft-deletes a profile and schedules its associated data for cleanup. Idempotent — deleting an already-deleted profile is a no-op.

Delete profile › path Parameters

profile_id
​string · required

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

Delete profile › Responses

Deleted

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

Update profile

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

Updates a profile owned by the authenticated user. Only the caller's own profiles are mutable; attempting to update someone else's profile returns 404.

Update profile › path Parameters

profile_id
​string · required

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

Update profile › Request Body

display_name
​string
description
​string | null
profile_image_url
​string | null · uri
header_image_url
​string | null · uri
is_private
​boolean

Update profile › Responses

Updated

id
​string
everyday_id
​string
display_name
​string
description
​string | null
profile_image_url
​string | null · uri
header_image_url
​string | null · uri
is_private
​boolean
featured_event_id
​string | null
default_event_duration_minutes
​integer | null
created_at
​string · date-time
updated_at
​string · date-time
PATCH/v1/profiles/{profile_id}
curl --request PATCH \ --url https://api.every.day/v1/profiles/:profile_id \ --header 'Content-Type: application/json' \ --data ' { "display_name": "display_name", "description": "description", "profile_image_url": "https://www.example.com/path/to/resource", "header_image_url": "https://www.example.com/path/to/resource", "is_private": true } '
shell
Example Request Body
{ "display_name": "display_name", "description": "description", "profile_image_url": "https://www.example.com/path/to/resource", "header_image_url": "https://www.example.com/path/to/resource", "is_private": true }
json
Example Responses
No example specified for this content type
application/json

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 a profile's series

GET
https://api.every.day
/v1/profiles/{profile_id}/series

Returns series belonging to the specified profile.

List a profile's series › path Parameters

profile_id
​string · required

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

List a profile's 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 a profile's series › Responses

Page

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

Create series for a profile

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

Creates a series under a profile owned by the authenticated user. slug must be unique within the profile; conflicts return 409.

Create series for a profile › path Parameters

profile_id
​string · required

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

Create series 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 series for a profile › Request Body

name
​string · required
slug
​string · required
description
​string | null
is_private
​boolean

Create series for a profile › Responses

Created

id
​string
name
​string
slug
​string
description
​string | null
is_private
​boolean
created_at
​string · date-time
updated_at
​string · date-time
POST/v1/profiles/{profile_id}/series
curl --request POST \ --url https://api.every.day/v1/profiles/:profile_id/series \ --header 'Content-Type: application/json' \ --data ' { "name": "name", "slug": "slug", "description": "description", "is_private": true } '
shell
Example Request Body
{ "name": "name", "slug": "slug", "description": "description", "is_private": true }
json
Example Responses
No example specified for this content type
application/json

List followers of a profile

GET
https://api.every.day
/v1/profiles/{profile_id}/followers

Returns users following the specified profile. Only returned if the profile is public, or if the authenticated user owns the profile.

List followers of a profile › path Parameters

profile_id
​string · required

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

List followers of a profile › 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 followers of a profile › Responses

Page

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

Events