proton calendar events
Events in your calendars.
Every command under proton calendar events, with the arguments and flags it takes. For these commands in use, see the calendar guide.
Holds create, delete, export, get, import, list, respond and update.
create
Section titled “create”Create an event.
–start takes a day and a time, as 2026-04-16T14:00. A bare day is an event with no time of day, which –all-day has to say as well.
Without –end or –duration an event lasts as long as the calendar it is made in says a new event lasts, which settings calendars get shows; an all-day event lasts a day.
–color gives an event a color of its own; without one it is drawn in its calendar’s. Once it has one there is no way back. A color of its own is a paid feature: on a free account it is stored but not drawn.
proton calendar events createproton calendar events create --title Dentist --start 2026-04-16T14:00 --duration 1hproton calendar events create --title Standup --start 2026-04-16T09:00 --duration 15m --rrule 'FREQ=WEEKLY;COUNT=10' --remind 15mproton calendar events create --title Holiday --start 2026-07-01 --all-day --calendar Personalproton calendar events create --title 'Design review' --start 2026-04-20T10:00 --end 2026-04-20T10:45 --attendee jane@example.com --location 'Room 3'proton calendar events create --title Renewal --start 2026-09-01T09:00 --remind 1d:emailproton calendar events create --title Deadline --start 2026-04-30T17:00 --duration 1h --color strawberry| Flag | Description |
|---|---|
--all-day |
An event with no time of day |
--attendee stringArray |
Invite someone, as EMAIL or EMAIL:optional; Proton users are added directly, others are emailed (repeatable) |
--calendar string |
Which calendar, by name or ID (default: your default calendar) |
--color string |
Set the color, by name (purple) or hex (#8080FF) |
--description string |
Set the description |
--duration string |
Set how long it lasts (e.g. 15m, 1h, 2h30m, 3d) |
--end string |
Set the end: the last day it runs through, or a day and a time |
--location string |
Set where it is |
--remind stringArray |
Remind this long before the start, as DURATION or DURATION:email (repeatable) |
--rrule string |
Set the recurrence rule, e.g. FREQ=WEEKLY;COUNT=10 |
--start string |
Set the start: a day, or a day and a time (2026-04-16, 2026-04-16T14:00, or full RFC 3339) |
--status string |
Set whether it is going ahead: confirmed, tentative, cancelled |
--title string |
Set the title |
delete
Section titled “delete”Delete events.
A reference that names one occurrence of a recurring event deletes only that occurrence. Add –onwards to delete it and every later one, or drop the @ part of the reference to delete the whole series.
proton calendar events delete REF...proton calendar events delete Dentistproton calendar events delete 4f2a1b9c@2026-05-04T09:00 --onwards| Flag | Description |
|---|---|
--onwards |
Also delete every later occurrence of the series |
export
Section titled “export”Write events out as an .ics file.
With neither –after nor –before it covers the next 30 days, starting today. With one of them, it covers the 30 days starting or ending there.
A recurring series is written once, with its rule, so another client reads it back as the same series.
proton calendar events exportproton calendar events export --after 2026-01-01 --before 2026-12-31 --dest year.icsproton calendar events export --calendar Work --dest - > work.ics| Flag | Description |
|---|---|
--after string |
First day to include (YYYY-MM-DD) |
--before string |
Last day to include (YYYY-MM-DD) |
--calendar string |
Which calendar, by name or ID (default: all of them) |
--dest string |
Write to this path, or - for stdout |
--dest-dir string |
Write into this directory, keeping each item’s own name |
--force |
Overwrite a file that already exists |
Show one event, decrypted.
proton calendar events get REFproton calendar events get Dentistproton calendar events get 4f2a1b9c@2026-04-22T09:00import
Section titled “import”Read events in from an .ics file, or from stdin with -.
An event is addressed by its UID, so reading a file back changes that event rather than making a second one.
Participants are left out. An imported event is a record; no invitations are sent.
A color in the file becomes the nearest of Proton’s twenty accent colors, since those are the only ones it stores.
proton calendar events import PATHproton calendar events import holidays.icsproton calendar events import --calendar Work team.icscurl -s https://example.com/team.ics | proton calendar events import -| Flag | Description |
|---|---|
--calendar string |
Which calendar to import into, by name or ID (default: your default calendar) |
List what is on your calendars between two dates.
With neither –after nor –before it covers the next 30 days, starting today. With one of them, it covers the 30 days starting or ending there.
–keyword matches the title, the location, the description, the organizer and the people invited. On its own it covers every event there has been and the next three years of every repeating one; with –after or –before it covers those days instead.
Each occurrence of a recurring event is listed on its own day, with a reference that names that occurrence.
Covers every calendar unless –calendar narrows it to one.
proton calendar events listproton calendar events listproton calendar events list --after 2026-04-15 --before 2026-04-30proton calendar events list --calendar Workproton calendar events list --keyword dentist| Flag | Description |
|---|---|
--after string |
First day to include (YYYY-MM-DD) |
--before string |
Last day to include (YYYY-MM-DD) |
--calendar string |
Which calendar, by name or ID (default: all of them) |
--keyword string |
Match text in the title, location, description, organizer or attendees |
--limit int |
How many events per page; 0 for all of them |
--page int |
Which page of results, counting from zero |
respond
Section titled “respond”Answer an invitation, telling the organizer.
proton calendar events respond REFproton calendar events respond 'Team sync' --answer acceptproton calendar events respond 'Team sync' --answer decline| Flag | Description |
|---|---|
--answer string |
Your reply to the invitation: accept, tentative, decline |
update
Section titled “update”Change an event.
Anything you do not mention is left alone, including the reminders and the recurrence.
–start takes a day, which moves the event and leaves its time of day alone, or a day and a time, which gives an all-day event a time of day and makes it last what the calendar says a new event lasts. –all-day takes the time of day away again; –all-day=false is the other direction and needs a –start saying which time.
A reference that names one occurrence of a recurring event changes only that occurrence. Add –onwards to change it and every later one, or drop the @ part of the reference to change the whole series, which –dry-run will show you before you do.
–color gives an event a color of its own; without one it is drawn in its calendar’s. Once it has one there is no way back. A color of its own is a paid feature: on a free account it is stored but not drawn.
proton calendar events update REFproton calendar events update Dentist --start 2026-04-16T15:30proton calendar events update 4f2a1b9c@2026-04-22T09:00 --location 'Room 3'proton calendar events update 4f2a1b9c@2026-04-22T09:00 --title Standup --onwardsproton calendar events update Offsite --all-dayproton calendar events update Offsite --all-day=false --start 2026-07-01T09:00 --end 2026-07-01T17:00proton calendar events update Dentist --color pacific| Flag | Description |
|---|---|
--all-day |
Turn it into an event with no time of day |
--color string |
Replace the color, by name (purple) or hex (#8080FF) |
--description string |
Replace the description |
--duration string |
Replace how long it lasts (e.g. 15m, 1h, 2h30m, 3d) |
--end string |
Replace the end: the last day it runs through, or a day and a time |
--location string |
Replace where it is |
--no-remind |
Remove the reminders |
--onwards |
Also change every later occurrence of the series |
--remind stringArray |
Remind this long before the start, as DURATION or DURATION:email (repeatable) |
--rrule string |
Replace the recurrence rule, e.g. FREQ=WEEKLY;COUNT=10 |
--start string |
Replace the start: a day, or a day and a time (2026-04-16, 2026-04-16T14:00, or full RFC 3339) |
--status string |
Replace whether it is going ahead: confirmed, tentative, cancelled |
--title string |
Replace the title |
Every command also takes the flags that work everywhere.