# Create or Update Event

#### Description
Requests conferencing details are added to an event. When [creating or updating an event](/developers/api/events/upsert-event/index.md), add the `conferencing` property as specified below. When the `conferencing` property is not specified, we will not make changes to the event's conferencing. Changes to the events summary, start time or end time will be reflected on the conference.

Please note: Conferencing services cannot be added to past events. If the `start` of an event is in the past then conferencing won't be generated during the creation of the event.

#### Example Requests
```http
POST /v1/calendars/cal_n23kjnwrw2_jsdfjksn234/events HTTP/1.1
Host: {data_center_url}
Authorization: Bearer {ACCESS_TOKEN}
Content-Type: application/json; charset=utf-8

{
  "event_id": "qTtZdczOccgaPncGJaCiLg",
  "summary": "Board meeting",
  "description": "Discuss plans for the next quarter.",
  "start": "2026-04-28T15:30:00Z",
  "end": "2026-04-28T17:00:00Z",
  "conferencing": {
    "profile_id": "default"
  }
}
```

```http
POST /v1/calendars/cal_n23kjnwrw2_jsdfjksn234/events HTTP/1.1
Host: {data_center_url}
Authorization: Bearer {ACCESS_TOKEN}
Content-Type: application/json; charset=utf-8

{
  "event_id": "qTtZdczOccgaPncGJaCiLg",
  "summary": "Board meeting",
  "description": "Discuss plans for the next quarter.",
  "start": "2026-04-28T15:30:00Z",
  "end": "2026-04-28T17:00:00Z",
  "conferencing": {
    "profile_id": "explicit",
    "provider_description": "Custom conferencing",
    "join_url": "https://conferencing.example.com/join/xyz"
  }
}
```

> **WARNING:** For the widest compatibility you must leave the event location blank. We will populate this with the primary URL from the conferencing details when the calendar host does not have dedicated conferencing details which can be written to.

#### Parameters
##### `data_center_url` *(required)*

The URL for the data center you want to communicate with. Possible choices are:

- `api-au.cronofy.com` - Australia
- `api-ca.cronofy.com` - Canada
- `api-de.cronofy.com` - Germany
- `api-sg.cronofy.com` - Singapore
- `api-uk.cronofy.com` - United Kingdom
- `api.cronofy.com` - United States

Find out more about [Cronofy's data centers](/developers/data-centers/index.md).
##### `conferencing` *(optional)*

Object describing the desired conferencing details.

##### `conferencing.profile_id` *(required)*

When provided defines the conferencing profile to use when provisioning the conference details.

This should equal one of the built-in values, or, to explicitly select a conferencing profile, a `profile_id` taken from the
account's [Conferencing Profiles](/developers/api/conferencing-services/conferencing-profiles/index.md).

##### Built-in values
- `default` is a special value to ease integration. This has the following preference:</p>
- The default conferencing profile out of those authorized by the user. This will be the first conferencing profile that they have authorized unless the user has explicitly chosen a default.

- The integrated conferencing provider for the destination calendar, if available.
<li>Google Calendars usually offer **Google Meet**

- Microsoft 365 calendars using the [Graph API](/developers/office365-graph/index.md) usually offer **Microsoft Teams**

</li>
- With no other conferencing option available, no conferencing will be provisioned.

</li>
- 
`none` explicitly removes conferencing from an event.

- `explicit` is a special value which allows you to manually specify the conferencing join details. When using `explicit`, you must also specify the `conferencing.provider_description` and `conferencing.join_url` parameters.

- `integrated` is a special value which requests the integrated conferencing service for the destination calendar be used. Both Google Meet is available for most Google Calendars, and Microsoft Teams is supported for Microsoft 365 calendars when connected via the [Graph API](/developers/office365-graph/index.md). Support can be checked by reading the `calendar_integrated_conferencing_available`  value in the [UserInfo API](/developers/api/identity/userinfo/index.md) or [List Calendars API](/developers/api/calendars/list-calendars/index.md).

<p>If you wish to disable integrated conferencing, then:

<li>Disabling **Google Meet** can be done via your Google Workspace settings.

- Disabling **Microsoft Teams** is covered in this [FAQ page](/developers/faqs/conferencing/graph-api-integrated-conferencing/index.md).

> **INFO:** **8x8** was supported as a built-in value but has been deprecated.

This service behind it was terminated by 8x8 but the value is still accepted for compatibility purposes. This will not generate a conference any more though.

##### `conferencing.provider_description`

Required, and only used, when using the `explicit` special `conferencing.profile_id`.

Use this to specify the user-facing name of the conferencing provider. This displays in calendars that have native support for conferencing, for example on the Google Calendar conferencing join button.

##### `conferencing.join_url`

Required, and only used, when using the `explicit` special `conferencing.profile_id`.

Use this to specify the URL to join the conference. This must be an HTTP/HTTPS URI.

#### Example Event With Conferencing Assigned
```json
{
  "event_id": "qTtZdczOccgaPncGJaCiLg",
  "summary": "Board meeting",
  "description": "Discuss plans for the next quarter.",
  "start": "2020-04-11T15:30:00Z",
  "end": "2020-04-11T17:00:00Z",
  "conferencing": {
    "provider_name": "zoom",
    "join_url": "https://zoom.us/00001111-222"
  }
}
```

Conferencing details are added asynchronously. Your application can subscribe to a push notification when this is assigned. See [Conferencing Services Push Notification documentation](/developers/api/conferencing-services/subscriptions/index.md) for more information.

##### Prior to conference generation
The event's `conferencing` value will be set to `{ &quot;pending&quot;: true }`.

For `explicit` conferencing, the pending status will still appear but it can be ignored as this only is relevant for conferencing values that will be generated by Cronofy.

##### After successful conference generation
The `conferencing` value is set to an object containing details of the conference:

- `join_url` - the URL which can be used to join the conference.

- `provider_name` - a value representing the service used. For conferencing `profile_id` values which rely on some resolution, such as `default`, this will represent the service the value resolved to.

Possible `provider_name` values include:

- `8x8`

- `go_to`

- `google_meet` when resolved from the `integrated` option against a Google calendar

- `ms_teams`

- `ms_teams_for_business` when resolved from the `integrated` option against a Microsoft calendar

- `zoom`

This value can also be `null` when `explicit` conferencing is defined.
The list should not be treated as exhaustive, as new services will be added over time.

#### Error Responses
##### 422 Unprocessable

Requesting `integrated` conferencing on a calendar which does not support it will result in the following error response.

This might be because the target calendar is not a Google calendar, or because Google Meet has been administratively disabled on that account in the case of a Google Workspace domain.

```json
{
  "errors": {
    "conferencing.profile_id": [
      {
          "key": "errors.integrated_conferencing_not_available",
          "description": "Integrated conferencing is not available on this calendar"
      }
    ]
  }
}
```



---
[Read in HTML](/developers/api/conferencing-services/create/)