---
title: "Update an event"
method: PUT
path: "/events/{id}"
tags: ["Events"]
---

# Update an event

`PUT /events/{id}`

Updates an existing event. Requires a Pro plan. Supports partial updates - only the fields provided will be changed. Existing tickets, event parts, and recurring configuration are preserved if not explicitly provided.

## Path parameters

- `id` string, required

## Request body

- EventInput
  - `name` string — Event name (required for create)
  - `starts_at` string — Start date and time in UTC (Y-m-d H:i:s format, required for create)
  - `duration` number — Event duration in hours
  - `description` string — Full event description (supports markdown)
  - `short_description` string — Brief event description
  - `event_url` string, uri — External URL for the event
  - `event_password` string — Password to protect the event page
  - `is_private` boolean, nullable — Make event private (hidden from calendar, only accessible via direct link)
  - `registration_url` string, uri — External registration URL
  - `category_id` integer — Category ID from /categories
  - `category` string — Category name (alternative to category_id)
  - `tickets_enabled` boolean — Whether to enable ticket sales
  - `ticket_currency_code` string — 3-letter ISO currency code for tickets
  - `payment_method` 'stripe' | 'invoiceninja' | 'payment_url' | 'manual' — Payment method for ticket sales
  - `payment_instructions` string — Instructions for manual payment
  - `schedule_type` 'single' | 'recurring' — Whether this is a single or recurring event
  - `recurring_frequency` 'daily' | 'weekly' | 'every_n_weeks' | 'monthly_date' | 'monthly_weekday' | 'yearly' — Recurrence frequency (required when schedule_type is recurring)
  - `recurring_interval` integer — Interval for every_n_weeks frequency
  - `recurring_end_type` 'never' | 'on_date' | 'after_events' — How the recurrence should end
  - `recurring_end_value` string — End date (Y-m-d) for on_date, or number of occurrences for after_events
  - `days_of_week` string — 7-character string where each position represents a day (Sunday to Saturday), '1' means the event recurs on that day. Only used with weekly or every_n_weeks frequency.
  - `venue_id` string — Encoded ID of a venue schedule to associate with the event
  - `venue_name` string — Venue name (used to look up an existing venue schedule)
  - `venue_address1` string — Venue address (used together with venue_name to look up an existing venue schedule)
  - `members` object[] — Array of member objects with name and/or email to associate talent schedules with the event
    - `name` string — Member name (used to look up an existing talent schedule)
    - `email` string, email — Member email (used to look up an existing talent schedule)
  - `schedule` string — Sub-schedule slug to assign this event to
  - `tickets` object[] — Ticket types for the event
    - `type` string, required — Ticket type name (e.g. General Admission, VIP)
    - `quantity` integer — Number of tickets available (0 or omit for unlimited)
    - `price` number — Ticket price (0 for free)
    - `description` string — Ticket description
  - `event_parts` object[] — Sub-sections or segments of the event
    - `name` string, required — Part name
    - `description` string — Part description
    - `start_time` string — Start time for this part
    - `end_time` string — End time for this part

## Response `200`

Event updated successfully

- object
  - `data` Event
    - `id` string — Encoded event ID
    - `url` string, uri — Public URL of the event
    - `name` string — Event name
    - `short_description` string, nullable — Brief event description
    - `description` string, nullable — Full event description (may contain markdown)
    - `starts_at` string, date-time — Event start date and time in UTC (Y-m-d H:i:s)
    - `duration` number, nullable — Event duration in hours
    - `category_id` integer, nullable — Category ID from /categories
    - `category_name` string, nullable — Human-readable category name
    - `event_url` string, uri, nullable — External URL for the event
    - `registration_url` string, uri, nullable — External registration URL
    - `venue_id` string, nullable — Encoded ID of the associated venue schedule
    - `venue_name` string, nullable — Name of the associated venue
    - `venue_address1` string, nullable — Street address of the associated venue
    - `venue_subdomain` string, nullable — Subdomain of the associated venue schedule
    - `flyer_image_url` string, uri, nullable — URL of the flyer image
    - `is_private` boolean — Whether the event is private (hidden from calendar, only accessible via direct link)
    - `is_password_protected` boolean — Whether the event page is protected by a password
    - `schedule_type` 'single' | 'recurring' — Whether this is a single or recurring event
    - `recurring_frequency` 'daily' | 'weekly' | 'every_n_weeks' | 'monthly_date' | 'monthly_weekday' | 'yearly', nullable — Recurrence frequency (only present for recurring events)
    - `recurring_interval` integer, nullable — Interval for every_n_weeks frequency (only present for recurring events)
    - `days_of_week` string, nullable — 7-character string where each position represents a day (Sunday to Saturday), '1' means active (only present for recurring events)
    - `recurring_end_type` 'never' | 'on_date' | 'after_events', nullable — How the recurrence ends (only present for recurring events)
    - `recurring_end_value` string, nullable — End date (Y-m-d) or number of occurrences, depending on recurring_end_type
    - `tickets_enabled` boolean — Whether ticket sales are enabled for this event
    - `ticket_currency_code` string, nullable — 3-letter ISO currency code for tickets
    - `payment_method` 'stripe' | 'invoiceninja' | 'payment_url' | 'manual', nullable — Payment method for ticket sales
    - `terms_url` string, uri, nullable — URL to terms and conditions for ticket sales
    - `tickets` Ticket[] — Ticket types for this event (only present when tickets are enabled)
      - `id` string — Encoded ticket ID
      - `type` string — Ticket type name
      - `price` number — Ticket price
      - `quantity` integer, nullable — Number of tickets available (null for unlimited)
      - `description` string, nullable — Ticket description
    - `members` object — Map of encoded member schedule IDs to member details
    - `event_parts` EventPart[] — Sub-sections or segments of the event
      - `id` string — Encoded part ID
      - `name` string — Part name
      - `description` string, nullable — Part description
      - `start_time` string, nullable — Start time for this part
      - `end_time` string, nullable — End time for this part
    - `schedules` object[] — Schedules associated with this event
      - `id` string — Encoded schedule ID
      - `subdomain` string — Schedule subdomain
      - `name` string — Schedule name
      - `type` 'venue' | 'talent' | 'curator' — Schedule type
      - `group` object, nullable — Sub-schedule assignment for this event on this schedule
        - `id` string — Encoded sub-schedule ID
        - `name` string — Sub-schedule name
        - `slug` string — Sub-schedule slug
    - `created_at` string, date-time, nullable — ISO 8601 creation timestamp
    - `updated_at` string, date-time, nullable — ISO 8601 last update timestamp
  - `meta` object
    - `message` string

## Other responses

- `401` — Missing or invalid API key
- `403` — Unauthorized or not a Pro account
- `404` — Event not found
- `422` — Validation error

## Changes

- **2026-02-23** `37529a7e8800` — 3 info
  - added the new optional request property `is_private`
  - added the optional property `data/is_password_protected` to the response with the `200` status
  - added the optional property `data/is_private` to the response with the `200` status
- **2026-02-17** `c1e54e26b0db` — 8 info
  - added the optional property `data/category_name` to the response with the `200` status
  - added the optional property `data/payment_method` to the response with the `200` status
  - added the optional property `data/schedules` to the response with the `200` status
  - added the optional property `data/terms_url` to the response with the `200` status
  - …4 more
- **2026-02-12** `2596baa89e80` — 2 info
  - added the new optional request property `days_of_week`
  - added the optional property `data/event_parts/items/id` to the response with the `200` status
- **2026-02-11** `e24c8532211b` — 1 info
  - api operation id `update_event` was added
- **2026-02-11** `36ccba39bc4d` — 13 warning, 1 info
  - removed the request property `days_of_week`
  - removed the request property `is_private`
  - removed the optional property `data/category_name` from the response with the `200` status
  - removed the optional property `data/event_parts/items/id` from the response with the `200` status
  - …10 more

[Change history](https://skmtc.dev/eventschedule/apis/event-schedule-api/changes/events/:id/put.md)

---

[API](https://skmtc.dev/eventschedule/apis/event-schedule-api.md) · [All operations](https://skmtc.dev/eventschedule/apis/event-schedule-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/eventschedule/event-schedule-api/revisions/fc24d7d227c4/schema)
