Change an appointment

.md

Change one appearance, this one and everything after it, or the whole series.

Scopescalendar:write
PATCH/v1/me/calendar/events/{id}

Every field is optional; what you leave out stays as it was.

Say which appearance you mean

On a repeating appointment, send occurrence_start and scope. Without them the change lands on the appearance the rule puts first, with scope defaulting to this. See the overview.

Request

Everything create takes, plus:

FieldDescription
occurrence_startWhich appearance, as the moment the rule originally put it. Copy it from the list
scopethis, following or all. Defaults to this
calendar_idMoves the appointment to another calendar, by its id. Must be one you may write in
tag_idsReplaces the labels wholesale, so send the whole list. An empty array takes them all off. Left out means unchanged
remindersReplaces your own reminders, so send the whole list. A colleague's on a shared calendar stay. Left out: unchanged
curl -X PATCH https://api.proppertrading.com/v1/me/calendar/events/evt_k7m2p9x4q8r3t6v5 \
  -H "Authorization: Bearer ptat_9f2c1a44_3b8e7d2f5c9a1b4e6d8f0a2c4e6b8d1f" \
  -H "Content-Type: application/json" \
  -d '{
    "starts_at": "2026-08-24T08:00:00Z",
    "ends_at": "2026-08-24T08:30:00Z",
    "occurrence_start": "2026-08-24T07:00:00Z",
    "scope": "this"
  }'

Response

200, with the row that was actually written. On scope: "this" that is a new row standing in for the one appearance, so its id differs from the one you sent. Use the one that comes back.

Errors

StatusCodeMeaning
400validation_failedA field was wrong. error.param names it
403insufficient_scopeThis device does not hold calendar:write
403calendar_read_onlyThe account may read that calendar but not write in it, or it is a followed calendar, which nobody writes in
404resource_not_foundNo such appointment here