Serenities AI™
Back to API Overview

Account Events API

Account-wide events and the triggers that fire flows or agents in response to them.

9 endpoints

Endpoints

POST
/api/v1/accountEvents/raise

Raise a custom account event (recorded as custom.<name>) so every "On event" trigger on it — flows, agents, functions — runs. Params: name (e.g. order_ready), subject? {type,id,name}, properties? (≤30 keys), idempotencyKey? (repeats never record twice). Raising it is running those functions: if one of them is not open to you ("Who can run this function"), it is refused and nothing is raised.

Parameters

namestringrequired

Your own event name, e.g. order_ready (recorded as custom.order_ready)

subjectobject

What it is about

propertiesobject

Details (up to 30 keys, 8 KB)

idempotencyKeystring

Makes retries safe: the same key never records twice

Example Request

curl -X POST https://app.serenitiesai.com/api/v1/accountEvents/raise \
  -H "Authorization: Bearer mk_live_your_api_key" \
  -H "Content-Type: application/json" \
  -d '{
  "name": "example",
  "subject": {},
  "properties": {}
}'
POST
/api/v1/accountEvents/listEventTriggers

The "On event" triggers of this account. Each is "when <event> happens → run <flow | AI agent | function>": event pattern (a name, source.* or *), conditions, target with its name, on/off, last fired, fire count. Params: targetKind?, targetRef? to list one flow's, agent's or function's triggers.

Parameters

targetKindstring
targetRefstring

Example Request

curl -X POST https://app.serenitiesai.com/api/v1/accountEvents/listEventTriggers \
  -H "Authorization: Bearer mk_live_your_api_key" \
  -H "Content-Type: application/json" \
  -d '{
  "targetKind": "example",
  "targetRef": "example"
}'
POST
/api/v1/accountEvents/addEventTrigger

Add an "On event" trigger: the event starts a flow, an AI agent or a function whenever it happens, on the server, whoever caused it. Params: event (e.g. base.row_created, base.*, *), targetKind (flow | agent | account_function | site_function), targetRef (flow id | agent id | account function id | site function id) — site_function is a function of one of your sites, by its id, filters? — the conditions that narrow it to the exact thing: for base events { property: "databaseId", op: "eq", value } / "tableId" / { property: "changedFields", op: "contains", value: "<Field name>" } (row_updated) / { property: "row.<Field name>", op, value } (rows with these values); for other sources the id property (flowId, agentId, functionId, projectId, folderId, hookId, connectionId, channelId); subject.name, name, source, origin are also addressable. config? ({ triggerId? for flows, task? template for agents with {{event.name}} {{subject.name}} {{properties.x}}, params? for functions }). Check accountEvents_builtins first so the name is real (or use custom.<name>). For a flow prefer a trigger node with triggerType "event" + accountEvents_setFlowEventTrigger. A filter value may be a LIST: contains ["Amount","Status"] = any of them (how "only when one of these fields changes" is stored). An installed app's event is named app.<key>.<name>, the key being that app's (accountEvents_appEvents lists each installed app's events by their full name); the key says which app, so nothing else is picked. app.<name> without the key is refused.

Parameters

namestring

A label; made from the event and target when omitted

eventstringrequired

An event name (base.row_created), a source pattern (base.*) or * for everything

filtersarray

Only when every filter matches the event properties (subject.name, name, source, origin are also addressable)

targetKindstringrequired

flow | agent | account_function | site_function (a function of one of your sites, by its id)

targetRefstringrequired

flow id | agent id | account function id | site function id

configobject

Example Request

curl -X POST https://app.serenitiesai.com/api/v1/accountEvents/addEventTrigger \
  -H "Authorization: Bearer mk_live_your_api_key" \
  -H "Content-Type: application/json" \
  -d '{
  "name": "example",
  "event": "example",
  "filters": {}
}'
POST
/api/v1/accountEvents/updateEventTrigger

Change an "On event" trigger: its event, conditions, name, on/off, or config. Params: id, event?, name?, isActive?, filters?, config?. An installed app's event is named app.<key>.<name> (accountEvents_appEvents lists them); app.<name> without the key is refused.

Parameters

idstringrequired
namestring
eventstring
isActiveboolean
filtersarray
configobject

Example Request

curl -X POST https://app.serenitiesai.com/api/v1/accountEvents/updateEventTrigger \
  -H "Authorization: Bearer mk_live_your_api_key" \
  -H "Content-Type: application/json" \
  -d '{
  "id": "example",
  "name": "example",
  "event": "example"
}'
POST
/api/v1/accountEvents/removeEventTrigger

Remove an "On event" trigger. Params: id. Act only on what the person named or picked.

Parameters

idstringrequired

Example Request

curl -X POST https://app.serenitiesai.com/api/v1/accountEvents/removeEventTrigger \
  -H "Authorization: Bearer mk_live_your_api_key" \
  -H "Content-Type: application/json" \
  -d '{
  "id": "example"
}'
POST
/api/v1/accountEvents/eventTriggerRuns

What "On event" triggers did: newest first, status queued | ok | failed | skipped with the reason, attempts, the event. Params: triggerId?, limit?.

Parameters

triggerIdstring
limitinteger

Example Request

curl -X POST https://app.serenitiesai.com/api/v1/accountEvents/eventTriggerRuns \
  -H "Authorization: Bearer mk_live_your_api_key" \
  -H "Content-Type: application/json" \
  -d '{
  "triggerId": "example",
  "limit": {}
}'
POST
/api/v1/accountEvents/appEvents

The events each app installed in this workspace declares in its app.json, by their full name app.<key>.<name>, grouped by app (installId, appName, event names). Use it to find an app's event before adding a trigger on one; the trigger names the full event. Params: none.

Example Request

curl -X POST https://app.serenitiesai.com/api/v1/accountEvents/appEvents \
  -H "Authorization: Bearer mk_live_your_api_key" \
  -H "Content-Type: application/json" \
  -d '{}'
POST
/api/v1/accountEvents/setFlowEventTrigger

Bind a flow's Event Trigger node to an account event (upsert; one trigger row per node). Params: flowId, triggerId, event, filters? (same conditions as addEventTrigger). Use after adding a trigger node with triggerType "event" to the flow. An installed app's event is named app.<key>.<name> (accountEvents_appEvents lists them); app.<name> without the key is refused.

Parameters

flowIdstringrequired
triggerIdstringrequired
eventstringrequired
filtersarray

Example Request

curl -X POST https://app.serenitiesai.com/api/v1/accountEvents/setFlowEventTrigger \
  -H "Authorization: Bearer mk_live_your_api_key" \
  -H "Content-Type: application/json" \
  -d '{
  "flowId": "example",
  "triggerId": "example",
  "event": "example"
}'
POST
/api/v1/accountEvents/builtins

Every built-in account event name with its plain-language description. Grouped by source: base (rows written by ANY lane: grid, chat, agent, MCP, API, flow, import), drive, site, flow, agent, function, email, journey, marketplace, billing, connector, channel. Your own events are custom.<name>. Use it before adding an "On event" trigger. There is no event log: what a trigger did is on the trigger (accountEvents_eventTriggerRuns).

Example Request

curl -X POST https://app.serenitiesai.com/api/v1/accountEvents/builtins \
  -H "Authorization: Bearer mk_live_your_api_key" \
  -H "Content-Type: application/json" \
  -d '{}'