attendees are given, standard iMIP invitations go out to each of them; omit the field (or pass an empty array) to create a personal event — a block of your own time such as a focus block or a travel buffer — with no invitations sent. Pass recurrence to create a repeating series in the same call.
Parameters
string
required
Event title. 1–200 characters.
string
required
Start datetime, ISO 8601 with offset, e.g.
2026-07-14T10:00:00+02:00. For a series, the first occurrence.string
required
End datetime, ISO 8601 with offset. Must be after
start.string[]
Up to 50 attendee email addresses. Each receives an invitation. Omit — or pass
[] — for a personal event with no invitations.string
default:"all"
all (default) sends invitations to the attendees; none writes the event without inviting anyone — useful when an invitation has already been sent out of band. Irrelevant without attendees.string
A CalDAV URL from
list_calendars. Defaults to the user’s default calendar.string
Event description, up to 5,000 characters.
string
Event location, up to 500 characters.
string | object
Turns the event into a repeating series; omit for a one-off event. Two forms:Structured object:
Raw RRULE string: a single-line iCalendar RRULE starting with
FREQ=, up to 1,000 characters, e.g. FREQ=WEEKLY;BYDAY=TH or FREQ=DAILY;COUNT=10. Express UNTIL as a UTC date-time (UNTIL=20261231T000000Z). Raw rules are only lightly validated — malformed rules surface as server errors.Example
Call
Result
Call
Result
uid — it identifies the event for updates, deletion, and RSVPs. To invite people to an event created without attendees, pass addedAttendees to update_calendar_event later.
Errors
Event end must be after its start.No calendar available to create the event in.— the user has no calendar and none was specified.Calendar not found: <url>— thecalendarUrldidn’t resolve.Provide at most one of `until` or `count`, not both.— conflicting series bounds.