Skip to content

Calendars API

All endpoints require authentication. Base path: /api/v1/calendars.

MethodPathDescription
GET/v1/calendarsList all calendars (own, shared, subscribed)
POST/v1/calendarsCreate a calendar (name; 409 if it already exists)
PUT/v1/calendars/{instanceId}Update a calendar’s color
DELETE/v1/calendars/{instanceId}Delete a calendar
DELETE/v1/calendars/{instanceId}/unsubscribeUnsubscribe from a shared calendar
PUT/v1/calendars/orderReorder calendars (order[])
MethodPathDescription
GET/v1/calendars/events/widgetUpcoming events for the dashboard widget
GET/v1/calendars/events/{yearMonth}Events for a month (YYYY-MM)
POST/v1/calendars/{instanceId}/eventsCreate an event
PUT/v1/calendars/{instanceId}/events/{eventUri}Update or move an event (etag for conflict handling)
DELETE/v1/calendars/{instanceId}/events/{eventUri}Delete an event
PUT/v1/calendars/{instanceId}/events/{eventUri}/occurrence/{occurrenceDate}Update a single recurring occurrence
DELETE/v1/calendars/{instanceId}/events/{eventUri}/occurrence/{occurrenceDate}Delete a single occurrence

Event creation accepts: title, start_date, end_date, description, location, is_all_day, is_recurring, recurrence_rule, recurrence_end.

MethodPathDescription
GET/v1/calendars/events/{eventId}/attachments/todosTodos attached to an event
POST/v1/calendars/events/{eventId}/attachments/todosAttach a todo (todo_id)
DELETE/v1/calendars/events/{eventId}/attachments/todos/{todoId}Detach a todo
GET/v1/calendars/events/{eventId}/attachments/notesNotes attached to an event
POST/v1/calendars/events/{eventId}/attachments/notesAttach a note (note_id)
DELETE/v1/calendars/events/{eventId}/attachments/notes/{noteId}Detach a note
MethodPathDescription
GET/v1/calendars/{instanceId}/shareList sharees (owner only)
POST/v1/calendars/{instanceId}/shareShare with a friend (friend_id)
DELETE/v1/calendars/{instanceId}/share/{userId}Revoke share access
GET/v1/calendars/invitesList pending share invites
PUT/v1/calendars/invites/{token}/acceptAccept an invite
PUT/v1/calendars/invites/{token}/declineDecline an invite
MethodPathDescription
POST/v1/calendars/importStart an external CalDAV import (url, username, secret)
POST/v1/calendars/import/selectSelect calendars to import
GET/v1/calendars/import/stateImport progress state