Update Event

PATCH /events/:eventId

You can update the following fields, described under Create Event: name, description, masterLanguage, translations, startDate, endDate, allDay, published, publishedAt, saleStartsAt, saleEndsAt, imageId, enableTickets, maxTickets. parentEventId can't be changed.

Fields you leave out stay as they are. null removes description, endDate, publishedAt, imageId and the overall limit maxTickets, and sets saleStartsAt and saleEndsAt back to the defaults: on sale from when the event is published until it ends. translations replaces all of the event's translations: send every language you want to keep, or [] to remove them all.

description, and the description of each translation, is rich text as under Rich text on Create Event: a string holding a JSON array of blocks, such as "[{\"type\":\"paragraph\",\"children\":[{\"text\":\"Doors open at 18:30.\"}]}]". Plain text is refused.

Times are the museum's local time, written in ISO 8601 ending in Z as under Times on Create Event: 2026-07-01T14:00:00.000Z is 14:00 at the museum. endDate may not be before startDate, which is checked against the stored value when you send only one of them. An event sold from a seating map keeps maxTickets at null: its seats are its capacity.

The response is the updated Event, the same object Get Event returns.

To publish an event and start its sale on 1 May 2027 at 10:00 at the museum:

Copy
{ "published": true, "saleStartsAt": "2027-05-01T10:00:00.000Z" }

Series

A change to a main event is copied to all its dates, except what each date has of its own: startDate, endDate, published, publishedAt, saleStartsAt and saleEndsAt. So publishing a main event doesn't publish its dates.

A date only takes those six fields. Change anything else on its main event: any other field on a date gives SET_ON_MAIN_EVENT.

Errors

Errors are returned as { "errors": [{ "message": "EVENT_NOT_FOUND" }] }.

StatusMessageWhen
400EVENT_NAME_REQUIREDname is blank
400EVENT_END_BEFORE_STARTendDate would be before startDate
400EVENT_INVALID_MAX_TICKETSmaxTickets is below 1
400EVENT_INVALID_DESCRIPTIONdescription, or the description of a translation, isn't rich text as under Rich text on Create Event
400SET_ON_MAIN_EVENTThe event is a date in a series and the body holds a field other than startDate, endDate, published, publishedAt, saleStartsAt and saleEndsAt
400LANGUAGE_NOT_SUPPORTEDmasterLanguage or the language of a translation isn't a language Loby supports
400FIELD_NOT_ALLOWED: <field>The body holds a field that isn't listed above, such as parentEventId. For a field in a translation, <field> is translations.<field>
400INVALID_BODYThe body isn't a JSON object, a translation has no language, a field has the wrong JSON type, a field that may not be null is null, or a time isn't written as under Times on Create Event
404EVENT_NOT_FOUNDThe event doesn't exist, was deleted, belongs to another museum, or has the other mode (live or test) than your API key
‹ Previous
Create Event
Next ›
Delete Event