# Update an event

> **PUT** `https://api.us.nylas.com/v3/grants/{grant_id}/events/{event_id}`

Source: https://developer.nylas.com/docs/reference/api/events/put-events-id/

Updates the specified event, conference, or metadata.

When you make a `PUT` request, Nylas replaces all data in the nested object with the information
included in your request. For more information, see
[Updating objects](/docs/reference/api/#updating-objects).

### Limitations

Nylas handles updating and deleting events similarly to other endpoints, with the following
restrictions:

- You can't update events where `read_only` is `true`.
- You can't update events where the parent calendar's `read_only` field is `true`.

**Authentication:** NYLAS_API_KEY, ACCESS_TOKEN

## Parameters

### Query parameters

| Name | Type | Required | Description |
|------|------|----------|-------------|
| `calendar_id` | string | Yes | The calendar ID of the event.  For Microsoft, we do not validate whether the given calendar ID matches the real calendar ID of the event. This is due to a limitation of the Microsoft Graph API.  (Not supported for iCloud) You can use `primary` to query the user's primary calendar. |
| `select` | string | No | Specify fields that you want Nylas to return, as a comma-separated list (for example, `select=id,updated_at`). This allows you to receive only the portion of object data that you're interested in. You can use `select` to optimize response size and reduce latency by limiting queries to only the information that you need. |
| `notify_participants` | boolean | No | Filter for events matching the specified `notify_participants` setting.  Microsoft and iCloud do _not_ support `notify_participants=false`. |
| `tentative_as_busy` | boolean | No | (Microsoft and EWS only) When `true`, Nylas treats tentative events as busy. |

### Path parameters

| Name | Type | Required | Description |
|------|------|----------|-------------|
| `grant_id` | string | Yes | ID of the grant to access. You can also use the email address associated with the grant, or use `/me/` to refer to the grant associated with an access token. |
| `event_id` | string | Yes | ID of the event to access. Nylas recommends you URL-encode this field, or you might receive a [`404` error](/docs/api/errors/400-response/) if the ID contains special characters (for example, `#`). |

## Request body

Content-Type: application/json

- `busy` (boolean,null) - When `true`, shows the event's time block as "busy" on shared or public calendars. This might be
called "transparency" in some systems. This field may be `null` if not explicitly set. Treat `null`
the same as `true` (the default behavior).
- `capacity` (integer) - The maximum number of participants that can attend the event.
- `conferencing` (object) - An object that lets you automatically create a conference, or enter conferencing details manually.

You can't use `autocreate` and `details` in the same request. If you do, Nylas returns an error.

Nylas stores conference information in the event description. To remove conference details, set
`conferencing` to `{}` and remove the corresponding conference information from the description in
the same request.
  - **Auto-conferencing**
    - `provider` (string) - The conferencing provider that Nylas uses to create the conference.
    - `autocreate` (object) - When you include `autocreate` in your request, Nylas automatically creates conferencing
details for the event.

If you specify a conferencing provider that isn't available to your user's account, you need
to include the `conf_grant_id` that belongs to a provider with the supported conference type.
For example, if you specify the `provider` is `Google Meet` and the user authenticated with
a Microsoft account, you need to define the `conf_grant_id`. If the `provider` is
`Zoom Meeting`, you always need to specify a `conf_grant_id`.

When you specify a `conf_grant_id`, the user that belongs to the specified grant ID acts as
a conference host. They need to join the conference at the scheduled time and admit other
participants during the meeting.

If the `provider` is `Zoom Meeting`, your Zoom OAuth app must include the following
[granular scopes](https://developers.zoom.us/docs/integrations/oauth-scopes-granular/)
for Nylas to manage meetings on behalf of the user:

- `meeting:write:meeting` — required to **create** Zoom meetings.
- `meeting:update:meeting` — required to **update** Zoom meetings (for example, when event time or title changes).
- `meeting:delete:meeting` — required to **delete** Zoom meetings (when events are removed).

If any of these scopes are missing, the Zoom API rejects the request. After adding scopes
to your Zoom app, affected users must re-authenticate their grant so their access tokens
include the new scopes.

If the `provider` is `Zoom Meeting`, you can include the `conf_settings` object in your
request. It contains a `settings` property where you can pass parameters from
[Zoom's Create a Meeting API](https://developers.zoom.us/docs/api/rest/reference/zoom-api/methods/#operation/meetingCreate).
These settings make your Zoom integration more accessible, but potentially less secure. We
recommend you review your organization's security requirements.

You can include other provider settings in `autocreate.settings`, but Nylas does _not_
validate them.
  - **Google Meet**
    - `provider` (string) - The conferencing provider for the event.
    - `details` (object) - An object that contains Google Meet conferencing details.
      - `url` (string) **(required)** - The URL for the Google Meet conference.
      - `phone` (array) - The phone number associated with the Google Meet conference. This array accepts only
one phone number.
      - `pin` (string) - The PIN associated with the Google Meet conference, if applicable.
  - **Zoom Meeting**
    - `provider` (string) - The conferencing provider for the event.
    - `details` (object) - An object that contains Zoom conferencing details.
      - `url` (string) **(required)** - The URL for the Zoom conference.
      - `meeting_code` (string,null) - A unique ID associated with the Zoom conference.
      - `password` (string,null) - The password for the Zoom conference, if applicable.
  - **Microsoft Teams**
    - `provider` (string) - The conferencing provider for the event.
    - `details` (object) - An object that contains Microsoft Teams conferencing details.
      - `url` (string) **(required)** - The URL for the Microsoft Teams conference.
  - **Teams for Business**
    - `provider` (string) - The conferencing provider for the event.
    - `details` (object) - An object that contains Microsoft Teams for Enterprise conferencing details.
      - `url` (string) **(required)** - The URL for the Microsoft Teams for Enterprise conference.
  - **Skype for Consumer**
    - `provider` (string) - The conferencing provider for the event.
    - `details` (object) - An object that contains Skype for Consumer conferencing details.
      - `url` (string) **(required)** - The URL for the Skype for Consumer conference.
  - **Skype for Business**
    - `provider` (string) - The conferencing provider for the event.
    - `details` (object) - An object that contains Skype for Business conferencing details.
      - `url` (string) **(required)** - The URL for the Skype for Business conference.
  - **WebEx**
    - `provider` (string) - The conferencing provider for the event.
    - `details` (object) - An object that contains WebEx conferencing details.
      - `url` (string) **(required)** - The URL for the WebEx conference.
      - `password` (string) - The password for the WebEx conference, if applicable.
      - `pin` (string) - The PIN for the WebEx conference, if applicable.
      - `phone` (array) - The phone number associated with the WebEx conference.
  - **GoToMeeting**
    - `provider` (string) - The conferencing provider for the event.
    - `details` (object) - An object that contains GoToMeeting conferencing details.
      - `url` (string) **(required)** - The URL for the GoToMeeting conference.
      - `meeting_code` (string) - A unique ID associated with the GoToMeeting conference.
      - `password` (string) - The password for the GoToMeeting conference, if applicable.
      - `phone` (array) - The phone number associated with the GoToMeeting conference.
- `description` (string) - A brief description of the event (for example, its agenda). Nylas might return the description as
an HTML string, depending on how the provider formats it.

For Google accounts, this field accepts a maximum of 8,192 characters.
- `hide_participants` (boolean) - When `true`, hides the event's list of participants.
- `location` (string) - The location of the event (for example, a physical address or the name of a meeting room).
- `metadata` (object) - The metadata associated with the object. For more information, see
[Metadata](/docs/reference/api/#metadata).
- `notetaker` (object)
  - `id` (string) - The Notetaker bot ID. Read-only; returned in responses but not required in create or update requests.
  - `meeting_settings` (object) - A collection of settings for the Notetaker bot.
    - `action_items` (boolean) - When `true`, Notetaker generates a list of action items from the meeting. If `action_items` is
`true`, `video_recording`, `audio_recording`, and `transcription` must also be `true`.
    - `action_items_settings` (object)
      - `custom_instructions` (string) - A custom prompt to pass to Nylas' AI model and specify settings for the list of action items
it generates. `action_items` must be `true` to use this field.
    - `audio_recording` (boolean) - When `true`, Notetaker records the meeting's audio.
    - `leave_after_silence_seconds` (integer) - The number of seconds of silence after which the Notetaker bot automatically leaves
the meeting. This helps end recordings when meetings have concluded but participants
haven't disconnected the call. Must be between 10 and 3600 seconds (1 hour).
    - `summary` (boolean) - When `true`, Notetaker generates a summary of the meeting. If `summary` is `true`,
`video_recording`, `audio_recording`, and `transcription` must also be `true`.
    - `summary_settings` (object)
      - `custom_instructions` (string) - A custom prompt to pass to Nylas' AI model and specify settings for the summary it generates.
`summary` must be `true` to use this field.
    - `transcription` (boolean) - When `true`, Notetaker transcribes the meeting's audio. If `transcription` is `true`,
`video_recording` and `audio_recording` must also be `true`.
    - `video_recording` (boolean) - When `true`, Notetaker records the meeting's video.
    - `transcription_settings` (object) - Optional settings that tune how Notetaker transcribes audio. `transcription` must be
`true` for these settings to take effect. Provide any combination of the fields below.

The fields fall into two independent groups:

- **Language hints** (`expected_languages`, `fallback_language`) constrain automatic
  language detection. This declares the languages you expect; it does not translate
  transcripts or force the recording into a specific language.
- **Keyword hints** (`keywords`, `use_speaker_names_as_keywords`) bias recognition toward
  domain-specific terms such as names, acronyms, and product names.

Set on individual Notetakers, on calendar sync, or on event sync. When set on a calendar,
events inherit the value unless the event's own request overrides it. Send `null` or `{}`
to clear inherited settings and return to default transcription behavior.

See [Set transcription languages](/docs/v3/notetaker/#set-transcription-languages) for
supported language codes and validation rules.
      - `expected_languages` (array) - Language codes the audio is expected to contain. Optional. When provided, it must
contain at least one supported code and cannot be `null` or empty. When omitted,
transcription considers all supported languages.
      - `fallback_language` (string) - Language to use if Notetaker does not detect one of the `expected_languages`. Optional.
When `expected_languages` is set, the fallback must be one of those codes. When
`expected_languages` is omitted, transcription considers all supported languages and
the fallback may be any supported code. When `fallback_language` is omitted, the
transcriber auto-detects the language. The field is not stored, so responses do not
return it.
      - `keywords` (array) - Domain-specific terms that bias transcription toward recognizing them correctly, such
as names, acronyms, and product names. Optional. Up to 200 terms; each term must be
1 to 200 characters and cannot contain control characters. Cannot be `null`.
      - `use_speaker_names_as_keywords` (boolean) - When `true`, Notetaker adds known speaker names to the keyword set so they are
transcribed accurately. Optional. Cannot be `null`.
  - `name` (string) - The display name for the Notetaker bot.
- `participants` (array)
  - `comment` (string) - A note or comment about the participant (for example, their nickname). If the participant's email address is missing, this field is also missing.
  - `email` (string) **(required)** - The participant's email address.
For Microsoft Graph, this field can be missing.
  - `name` (string) - The participant's full name.
  - `phone_number` (string) - The participant's phone number. If the participant's email address is missing, this field is also missing.
- `resources` (array)
  - `email` (string) **(required)** - The resource's email address.
  - `name` (string) - The resource's full name.
- `recurrence` (array) - An array of `RRULE` and `EXDATE` strings. Nylas includes this field only if the event is the main
(master) event. See [RFC-5545](https://tools.ietf.org/html/rfc5545#section-3.8.5) for more details.
You can use [this tool](https://jkbrzt.github.io/rrule/) to learn more about the `RRULE` spec.

Events inherit their timezone from the `when` object. Nylas recommends that you use the `when`
object to specify the event's start and end time.

Provider specifics:
- On some providers, `EXDATE` might not include exception or cancelled event timestamps. When this
happens, Nylas represents those event instances as separate objects in its responses.
- Virtual calendars don't support `DTSTART` or `TZID`.
- iCloud accounts do _not_ support changing an event from recurring to non-recurring. You can create,
update, or delete information on recurring events.
- Microsoft Graph adds one day to the `UNTIL` date.
- `reminders` (object) - A list of reminders to send for the event. If left empty or omitted, the event uses the provider defaults.
  - `use_default` (boolean) - When `true`, the event uses the calendar's default reminder settings.

- **Google**: Generates a `popup`-style reminder 10 minutes before the event begins.
- **Microsoft**: Generates a reminder 15 minutes before the event begins.
- **iCloud**: Does not generate a reminder.
- **EWS**: Generates a `display`-style reminder 15 minutes before the event begins.
  - `overrides` (array) - A list of reminders for the event to use when `use_default` is `false`. If this field is empty
or omitted, and `use_default` is `false`, the event does not send reminders. If `true`, Nylas
generates both the default event reminder and any reminders in the `overrides` list.

You cannot set reminder overrides if `use_default` is `true`.

For Microsoft Graph, EWS, and iCloud, you can set only one reminder per event.
    - `reminder_minutes` (integer) - The number of minutes before the event start time when a user wants to receive a reminder for this event.
    - `reminder_method` (string) - (Google and iCloud only) The method used to notify the user about the event, with separate
options and default settings for each provider.

- **Google**:
  - Default: `popup`
  - Options: `popup`, `email`
- **iCloud**:
  - Default: `display`
  - Options: `display`, `sound`
- `title` (string) - The name of the event.
- `visibility` (string,null) - (Not supported for iCloud events) Specifies whether the event is `public` or `private`. If not
defined, Nylas uses the account's default provider settings. For Google and Microsoft, event visibility is `public` by default.

For virtual calendar events, you can explicitly set `visibility` to `private` or `public` on create and update requests. If not set, virtual calendar events default to `public` behavior.
- `when` (object) **(required)** - An object that represents the time and duration of an event.

You can format `when` as one of four sub-objects: `time`, `timespan`, `date`, or `datespan`. These
sub-objects allow you to capture and represent specific points in time.

`time` and `timespan` objects include optional timezone support.
  - **Time**
    - `time` (integer) - The time that the meeting occurs, in seconds using the Unix timestamp format.
    - `timezone` (string) - The timezone of the event as an
[IANA-formatted](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones) string. If
populated, Nylas reads the value of `time` with the provided timezone.
  - **Timespan**
    - `start_time` (integer) - The event's start time, in seconds using the Unix timestamp format.
    - `end_time` (integer) - The event's end time, in seconds using the Unix timestamp format.
    - `start_timezone` (string,null) - The timezone of the event's `start_time` as an
[IANA-formatted](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones) string.

If you define `start_timezone` in your request, you must also define `end_timezone`.
    - `end_timezone` (string,null) - The timezone of the event's `end_time` as an
[IANA-formatted](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones) string.

If you define `end_timezone` in your request, you must also define `start_timezone`.
  - **Date**
    - `date` (string) - The date of the event, in [ISO 8601 format](https://en.wikipedia.org/wiki/ISO_8601#Calendar_dates).
  - **Datespan**
    - `start_date` (string) - The event's start date, in [ISO 8601 format](https://en.wikipedia.org/wiki/ISO_8601#Calendar_dates).
    - `end_date` (string) - The event's end date (inclusive), in [ISO 8601 format](https://en.wikipedia.org/wiki/ISO_8601#Calendar_dates).

## Responses

### 200 - Event Response

- `request_id` (string) - The request ID.
- `data` (object)
  - `busy` (boolean) - If `true`, shows the event's time block as `busy` on shared or public calendars. This may be
called "transparency" in some systems.
  - `calendar_id` (string,null) - The calendar ID associated with the event. If you used the `calendar_id=primary` query parameter in
your request, Nylas returns the real calendar ID instead of `primary`.

For Microsoft calendars, there are some cases where the event Nylas returns isn't associated with
a calendar ID. This happens most often when the event is created in a shared calendar.

This field may be `null` for certain event types (for example, virtual calendar events).
  - `conferencing` (object) - An object that contains event conferencing details. Nylas appends the conference information to the
Event `description`.
    - `provider` (string)
    - **Auto-conferencing**
      - `autocreate` (object) - The autocreate settings you specified for the meeting, plus the details created by the
conferencing provider. The autocreated conference details are also appended to the Event
description.
    - **Google Meet**
      - `details` (object) - An object that contains Google Meet conferencing details.
        - `url` (string) - The URL for the Google Meet conference.
        - `phone` (array) - The phone number associated with the Google Meet conference.
        - `pin` (string) - The PIN associated with the Google Meet conference, if applicable.
    - **Zoom Meeting**
      - `details` (object) - An object that contains Zoom conferencing details.
        - `url` (string) - The URL for the Zoom conference.
        - `meeting_code` (string) - A unique ID associated with the Zoom conference.
        - `password` (string) - The password for the Zoom conference, if applicable.
    - **Microsoft Teams**
      - `details` (object) - An object that contains Microsoft Teams conferencing details.
        - `url` (string) - The URL for the Microsoft Teams conference.
    - **WebEx**
      - `details` (object) - An object that contains WebEx conferencing details.
        - `url` (string) - The URL for the WebEx conference.
        - `password` (string) - The password for the WebEx conference, if applicable.
        - `pin` (string) - The PIN for the WebEx conference, if applicable.
        - `phone` (array) - The phone number associated with the WebEx conference.
    - **GoToMeeting**
      - `details` (object) - An object that contains GoToMeeting conferencing details.
        - `url` (string) - The URL for the GoToMeeting conference.
        - `meeting_code` (string) - A unique ID associated with the GoToMeeting conference.
        - `password` (string) - The password for the GoToMeeting conference, if applicable.
        - `phone` (array) - The phone number associated with the GoToMeeting conference.
  - `created_at` (integer,null) - When the event was created, in seconds using the Unix timestamp format.
  - `description` (string,null) - A brief description of the event (for example, its agenda). The description might be returned
as an HTML string, depending on how the provider formats it.
For Google accounts, this field accepts a maximum of 8,192 characters.
  - `text_description` (string,null) - A brief text description of the event (for example, its agenda). If the description is HTML-formatted,
this field will contain the text version of the description.
  - `hide_participants` (boolean) - (Not supported for iCloud or EWS events) When `true`, hides the event's list of participants.
  - `grant_id` (string) - The ID of grant for the connected user.
  - `html_link` (string) - (Not supported for EWS events) A link to the event on the provider.
  - `ical_uid` (string,null) - A unique ID that you can use to identify events across calendaring systems, in
[iCalendar format](https://datatracker.ietf.org/doc/html/rfc5545#section-3.8.4.7).
Recurring events might share the same ID.

Can be `null` for events synced before the year 2020.
  - `id` (string) - The ID of the event. Event IDs are usually unique to each user, except for Google which maintains the same event ID for an event regardless of the user querying it.
  - `location` (string,null) - The location of the event (for example, a physical address or the name of a meeting room).
  - `master_event_id` (string,null) - If the event is an instance of a recurring event series, this field lists the ID of the parent
event. If the parent event belongs to a different calendar that you don't have access to, or it's
been deleted or cancelled, you can't retrieve it using this ID.
  - `metadata` (object) - The metadata associated with the object. For more information, see
[Metadata](/docs/reference/api/#metadata).
  - `object` (string) - The type of object.
  - `organizer` (object) - An object that contains information about an event's organizer.
    - `name` (string) - The organizer's full name.
    - `email` (string) - The organizer's email address. 

For an event in a Google calendar, Nylas returns the `email` based on the calender type.
- For a primary calendar, `email` is the same as the `calendar_id`.
- For a non-primary calendar, `email` is set to the actual ID of the calendar.
  - `participants` (array) - An array of participants invited to the event. The organizer doesn't need to be explicitly
included in this list.
    - `comment` (string) - A note or comment about the participant (for example, their nickname).
    - `email` (string) - The participant's email address. For Microsoft Graph, this field can be missing.
    - `name` (string) - The participant's name.
    - `phone_number` (string) - The participant's phone number.
    - `status` (string) - The participant's RSVP status.
  - `resources` (array) - An array of room resource bookings added to the event.
    - `email` (string) **(required)** - The resource's email address.
    - `name` (string) - The resource's full name.
  - `read_only` (boolean) - If `true`, indicates that the event is read-only. The provider sets the `read_only` value based on
the connected calendar, and you can't modify it.

In cases where you _can_ update this field on a cloned event (for example, an event imported to your
calendar from an email invitation), `read_only` is `true`.

If the calendar is read-only, all events on the calendar have `read_only` set to `true`.
  - `reminders` (object) - A list of reminders to generate for the event. If not defined, Nylas uses the provider's default
settings.
    - `use_default` (boolean,null) - When `true`, the event uses the calendar's default reminder settings.
This field may be `null` if reminders are not explicitly configured.

- **Google**: Generates a `popup`-style reminder 10 minutes before the event begins.
- **Microsoft**: Generates a reminder 15 minutes before the event begins.
- **iCloud**: Does not generate a reminder.
- **EWS**: Generates a `display`-style reminder 15 minutes before the event begins.
    - `overrides` (array,null) - A list of reminders for the event to use when `use_default` is `false`. If this field is empty
or omitted, and `use_default` is `false`, the event does not send reminders. If `true`, Nylas
generates both the default event reminder and any reminders in the `overrides` list.

You cannot set reminder overrides if `use_default` is `true`.

For Microsoft Graph, EWS, and iCloud, you can set only one reminder per event.

This field may be `null` if no reminder overrides have been set. Treat `null` the same as an
empty array.
  - `recurrence` (array) - An array of `RRULE` and `EXDATE` strings. Nylas includes this field only if the event is the main
(master) event. See [RFC-5545](https://tools.ietf.org/html/rfc5545#section-3.8.5) for more details.
You can use [this tool](https://jkbrzt.github.io/rrule/) to learn more about the `RRULE` spec.

Events inherit their timezone from the `when` object. Nylas recommends that you use the `when`
object to specify the event's start and end time.

Provider specifics:
- On some providers, `EXDATE` might not include exception or cancelled event timestamps. When this
happens, Nylas represents those event instances as separate objects in its responses.
- Virtual calendars don't support `DTSTART` or `TZID`.
- iCloud accounts do _not_ support changing an event from recurring to non-recurring. You can create,
update, or delete information on recurring events.
- Microsoft Graph adds one day to the `UNTIL` date.
  - `status` (string) - (Not supported for iCloud) The status of the event. You can't set this field when creating or updating
an event. If you're the organizer of the event and you want to reply "maybe" or "no" to the
invitation, use the
[Send RSVP endpoint](/docs/reference/api/events/send-rsvp/)
instead.

For Google events, a `cancelled` status indicates that the event was an occurrence of a recurring
event, and that the occurrence has been cancelled by the event organizer.

For Microsoft and EWS events, a `cancelled` status indicates that the event was organized by someone
else, and the organizer cancelled or deleted the event.
  - `title` (string) - The name of the event.
  - `updated_at` (integer,null) - When the event was last updated, in seconds using the Unix timestamp format.
  - `visibility` (string,null) - (Not supported for iCloud events) Specifies whether the event is `public` or `private`. If not
defined, Nylas uses the account's default provider settings. For Google and Microsoft, event visibility is `public` by default.

For virtual calendar events, you can explicitly set `visibility` to `private` or `public` on create and update requests. If not set, virtual calendar events default to `public` behavior.
  - `when` (object,null) - An object that represents the time and duration of an event. Nylas might format `when` as one of three
sub-objects: `timespan`, `date`, or `datespan`. These sub-objects allow Nylas to capture and represent
specific points in time.

`timespan` objects include optional timezone support.

This field may be `null` when event timing data is unavailable (for example, when using field selection
that excludes the underlying time fields).
  - `original_start_time` (integer) - (Not supported for virtual calendars) The original start time of the event, in seconds using the Unix timestamp
format. This field is present only if the event is an instance of a recurring event.
  - `notetaker` (object)
    - `id` (string) - The Notetaker bot ID. Read-only; returned in responses but not required in create or update requests.
    - `meeting_settings` (object) - A collection of settings for the Notetaker bot.
      - `action_items` (boolean) - When `true`, Notetaker generates a list of action items from the meeting. If `action_items` is
`true`, `video_recording`, `audio_recording`, and `transcription` must also be `true`.
      - `action_items_settings` (object)
        - `custom_instructions` (string) - A custom prompt to pass to Nylas' AI model and specify settings for the list of action items
it generates. `action_items` must be `true` to use this field.
      - `audio_recording` (boolean) - When `true`, Notetaker records the meeting's audio.
      - `leave_after_silence_seconds` (integer) - The number of seconds of silence after which the Notetaker bot automatically leaves
the meeting. This helps end recordings when meetings have concluded but participants
haven't disconnected the call. Must be between 10 and 3600 seconds (1 hour).
      - `summary` (boolean) - When `true`, Notetaker generates a summary of the meeting. If `summary` is `true`,
`video_recording`, `audio_recording`, and `transcription` must also be `true`.
      - `summary_settings` (object)
        - `custom_instructions` (string) - A custom prompt to pass to Nylas' AI model and specify settings for the summary it generates.
`summary` must be `true` to use this field.
      - `transcription` (boolean) - When `true`, Notetaker transcribes the meeting's audio. If `transcription` is `true`,
`video_recording` and `audio_recording` must also be `true`.
      - `video_recording` (boolean) - When `true`, Notetaker records the meeting's video.
      - `transcription_settings` (object) - Optional settings that tune how Notetaker transcribes audio. `transcription` must be
`true` for these settings to take effect. Provide any combination of the fields below.

The fields fall into two independent groups:

- **Language hints** (`expected_languages`, `fallback_language`) constrain automatic
  language detection. This declares the languages you expect; it does not translate
  transcripts or force the recording into a specific language.
- **Keyword hints** (`keywords`, `use_speaker_names_as_keywords`) bias recognition toward
  domain-specific terms such as names, acronyms, and product names.

Set on individual Notetakers, on calendar sync, or on event sync. When set on a calendar,
events inherit the value unless the event's own request overrides it. Send `null` or `{}`
to clear inherited settings and return to default transcription behavior.

See [Set transcription languages](/docs/v3/notetaker/#set-transcription-languages) for
supported language codes and validation rules.
        - `expected_languages` (array) - Language codes the audio is expected to contain. Optional. When provided, it must
contain at least one supported code and cannot be `null` or empty. When omitted,
transcription considers all supported languages.
        - `fallback_language` (string) - Language to use if Notetaker does not detect one of the `expected_languages`. Optional.
When `expected_languages` is set, the fallback must be one of those codes. When
`expected_languages` is omitted, transcription considers all supported languages and
the fallback may be any supported code. When `fallback_language` is omitted, the
transcriber auto-detects the language. The field is not stored, so responses do not
return it.
        - `keywords` (array) - Domain-specific terms that bias transcription toward recognizing them correctly, such
as names, acronyms, and product names. Optional. Up to 200 terms; each term must be
1 to 200 characters and cannot contain control characters. Cannot be `null`.
        - `use_speaker_names_as_keywords` (boolean) - When `true`, Notetaker adds known speaker names to the keyword set so they are
transcribed accurately. Optional. Cannot be `null`.
    - `name` (string) - The display name for the Notetaker bot.

### 400 - Bad Request

- `request_id` (string) - The request ID.
- `error` (object) - The response error object.
  - `type` (string) - The error type.
  - `message` (string) - The error message.
  - `provider_error` (object) - The error from the provider.

### 401 - Unauthorized

- `request_id` (string) - The request ID.
- `error` (object) - The response error object.
  - `type` (string) - The error type.
  - `message` (string) - The error message.
  - `provider_error` (object) - The error from the provider.

### 404 - Not Found

- `request_id` (string) - The request ID.
- `error` (object) - The response error object.
  - `type` (string) - The error type.
  - `message` (string) - The error message.
  - `provider_error` (object) - The raw error from the provider, if available
    - `code` (string)
    - `message` (string)

### 429 - Rate Limit

- `request_id` (string) - The request ID.
- `error` (object) - The response error object.
  - `type` (string) - The error type.
  - `message` (string) - The error message.

### 504 - Provider Failure

- `request_id` (string) - The request ID.
- `error` (object) - The response error object.
  - `type` (string) - The error type.
  - `message` (string) - The error message.

## Code samples

### cURL

```bash
curl --compressed --request PUT \
  --url 'https://api.us.nylas.com/v3/grants/<NYLAS_GRANT_ID>/events/<EVENT_ID>?calendar_id=<CALENDAR_ID>' \
  --header 'Accept: application/json' \
  --header 'Authorization: Bearer <NYLAS_API_KEY>' \
  --header 'Content-Type: application/json' \
  --data '{
    "title": "Birthday Party",
    "busy": true,
    "participants": [{
      "name": "Leyah Miller",
      "email": "leyah@example.com",
      "comment": "Might be late."
    }],
    "resources": [{
      "name": "Conference room",
      "email": "conference-room@example.com"
    }],
    "description": "Come ready to skate",
    "when": {
      "start_time": 1406887200,
      "end_time": 1417435200,
      "start_timezone": "America/New_York",
      "end_timezone": "America/New_York"
    },
    "location": "Roller Rink",
    "recurrence": [
      "RRULE:FREQ=WEEKLY;BYDAY=MO",
      "EXDATE:20211011T000000Z"
    ],
    "conferencing": {
        "provider": "Zoom Meeting",
        "autocreate": {
          "conf_grant_id": "<NYLAS_GRANT_ID>",
          "conf_settings": {
            "settings": {
              "join_before_host": true,
              "waiting_room": false,
              "mute_upon_entry": false,
              "auto_recording": "none"
            }
          }
        }
      },
    "reminder_minutes": "[20]",
    "reminder_method": "popup"
}'
```

### cURL (manual conferencing)

```bash
curl --compressed --request PUT \
  --url 'https://api.us.nylas.com/v3/grants/<NYLAS_GRANT_ID>/events/<EVENT_ID>?calendar_id=<CALENDAR_ID>' \
  --header 'Accept: application/json' \
  --header 'Authorization: Bearer <NYLAS_API_KEY>' \
  --header 'Content-Type: application/json' \
  --data '{
    "conferencing": {
      "provider": "Google Meet",
      "details": {
        "url": "https://meet.google.com/***-****-***",
        "pin": "xyz",
        "phone": ["+1 234 555 6789"]
      }
    }
}'

```

### Node.js SDK

```javascript
import Nylas from "nylas";

const nylas = new Nylas({
  apiKey: "<NYLAS_API_KEY>",
  apiUri: "<NYLAS_API_URI>",
});

async function addParticipantToAndEvent() {
  try {
    const event = await nylas.events.update({
      identifier: "<NYLAS_GRANT_ID>",
      eventId: "<EVENT_ID>",
      requestBody: {
        participants: [
          {
            name: "Nylas DevRel",
            email: "devrel-@-nylas.com",
          },
        ],
      },
      queryParams: {
        calendarId: "<CALENDAR_ID>",
      },
    });
  } catch (error) {
    console.error("Error adding participant to event:", error);
  }
}

addParticipantToAndEvent();

```

### Python SDK

```python
from nylas import Client

nylas = Client(
    "<NYLAS_API_KEY>",
    "<NYLAS_API_URI>"
)

grant_id = "<NYLAS_GRANT_ID>"
event_id = "<EVENT_ID>"

event = nylas.events.update(
    grant_id,
    event_id,
    request_body={
      "participants": [{
        "name": "Nylas DevRel",
        "email": "devrel-@-nylas.com"
      }]
    },
    query_params={
      "calendar_id": "<CALENDAR_ID>"
    }
)

print(event)
```

### Ruby SDK

```ruby
require 'nylas'

nylas = Nylas::Client.new(api_key: "<NYLAS_API_KEY>")

request_body = {
	location: "Nylas' Theatre",
}

query_params = {
	calendar_id: "<CALENDAR_ID>"
}

events, _request_ids = nylas.events.update(
		identifier: "<NYLAS_GRANT_ID>", 
		event_id: "<EVENT_ID>", 
		query_params: query_params,
		request_body: request_body)

```

### Java SDK

```java
import com.nylas.NylasClient;
import com.nylas.models.*;

public class update_calendar_events {
  public static void main(String[] args) throws NylasSdkTimeoutError, NylasApiError {
    NylasClient nylas = new NylasClient.Builder("<NYLAS_API_KEY>").build();
    UpdateEventQueryParams params = new UpdateEventQueryParams("<CALENDAR_ID>", Boolean.FALSE);
    UpdateEventRequest requestBody = new UpdateEventRequest.Builder().location("Nylas' Theatre'").build();

    Response<Event> event = nylas.events().update(
      "<NYLAS_GRANT_ID>",
      "<EVENT_ID>",
      requestBody,
      params);
  }
}
```

### Kotlin SDK

```kotlin
import com.nylas.NylasClient
import com.nylas.models.*

fun main(args: Array<String>) {
  val nylas: NylasClient = NylasClient(apiKey = "<NYLAS_API_KEY>")
  val queryParams = UpdateEventQueryParams("<CALENDAR_ID>", false)

  val requestBody : UpdateEventRequest = UpdateEventRequest.Builder().
      location("Nylas' Theatre").
      build()

  val response : Response<Event> = nylas.events().update(
      "<NYLAS_GRANT_ID>",
      "<EVENT_ID>",
      requestBody,
      queryParams)
}
```
