> ## Documentation Index
> Fetch the complete documentation index at: https://docs.gomry.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Update Event

> Partially update an event in your organization

# Update Event

Partially updates an event. Only the fields supplied in the body are
written — omitted fields are left unchanged. The event must belong to
the organization associated with the API key; cross-org requests return
`404 Not Found` with no information leak.

Requires the `events:write` scope.

## Path Parameters

<ParamField path="event_id" type="string" required>
  Event ID (the canonical 20-character document ID, e.g.
  `AbCdEfGhIjKlMnOpQrSt`).
</ParamField>

## Request Body

At least one field is required. Unknown fields are rejected with `400`.

<ParamField body="name" type="string">
  Event name (1–200 chars). Triggers a taxonomy + search-relevance
  re-index in the background.
</ParamField>

<ParamField body="description" type="string">
  Long-form description shown on the event page. Triggers a re-index.
</ParamField>

<ParamField body="start" type="object">
  <Expandable>
    <ParamField body="utc" type="string" required>ISO-8601 datetime or a local `YYYY-MM-DDTHH:mm` string interpreted in `timezone`.</ParamField>
    <ParamField body="timezone" type="string" required>IANA timezone (e.g. `America/New_York`).</ParamField>
  </Expandable>
</ParamField>

<ParamField body="end" type="object | null">
  Same shape as `start`. Pass `null` to clear the end time (open-ended
  event). When both `start` and `end` are present, `end` must be strictly
  after `start` and the timezones must match.
</ParamField>

<ParamField body="venue" type="object">
  Replace any of the venue fields. Existing venue fields not present in
  the patch are NOT preserved — the full object you supply is what gets
  written, so include every field you want to keep.

  <Expandable>
    <ParamField body="name" type="string" />

    <ParamField body="address" type="string" />

    <ParamField body="city" type="string" />

    <ParamField body="state" type="string" />

    <ParamField body="country" type="string" />

    <ParamField body="latitude" type="number" />

    <ParamField body="longitude" type="number" />

    <ParamField body="instructions" type="string" />

    <ParamField body="place_id" type="string" />
  </Expandable>
</ParamField>

<ParamField body="location" type="string">
  Convenience — a `https://...` URL is stored as the virtual meeting
  link, anything else is stored as `venue.address`. If you need finer
  control over venue fields, use `venue` instead.
</ParamField>

<ParamField body="capacity" type="integer">
  Maximum number of tickets that can be sold. `0` means unlimited.
</ParamField>

<ParamField body="currency" type="string">
  ISO-4217 currency code.
</ParamField>

<ParamField body="is_private" type="boolean">
  Hide the event from public listings.
</ParamField>

<ParamField body="tax_inclusive" type="boolean">
  Whether ticket prices are tax-inclusive.
</ParamField>

<ParamField body="rsvp_enabled" type="boolean">
  Allow attendees to RSVP (maybe / not going) in addition to confirming.
</ParamField>

<ParamField body="cover_img" type="string">
  Public URL of the cover image.
</ParamField>

<ParamField body="registration_status" type="enum">
  `open` or `closed`. When `closed`, the public registration form is
  hidden and new bookings are rejected. Existing attendees are unaffected.
</ParamField>

<ParamField body="required_contact_method" type="enum">
  `none`, `email`, or `email_and_phone`. Controls what an attendee must
  provide on the registration form.
</ParamField>

<ParamField body="remove_service_fees" type="boolean">
  Absorb service fees into the ticket price rather than adding them at
  checkout.
</ParamField>

<ParamField body="submission_restricted" type="object">
  Restrict registrations to specific contact lists.

  <Expandable>
    <ParamField body="status" type="enum" required>`active` or `inactive`.</ParamField>
    <ParamField body="lists_authorized" type="array<string>">Allowed list IDs.</ParamField>
    <ParamField body="custom_message_not_authorized" type="string">Message shown when registration is rejected.</ParamField>
  </Expandable>
</ParamField>

## Response

Returns the updated event as serialized by `GET /events/{event_id}`.

<RequestExample>
  ```bash cURL theme={null}
  curl -X PATCH \
    -H "X-API-KEY: your_api_key" \
    -H "Content-Type: application/json" \
    -d '{
      "name": "Summer Launch Party — Updated",
      "capacity": 500,
      "registration_status": "open"
    }' \
    "https://www.gomry.com/api/v1/events/AbCdEfGhIjKlMnOpQrSt"
  ```
</RequestExample>

<ResponseExample>
  ```json 200 theme={null}
  {
    "data": {
      "id": "AbCdEfGhIjKlMnOpQrSt",
      "name": "Summer Launch Party — Updated",
      "status": "active",
      "registration_status": "open",
      "currency": "usd",
      "capacity": 500,
      "tickets_sold": 12,
      "start": { "utc": "2026-07-15T22:00:00.000Z", "timezone": "America/New_York" },
      "end":   { "utc": "2026-07-16T02:00:00.000Z", "timezone": "America/New_York" },
      "venue": { "name": "Convention Center, New York", "address": "Convention Center, New York" },
      "created_at": "2026-05-24T10:00:00.000Z",
      "updated_at": "2026-05-24T10:15:00.000Z"
    }
  }
  ```

  ```json 400 theme={null}
  {
    "error": "At least one field is required"
  }
  ```

  ```json 400 theme={null}
  {
    "error": "end must be after start"
  }
  ```

  ```json 404 theme={null}
  {
    "error": "Event not found"
  }
  ```

  ```json 403 theme={null}
  {
    "error": "insufficient_scope",
    "message": "This API key does not have 'write' access to 'events'.",
    "required_scope": "events:write"
  }
  ```
</ResponseExample>
