Skip to main content
An event is a name and some data. Every workflow whose trigger names the event starts a run, and every run waiting on it wakes.

Send one

Over HTTP, POST /events takes one event or an array and answers 202.

See what arrived

GET /events lists the events the project received, newest first, and GET /events/{id} reads one. Each is { id, name, app?, source, data?, receivedAt, woke, triggered }: source is how it arrived (api for a send, emit for a step’s emit, webhook for an inbound webhook), woke how many waiting runs it woke, and triggered one entry per workflow it matched, with the runId it started, or skipped, dropped, debounced, batched or deduped when it started none. Filter by name, app, source, since (included) and until (excluded), both RFC 3339.

Trigger a workflow

if is an optional condition on the event, written as in a wait below; a workflow may list several triggers.

Wait for one inside a run

It answers the event, or null once the timeout passes.

Reserved names

An event name under a reserved prefix is refused with 422 event_name_reserved: the name of any module followed by / (for example database/, workflows/), project/ and duraton/. Those events come from the platform itself, and a workflow can be triggered by them: Each platform event starts at most one run of each workflow it triggers, however often it is delivered.

While Workflows is off

A project whose workflows are switched off still accepts events and answers { "woke": 0, "suspended": true }; nothing starts.