---
title: "Edit an event"
method: PATCH
path: "/api/v1/calendars/{calendar_id}/events/{event_id}"
tags: ["Calendars"]
---

# Edit an event

`PATCH /api/v1/calendars/{calendar_id}/events/{event_id}`

## Request

- Base URL: `https://api1.unipile.com:13111`
- URL: `https://api1.unipile.com:13111/api/v1/calendars/{calendar_id}/events/{event_id}`
- Auth: API key in header `X-API-KEY`
- TypeScript: <https://skmtc.dev/unipile/apis/unipile-api-reference/docs/api/v1/calendars/:calendar_id/events/:event_id/patch.ts> (a function with typed inputs; its response is checked against the schema)

Edit a calendar event.

## Path parameters

- `event_id` string, required
- `calendar_id` string, required

## Query parameters

- `account_id` string, required

## Request body

- object
  - `title` string: The title of the event.
  - `body` string: The body of the event.
  - `location` string: The location of the event.
  - `transparency` union: The transparency of the event. `opaque` does block time on the calendar and is equivalent to setting Show me as to Busy in the Calendar UI. `transparent` does not block time on the calendar and is equivalent to setting Show me as to Available in the Calendar UI.
    - 'opaque'
    - 'transparent'
  - `visibility` union: The visibility of the event.
    - 'public'
    - 'private'
  - `conference` object
    - `provider` 'google_meet' | 'zoom' | 'teams' | 'unknown', required: The conference provider.
    - `conference_id` string: The provider-native conference ID.
    - `url` string: The conference URL. If not provided, it will automatically create a new conference (only teams and google_meet available)
  - `is_attendees_list_hidden` boolean: Is the attendees list hidden for attendees.
  - `attendees` object[]
    - `email` string, required: Email of the attendee.
  - `recurrence` string[]: List of RRULE, EXRULE, RDATE and EXDATE lines for a recurring event, as specified in RFC5545.
  - `start` union: The start date and time of the event.
    - object
      - `date_time` string, required: The date and time. Uses ISO 8601 UTC datetime (YYYY-MM-DDTHH:MM:SS.sssZ).
      - `time_zone` string, required: The time zone of the date time.
    - object
      - `date` string, required: The date. Uses ISO 8601 date format (YYYY-MM-DD).
  - `end` union: The end date and time of the event.
    - object
      - `date_time` string, required: The date and time. Uses ISO 8601 UTC datetime (YYYY-MM-DDTHH:MM:SS.sssZ).
      - `time_zone` string, required: The time zone of the date time.
    - object
      - `date` string, required: The date. Uses ISO 8601 date format (YYYY-MM-DD).
  - `color` string: The color of the event. <br> `Google Calendar`: `#7986CB`, `#33B679`, `#8E24AA`, `#E67C73`, `#F6BF26`, `#F4511E`, `#039BE5`, `#616161`, `#3F51B5`, `#0B8043`, `#D50000`
  - `notify` boolean: If true, send notifications about the event update to invited attendees.
  - `guests_can_modify` boolean: If true, allow guests to modify the event. <br> `Outlook Calendar`: Not supported, this parameter will always be false.

## Response `200`

OK

- object
  - `object` 'CalendarEventUpdated', required

## Other responses

- `401`: ## Unauthorized ### Missing credentials - Type: "errors/missing_credentials" Some credentials are necessary to perform the request. ### Multiple sessions - Type: "errors/multiple_sessions" LinkedIn limits the use of multiple sessions on Recruiter accounts. To avoid this error, opt for the cookie connection method. You can use the following endpoint to terminate all existing Recruiter sessions while keeping the active one so the Unipile account doesn't get disconnected : POST /api/v1/linkedin/sessions/recruiter/signout-others. ### Wrong account - Type: "errors/wrong_account" The provided credentials do not match the correct account. ### Invalid credentials - Type: "errors/invalid_credentials" The provided credentials are invalid. ### Invalid proxy credentials - Type: "errors/invalid_proxy_credentials" The provided proxy credentials are invalid. ### Invalid IMAP configuration - Type: "errors/invalid_imap_configuration" The provided IMAP configuration is invalid. ### Invalid SMTP configuration - Type: "errors/invalid_smtp_configuration" The provided SMTP configuration is invalid. ### Invalid checkpoint solution - Type: "errors/invalid_checkpoint_solution" The checkpoint resolution did not pass successfully. Please retry. ### Checkpoint error - Type: "errors/checkpoint_error" The checkpoint does not appear to be resolvable. Please try again and contact support if the problem persists. ### Expired credentials - Type: "errors/expired_credentials" Invalid credentials. Please check your username and password and try again. ### Expired link - Type: "errors/expired_link" This link has expired. Please return to the application and generate a new one. ### Insufficient privileges - Type: "errors/insufficient_privileges" This resource seems to be out of your scopes. ### Disconnected account - Type: "errors/disconnected_account" The account appears to be disconnected from the provider service. ### Disconnected feature - Type: "errors/disconnected_feature" The service you're trying to reach appears to be disconnected.
- `403`: ## Forbidden ### Insufficient permissions - Type: "errors/insufficient_permissions" Valid authentication but insufficient permissions to perform the request. ### Password reset required - Type: "errors/password_reset_required" LinkedIn requires you to change your password. Please change it on LinkedIn, then reconnect your account. ### Account restricted - Type: "errors/account_restricted" Access to this account has been restricted. Please sign in to the provider service to learn more about how to unlock your account. ### Account mismatch - Type: "errors/account_mismatch" This action cannot be done with your account. ### Unknown authentication context - Type: "errors/unknown_authentication_context" An additional step seems necessary to complete login. Please connect to provider with your browser to find out more, then retry authentication. ### Session mismatch - Type: "errors/session_mismatch" Token User id does not match client session id. ### Feature not subscribed - Type: "errors/feature_not_subscribed" The requested feature has either not been subscribed or not been authenticated properly. ### Subscription required - Type: "errors/subscription_required" The action you're trying to achieve requires a subscription to provider's services. ### Resource access restricted - Type: "errors/resource_access_restricted" You don't have access to this resource. ### Action required - Type: "errors/action_required" An additional step seems necessary. Complete authentication on the provider's native application and try again.
- `404`: ## Not Found ### Resource not found. The requested resource were not found. Calendar not found
- `500`: ## Internal Server Error ### Unexpected error - Type: "errors/unexpected_error" Something went wrong. {{moreDetails}} ### Provider error - Type: "errors/provider_error" The provider is experiencing operational problems. Please try again later. ### Authentication intent error - Type: "errors/authentication_intent_error" The current authentication intent was killed after failure. Please start the process again from the beginning.
- `501`: ## Not Implemented ### Missing feature Requested feature is planned but has not been implemented yet. Event edition not supported
- `503`: ## Service Unavailable ### No client session - Type: "errors/no_client_session" No client session is currently running. ### No channel - Type: "errors/no_channel" No channel to client session. ### Handler missing - Type: "errors/no_handler" Handler missing for that request. ### Network down - Type: "errors/network_down" Network is down on server side. Please wait a moment and retry. ### Service unavailable - Type: "errors/service_unavailable" Please try again later.
- `504`: ## Gateway Timeout ### Request timed out - Type: "errors/request_timeout" Request Timeout. Please try again, and if the issue persists, contact support.

## Changes

- **2026-11-03** `e74f29ca2aaa`: 1 warning
  - added the new `errors/password_reset_required` enum value to the `type` response property for the response status `403`

[Operation history](https://skmtc.dev/unipile/apis/unipile-api-reference/changes/api/v1/calendars/:calendar_id/events/:event_id/patch.md)

---

[API](https://skmtc.dev/unipile/apis/unipile-api-reference.md) - [All operations](https://skmtc.dev/unipile/apis/unipile-api-reference/llms.txt) - [OpenAPI document](https://skmtc.dev/unipile/apis/unipile-api-reference/revisions/e74f29ca2aaa?raw)
