Skip to main content
POST

Authorizations

Authorization
string
header
required

Your API key, sent bare. See Authentication.

Body

application/json

Exactly one of member_id and member_email.

workspace_id
string
required

Workspace ID, beginning with wks_. Treat it as an opaque string. Integer workspace ids are still accepted.

Example:

"wks_01k6a2r9s8x7c2dvq3m5n6p4ab"

event
object
required

The event exactly as your provider returned it: a Google Calendar events resource, a Microsoft Graph event (request it with Prefer: outlook.timezone="UTC" or an IANA time zone), or a Nylas v3 event (bare, as data, or as a webhook's data.object). Keys keep your provider's casing. Without a provider payload, send the small shape (CalendarEventSmall).

member_id
string

An existing member of the workspace.

member_email
string<email>

The calendar owner; created as a member the first time. Disposable-mail and reserved test domains (such as example.com) are refused with 422 invalid.

Maximum string length: 255
metadata
object

Yours, on the calendar event of the occurrence, shared by every member who has it: merged on every push ("" removes a key, metadata: "" removes them all). Never copied to the meeting.

Example:

Response

The calendar event of the occurrence, the same object as the meeting's calendar_event. Versions before 2026-10-12 return the meeting instead.

One calendar event per occurrence and workspace: every member's copy of it shares this object, as they share the meeting. Its times, link and title are the occurrence's; its people come from the organizer's copy.

id
string

Beginning with cev_. One per meeting; stays the same through reschedules and every member's push.

object
string

Always calendar_event.

meeting_id
string

The meeting of this occurrence, beginning with mtg_.

ical_uid
string | null

The iCal UID shared by every attendee's copy of the event, or null when the calendar sent none.

recurring
boolean | null

Whether the event is an occurrence of a recurring series. null only in a webhook event from before 2026-10-12, which did not record it.

title
string | null

The event title.

starts_at
string<date-time> | null

Scheduled start, in ISO 8601.

ends_at
string<date-time> | null

Scheduled end, in ISO 8601.

meeting_url
string | null

The link to join the call, or null when the event has none.

organizer
object | null

Who organizes the event, or null when unknown.

attendees
object[]

Everyone on the invite, the organizer included. Empty once no member has the event.

source
enum<string>

Where the event came from.

  • calendar_connection: a calendar the member connected.
  • calendar_sync: an event you pushed with POST /calendar_events.
Available options:
calendar_connection,
calendar_sync
metadata
object

Yours; set it with POST /calendar_events. Never copied to the meeting.

Example:
cancelled_at
string<date-time> | null

When the event was cancelled, once no member of the workspace still has it; otherwise null.

created_at
string<date-time>

When the event first appeared, in ISO 8601.

updated_at
string<date-time>

When the event or its meeting last changed, in ISO 8601.