Outbound
What leaves the platform, and in what shape.
An event is a small, well-defined record. Anything downstream — a ticket, an alert, a
dashboard, a data warehouse — is built on the same structure.
Every confirmed event is delivered as a JSON object to an outbound webhook at the moment it
is created, and is available from the REST API afterwards. The payload is deliberately
boring: identifiers, timestamps, the zone, the class, the duration, the severity, and a
reference to the clip.
Because the shape is stable, a site can build its own routing rather than depending on a
connector we ship. A team that wants walkway breaches in one queue and housekeeping
observations in another writes that rule against the payload instead of asking us to add a
setting.
Clip references are separate from event metadata, which allows an analyst or a reporting
tool to read event counts without being granted access to video. That separation is
enforced by the access rules described on the security page, not by convention.
Webhook delivery is retried with backoff when a destination is unavailable, and failures are
visible in the event's delivery record. An event that could not be delivered is not silently
dropped; it stays in the queue with its error, which is the difference between an
integration that is broken and one that is merely slow.
{
"event_id": "evt_01J8QK4M2X",
"event_name": "Vehicle in pedestrian walkway",
"severity": "high",
"occurred_at": "2025-03-11T08:41:12Z",
"duration_seconds": 11,
"site": "dc-north",
"zone": "walkway-d04",
"camera": "dock-04-receiving",
"agent": "loading-dock-sentinel",
"objects": [
{ "class": "vehicle", "track_id": "t-4471" }
],
"clip_ref": "clip_9f2c…",
"acknowledgement": {
"state": "pending",
"escalates_at": "2025-03-11T08:43:12Z"
}
}
Illustrative payload showing the fields a destination receives. Values are sample data.