30 days free. No credit card. Full access from the moment you connect your site.

Start free trial

Update Event

events/update-event changes an event in place. Only the fields you send are touched; everything else is left exactly as it was.

Dates are read back after the write, because the calendar has a habit of discarding them quietly.

At a glance

Abilityevents/update-event
ToolsetThe Events Calendar — toolset/events-calendar
GroupThe Events Calendar › Events
RequiresThe Events Calendar, active on the site
Capabilitymanage_options
SafetyWrites data
RepeatableIdempotent — running it twice leaves the same result
Ships inAcrossAI Abilities Manager 0.0.34 and later

The silent discard, and what is done about it

If the end date precedes the start, The Events Calendar does not raise an error. It drops the entire date block and saves everything else. The call returns success, the event keeps its old times, and nothing anywhere says why.

This ability reads the dates back after writing and compares them to what you sent. If they did not take, the response says the dates were rejected instead of reporting a clean success. That is the difference between a rescheduling that failed loudly and one that failed silently three weeks before the event.

Recurring events are refused outright. A series is stored as a rule plus generated occurrences, and writing to one occurrence through this path produces results that range from ignored to corrupting. The refusal is deliberate: use the calendar’s own series editor for those.

A venue or organizer ID is validated before it is written, the same as on creation. An ID that is not a venue is a refusal, not a silently dropped link.

Input

NameTypeRequiredWhat it is
idintegerYesThe event ID.
titlestringNoThe event title.
descriptionstringNoThe event body content.
statusstringNo — defaults to draftPost status: draft, publish, pending or private.
start_datestringNoLocal start, such as 2026-11-02 09:00:00. Read in the event’s own timezone, not the site’s.
end_datestringNoLocal end. Must not precede the start — the calendar discards the entire date block if it does, and this ability reports that rather than claiming success.
all_daybooleanNoWhether the event runs all day.
timezonestringNoOlson timezone, such as America/New_York. The UTC times and the timezone abbreviation are both derived from this.
venueintegerNoVenue ID. Refused if the ID is not a venue, because the calendar would drop the link without saying so.
organizersarrayNoOrganizer IDs. An empty array clears them.
coststringNoCost as displayed, such as 25 or Free.
urlstringNoExternal event website.
featuredbooleanNoWhether the event is featured.

What comes back

NameTypeWhat it is
eventobjectThe event after the write, with the dates as they were actually stored — which is how a rejected date block becomes visible.
successbooleanWhether the call completed.
messagestringA one-line summary of what happened, suitable for showing a human.
error_codestringPresent only on failure — a stable machine-readable reason, such as a missing field, a wrong field type or an unmet confirmation.

Example

Ask your assistant:

Move event 1840 to start at 10am instead of 9.

It resolves to one call:

{
  "ability": "events/update-event",
  "parameters": {
    "id": 1840,
    "start_date": "2026-11-02 10:00:00",
    "end_date": "2026-11-02 17:00:00"
  }
}

Worth knowing

  • Send both dates when you move either one. Sending a new start alone against an unchanged end is the exact shape that triggers a silent discard.
  • Idempotent. Applying the same change twice leaves the same event.
  • An empty organizers array clears the organizers. Omitting the field leaves them alone. Those are different requests and they are spelled differently.
  • Changing the timezone re-derives the UTC times from the local ones. The wall-clock time stays; the absolute moment moves.

Related abilities


Get the plugins:
AcrossAI Abilities Manager · AcrossAI MCP Manager

Browse the rest: Every ability, by category


Keep reading