Skip to main content
PATCH
/
:projectId
/
api
/
v7
/
events
/
:eventId
Update Event
curl --request PATCH \
  --url https://api.sublay.io/api/v6/:projectId/api/v7/events/:eventId \
  --header 'Content-Type: application/json' \
  --data '
{
  "title": "<string>",
  "description": "<string>",
  "startTime": "<string>",
  "endTime": "<string>",
  "timezone": "<string>",
  "type": "<string>",
  "url": "<string>",
  "venueName": "<string>",
  "address": "<string>",
  "location": {},
  "visibility": "<string>",
  "capacity": 123,
  "allowMaybe": true,
  "guestListVisible": true,
  "metadata": {},
  "removeImageIds": [
    "<string>"
  ],
  "cover.options": "<string>",
  "gallery": [
    null
  ],
  "gallery.options": "<string>"
}
'
Updates an event. Host-only — the caller must be in hostIds (service/master keys bypass this). Every provided field is updated; omitted fields are left untouched. Type-conditional location validation is re-applied when type is present. hostIds, status, and spaceId are not editable here — manage hosts via the host endpoints, cancel via Cancel Event; the space is immutable. Images can be curated in one request: a new cover replaces the existing cover, gallery files are appended, and removeImageIds deletes existing event images by File ID. Any image operation requires the files-images bundle. When a time field (startTime/endTime/timezone) or a location field (location/url/venueName/address) actually changes, an event-updated notification is fanned out to all going/maybe RSVPs (best-effort, requires the notifications bundle).

Path Parameters

eventId
string
required
UUID of the event to update.

Body Parameters

title
string
Event title. 1–300 characters.
description
string
New description.
startTime
string
New ISO start datetime.
endTime
string
New ISO end datetime.
timezone
string
New IANA timezone.
type
string
"online", "physical", or "hybrid". Re-triggers location validation.
url
string
Join/stream URL.
venueName
string
Venue name.
address
string
Street address.
location
{ latitude: number; longitude: number }
New coordinates. On multipart requests, send as a JSON string.
visibility
string
"public", "members", or "invite".
capacity
number
New capacity (positive integer).
allowMaybe
boolean
Whether "maybe" RSVPs are allowed.
guestListVisible
boolean
Whether non-hosts can view the guest list.
metadata
object
Arbitrary key-value data. Up to 1 MB.
removeImageIds
string[]
File IDs of existing event images to remove (gallery photos and/or the current cover). Each must belong to this event. On multipart requests, send as a JSON string.
cover
file
New cover image (replaces the current cover). Multipart file field. Requires cover.options.
cover.options
string
JSON-stringified image-processing options for the new cover.
Gallery images to append (up to 10). Multipart file field. Requires gallery.options.
JSON-stringified image-processing options for the appended gallery images.

Response

Returns the updated Event object.

Error Responses

{ "error": "Event not found", "code": "event/not-found" }
{ "error": "Only a host of this event may update it.", "code": "event/forbidden" }
{ "error": "Event cover/gallery images require the files-images bundle. Enable it for this project.", "code": "event/files-images-bundle-required" }
{ "error": "Some removeImageIds do not belong to this event.", "code": "event/invalid-remove-image-ids" }
See also: useUpdateEvent