# google-calendar.events.update

Change the title, times or guests of an event by its id

> Updates an event. This method supports patch semantics.

Page: https://telipot.com/catalog/tasks/google-calendar.events.update · Markdown: https://telipot.com/catalog/tasks/google-calendar.events.update/md · JSON: https://telipot.com/catalog/tasks/google-calendar.events.update/json

| Field | Value |
| --- | --- |
| provider | [Google Calendar](https://telipot.com/catalog/providers/google-calendar) `google-calendar` |
| capability | [`calendar.events.update`](https://telipot.com/catalog/capabilities/calendar.events.update) |
| kind | action |
| tier | core |
| price | Free (Free from the tool) |
| identity | Person’s own |
| auth | `oauth · OAuth 2.0 with PKCE` |
| scope | own_account |
| principal | user |
| required_scopes | `calendar.events` |
| retention | standard |
| route | `PATCH https://www.googleapis.com/calendar/v3/calendars/{calendarId}/events/{eventId}` |
| verification | Not verified yet. Not checked yet. We test with a real request before we mark it. |
| status | live |
| docs | https://developers.google.com/workspace/calendar/api/v3/reference/events/patch |

## Preview the price · nothing runs

```bash
telipot run google-calendar.events.update \
  --input-json '{"calendarId":"primary","eventId":"3vq8k2nd5ho1c7a9f0b4lmetoe"}' \
  --as user:ana \
  --quote
```

## Run it

```bash
telipot run google-calendar.events.update \
  --input-json '{"calendarId":"primary","eventId":"3vq8k2nd5ho1c7a9f0b4lmetoe"}' \
  --as user:ana
```

```bash
curl https://api.telipot.com/v1/tasks/google-calendar.events.update/run \
  -H "Authorization: Bearer $TELIPOT_TOKEN" \
  -H "Telipot-Principal: user:ana" \
  -H "Content-Type: application/json" \
  -d '{"calendarId":"primary","eventId":"3vq8k2nd5ho1c7a9f0b4lmetoe"}'
```

## Input

| Field | In | Type | Required | Constraints | Note |
| --- | --- | --- | --- | --- | --- |
| `calendarId` | pathParams | string | yes |  | primary for the connected account's own calendar, or an id from google-calendar.calendars.list |
| `eventId` | pathParams | string | yes |  | The event id, as google-calendar.events.list returns it |
| `sendUpdates` | queryParams | string | no | one of "all", "externalOnly", "none" | Which guests get an email about the change; none when absent |
| `start` | body | object | no |  | An object with a dateTime and its offset, or a date for an all-day event, and optionally a timeZone |
| `end` | body | object | no |  | Exclusive; an object with a dateTime and its offset, or a date for an all-day event, and optionally a timeZone |
| `summary` | body | string | no |  | The title |
| `description` | body | string | no |  | The description; it can hold HTML |
| `location` | body | string | no |  | Free text |
| `attendees` | body | array | no |  | The guests, each an object with an email, and optionally optional, displayName or comment; the list replaces the event's guests, so send everyone who stays |
| `recurrence` | body | array | no |  | RRULE, EXRULE, RDATE and EXDATE lines, which replace the event's own; give the start and end a timeZone when it recurs |
| `reminders` | body | object | no |  | The reminders for the connected account on this event |
| `visibility` | body | string | no | one of "default", "public", "private", "confidential" | Who can see the event's details |
| `transparency` | body | string | no | one of "opaque", "transparent" | opaque blocks time on the calendar and transparent leaves it free |
| `colorId` | body | string | no |  | An id from the event colors the Calendar API lists |

## Input schema

```json
{
  "type": "object",
  "properties": {
    "calendarId": {
      "type": "string",
      "description": "primary for the connected account's own calendar, or an id from google-calendar.calendars.list",
      "examples": [
        "primary"
      ]
    },
    "eventId": {
      "type": "string",
      "description": "The event id, as google-calendar.events.list returns it",
      "examples": [
        "3vq8k2nd5ho1c7a9f0b4lmetoe"
      ]
    },
    "sendUpdates": {
      "type": "string",
      "description": "Which guests get an email about the change; none when absent",
      "enum": [
        "all",
        "externalOnly",
        "none"
      ]
    },
    "start": {
      "type": "object",
      "description": "An object with a dateTime and its offset, or a date for an all-day event, and optionally a timeZone",
      "examples": [
        {
          "dateTime": "2026-10-12T10:00:00-07:00",
          "timeZone": "America/Los_Angeles"
        }
      ]
    },
    "end": {
      "type": "object",
      "description": "Exclusive; an object with a dateTime and its offset, or a date for an all-day event, and optionally a timeZone",
      "examples": [
        {
          "dateTime": "2026-10-12T10:30:00-07:00",
          "timeZone": "America/Los_Angeles"
        }
      ]
    },
    "summary": {
      "type": "string",
      "description": "The title",
      "examples": [
        "Planning"
      ]
    },
    "description": {
      "type": "string",
      "description": "The description; it can hold HTML"
    },
    "location": {
      "type": "string",
      "description": "Free text"
    },
    "attendees": {
      "type": "array",
      "description": "The guests, each an object with an email, and optionally optional, displayName or comment; the list replaces the event's guests, so send everyone who stays",
      "examples": [
        [
          {
            "email": "contact@example.com"
          }
        ]
      ]
    },
    "recurrence": {
      "type": "array",
      "description": "RRULE, EXRULE, RDATE and EXDATE lines, which replace the event's own; give the start and end a timeZone when it recurs",
      "examples": [
        [
          "RRULE:FREQ=WEEKLY;COUNT=4"
        ]
      ]
    },
    "reminders": {
      "type": "object",
      "description": "The reminders for the connected account on this event",
      "examples": [
        {
          "useDefault": false,
          "overrides": [
            {
              "method": "popup",
              "minutes": 10
            }
          ]
        }
      ]
    },
    "visibility": {
      "type": "string",
      "description": "Who can see the event's details",
      "enum": [
        "default",
        "public",
        "private",
        "confidential"
      ]
    },
    "transparency": {
      "type": "string",
      "description": "opaque blocks time on the calendar and transparent leaves it free",
      "enum": [
        "opaque",
        "transparent"
      ]
    },
    "colorId": {
      "type": "string",
      "description": "An id from the event colors the Calendar API lists"
    }
  },
  "required": [
    "calendarId",
    "eventId"
  ],
  "additionalProperties": false
}
```

## Output schema

```json
{
  "type": "object",
  "properties": {
    "id": {
      "type": "string"
    },
    "status": {
      "type": "string",
      "description": "confirmed, tentative or cancelled"
    },
    "summary": {
      "type": "string",
      "description": "The title"
    },
    "description": {
      "type": "string",
      "description": "The description; it can hold HTML"
    },
    "location": {
      "type": "string"
    },
    "htmlLink": {
      "type": "string",
      "description": "A link to the event in the Google Calendar web app"
    },
    "created": {
      "type": "string",
      "description": "RFC 3339 time"
    },
    "updated": {
      "type": "string",
      "description": "RFC 3339 time of the last change to the main event data"
    },
    "creator": {
      "type": "object",
      "properties": {
        "email": {
          "type": "string"
        },
        "displayName": {
          "type": "string"
        },
        "self": {
          "type": "boolean"
        }
      }
    },
    "organizer": {
      "type": "object",
      "properties": {
        "email": {
          "type": "string"
        },
        "displayName": {
          "type": "string"
        },
        "self": {
          "type": "boolean"
        }
      }
    },
    "start": {
      "type": "object",
      "description": "A date for an all-day event, or a dateTime with its offset",
      "properties": {
        "date": {
          "type": "string"
        },
        "dateTime": {
          "type": "string"
        },
        "timeZone": {
          "type": "string"
        }
      }
    },
    "end": {
      "type": "object",
      "description": "Exclusive; a date for an all-day event, or a dateTime with its offset",
      "properties": {
        "date": {
          "type": "string"
        },
        "dateTime": {
          "type": "string"
        },
        "timeZone": {
          "type": "string"
        }
      }
    },
    "recurrence": {
      "type": "array",
      "description": "RRULE, EXRULE, RDATE and EXDATE lines of a recurring event",
      "items": {
        "type": "string"
      }
    },
    "recurringEventId": {
      "type": "string",
      "description": "The id of the recurring event this is an instance of"
    },
    "originalStartTime": {
      "type": "object",
      "properties": {
        "date": {
          "type": "string"
        },
        "dateTime": {
          "type": "string"
        },
        "timeZone": {
          "type": "string"
        }
      }
    },
    "attendees": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "email": {
            "type": "string"
          },
          "displayName": {
            "type": "string"
          },
          "responseStatus": {
            "type": "string",
            "description": "needsAction, declined, tentative or accepted"
          },
          "organizer": {
            "type": "boolean"
          },
          "self": {
            "type": "boolean"
          },
          "resource": {
            "type": "boolean"
          },
          "optional": {
            "type": "boolean"
          }
        }
      }
    },
    "attendeesOmitted": {
      "type": "boolean"
    },
    "hangoutLink": {
      "type": "string"
    },
    "conferenceData": {
      "type": "object",
      "description": "The conference details such as a Google Meet link"
    },
    "visibility": {
      "type": "string",
      "description": "default, public, private or confidential"
    },
    "transparency": {
      "type": "string",
      "description": "opaque when the event blocks time, transparent when it does not"
    },
    "eventType": {
      "type": "string",
      "description": "default, birthday, focusTime, fromGmail, outOfOffice or workingLocation"
    },
    "colorId": {
      "type": "string"
    },
    "iCalUID": {
      "type": "string"
    },
    "sequence": {
      "type": "integer"
    },
    "reminders": {
      "type": "object",
      "properties": {
        "useDefault": {
          "type": "boolean"
        },
        "overrides": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "method": {
                "type": "string"
              },
              "minutes": {
                "type": "integer"
              }
            }
          }
        }
      }
    },
    "etag": {
      "type": "string"
    },
    "kind": {
      "type": "string"
    }
  }
}
```

## Example response

From `examples/google-calendar.events.update.json`.

```json
{
  "kind": "calendar#event",
  "etag": "\"EXAMPLEETAG\"",
  "id": "3vq8k2nd5ho1c7a9f0b4lmetoe",
  "status": "confirmed",
  "htmlLink": "https://www.google.com/calendar/event?eid=EXAMPLE",
  "created": "2026-09-28T16:02:10.000Z",
  "updated": "2026-10-05T09:30:02.114Z",
  "summary": "Planning, moved",
  "creator": {
    "email": "contact@example.com",
    "self": true
  },
  "organizer": {
    "email": "contact@example.com",
    "self": true
  },
  "start": {
    "dateTime": "2026-10-12T10:00:00-07:00",
    "timeZone": "America/Los_Angeles"
  },
  "end": {
    "dateTime": "2026-10-12T10:30:00-07:00",
    "timeZone": "America/Los_Angeles"
  },
  "sequence": 1,
  "attendees": [
    {
      "email": "contact@example.com",
      "organizer": true,
      "self": true,
      "responseStatus": "accepted"
    },
    {
      "email": "guest@example.com",
      "responseStatus": "needsAction"
    }
  ],
  "reminders": {
    "useDefault": true
  },
  "eventType": "default"
}
```
