---
title: "Update Calendar Event"
method: PUT
path: "/v2.0/calendar/{calendarId}"
tags: ["Calendar V2 API"]
---

# Update Calendar Event

`PUT /v2.0/calendar/{calendarId}`

## Request

- Base URL: `https://api.lofty.com`
- URL: `https://api.lofty.com/v2.0/calendar/{calendarId}`
- Auth: none required
- TypeScript: <https://skmtc.dev/lofty/apis/lofty-service-open-apis/docs/v2.0/calendar/:calendarId/put.ts> (a function with typed inputs; its response is checked against the schema)

Partially updates a Task or Appointment. Only non-empty fields in the request body are applied; omitted fields keep their current values.

Notes:
- calendarId must be the composite string returned by POST /v2.0/calendar (e.g. '12345-task' or '12345-appointment'). Invalid format returns 400.
- When startAt or endAt is supplied, it must be later than the current server time.

## Path parameters

- `calendarId` string, required

## Headers

- `Authorization` string, required
- `Content-Type` string, required

## Request body

- CalendarUpdateRequestV2: Partial update payload; only non-empty fields are applied.
  - `content` string: Updated content/description
  - `startAt` string: Updated start time in ISO8601 format. Preferred over startAtMs when both are provided.
  - `endAt` string: Updated end time in ISO8601 format. Preferred over endAtMs when both are provided.
  - `startAtMs` integer: Updated start time as Unix timestamp in milliseconds. Used when startAt is not provided.
  - `endAtMs` integer: Updated end time as Unix timestamp in milliseconds. Used when endAt is not provided.
  - `timeZoneCode` string: Updated timezone code
  - `reminderType` string: Updated reminder type
  - `reminderTime` string: Updated reminder time
  - `leadId` integer: Updated lead ID
  - `address` string: Updated address (for APPOINTMENT)

## Response `200`

Calendar updated. Response body is a simple message envelope.

- CalendarMessageResponseEnvelope: Simple message envelope used by PUT / DELETE / finish / unfinish calendar endpoints.
  - `message` string: Result message for the calendar operation.

## Other responses

- `400`: Invalid calendarId format, target not found, or invalid parameters (20012 INVALID_PARAMETER); caller is not the manager (20017 PERMISSION_DENIED).
- `401`: Missing or invalid authentication token.
- `500`: Internal server error.

---

[API](https://skmtc.dev/lofty/apis/lofty-service-open-apis.md) - [All operations](https://skmtc.dev/lofty/apis/lofty-service-open-apis/llms.txt) - [OpenAPI document](https://skmtc.dev/lofty/apis/lofty-service-open-apis/revisions/23e640467118?raw)
