# Editing Events

The Cronofy API treats events that your application creates (Partner Events) differently to events that the user creates in their calendar directly (External Events). You can identify which events are which in the [Read Events](/developers/api/events/read-events/index.md) response.

- Partner Events have an `event_id`.

- External Events have an `event_uid` and do not have an `event_id`.

Much of the rationale for this is to provide a richer, more fit-for-purpose permissions scheme to support a wide variety of use cases. You can read more about this in our [Permissions walkthrough](/developers/authorization/permissions/index.md).

## Using event_id or event_uid
When your application creates an event it defines the `event_id` to use for the event. This creates a Partner Event in the end user's calendar. We use an upsert pattern for event editing so anytime you want to update the event, you just provide the new version and specify the same `event_id`.

```json
{
  "event_id": "qTtZdczOccgaPncGJaCiLg",
  "summary": "Board meeting",
  "description": "Discuss plans for the next quarter.",
  "start": "2026-04-27T15:30:00Z",
  "end": "2026-04-27T17:00:00Z",
  "location": {
    "description": "Board room"
  }
}
```

External events are different. They do not have an `event_id`, they only have an `event_uid`.

```json
{
  "event_uid": "evt_external_64b1801a8090ea21640c9153",
  "summary": "Board meeting",
  "description": "Discuss plans for the next quarter.",
  "start": "2026-04-27T15:30:00Z",
  "end": "2026-04-27T17:00:00Z",
  "location": {
    "description": "Board room"
  }
}
```

Once you've obtained [permission to edit External Events](/developers/authorization/permissions/index.md) you can then update the event by passing the `event_uid` value.

When editing External Events, do not pass an `event_id` value. This will take precedence and will create a new Partner Event, ignoring the `event_uid` value.



---
[Read in HTML](/developers/calendars-events/editing-events/)