---
title: "Update a calendar event (v2)"
method: PATCH
path: "/v2/agenda/calendar/events/{eventId}"
tags: ["agenda"]
---

# Update a calendar event (v2)

`PATCH /v2/agenda/calendar/events/{eventId}`

Partially update an event by its provider event ID. Only provided fields change; sending new times can switch an event between timed and all-day. **Requires an `Idempotency-Key` header.** Returns `{ data: { calendar_event } }`.

## Path parameters

- `eventId` string, required

## Request body

- object
  - `summary` string
  - `description` string
  - `location` string
  - `attendees` object[]
    - `email` string, email, required
    - `display_name` string
  - `account_email` string
  - `account_provider` 'GOOGLE' | 'OFFICE365'
  - `start_datetime` string, date-time — Event start, ISO 8601 with offset (timed events)
  - `end_datetime` string, date-time — Event end, ISO 8601 with offset (timed events)
  - `timezone` string — IANA timezone for the event (e.g. "America/New_York")
  - `start_date` string, date — Event start date, YYYY-MM-DD (all-day events)
  - `end_date` string, date — Event end date, YYYY-MM-DD, EXCLUSIVE (all-day events; a one-day event on the 10th ends on the 11th)

## Response `200`

Successful response

- object
  - `data` object, required
    - `calendar_event` object, required
      - `providerId` string, required
      - `type` 'EMAIL' | 'CALENDAR', required
      - `subjectOrTitle` string, required
      - `dateTime` union, required
        - string, date-time
        - unknown
      - `endDateTime` union
        - string, date-time
        - unknown
      - `isAllDay` boolean, nullable
      - `participants` object[], required
        - `email` string, required
        - `name` string, nullable
      - `providerLink` string, nullable
      - `email` string, required
      - `iCalUID` string, nullable
      - `summaryOfEvent` string, nullable
      - `descriptionOfEvent` string, nullable
      - `conferenceData` object, nullable
        - `conferenceId` string, nullable
        - `entryPoints` object[], nullable
          - `uri` string, nullable
          - `label` string, nullable
          - `accessCode` string, nullable
      - `isRecurring` boolean, nullable
      - `provider` string, nullable

## Other responses

- `400` — Request body failed validation.
- `401` — Missing or invalid API key.
- `403` — Valid key, insufficient permission.
- `404` — Resource does not exist.
- `409` — Request body failed validation.
- `429` — Rate limit exceeded.
- `500` — Unexpected server error.

---

[API](https://skmtc.net/getdex/apis/dex-public-api.md) · [All operations](https://skmtc.net/getdex/apis/dex-public-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/getdex/dex-public-api/revisions/af2dcc7aff5c/schema)
