VM and pod events
Sent when a VM starts, or a VM or pod stops, is terminated, is interrupted or recovers, to each enabled webhook that lists the event or lists none. vm.running: a VM reached running from deploying, on its first start, on every later start of a stopped or failed VM and on every restart, a reboot of a running VM included; or a VM or pod recovered from an interruption. A pod's start, first or later, sends none. vm.stopped: a VM or pod was stopped. vm.terminated: a VM or pod was terminated. vm.interrupted: a VM or pod stopped serving through no action of yours, for example because its node went offline. It usually recovers on its own and sends vm.running again; one still interrupted after 7 days, or whose node is removed, is ended instead: a pod as terminated, which sends vm.terminated, and a VM as stopped, which sends no event. The events cover the VMs and pods your organization lists; the nodes of a managed Kubernetes cluster send none. Delivery is at least once: the same change can occasionally be recorded as a second event, with a new event id and a new delivery id.
X-OpenRelay-Signature*stringsha256= followed by the lowercase hex HMAC-SHA256 of the raw request body. The HMAC key is the 64 character lowercase hex SHA-256 of your whole whsec_ secret, prefix included, used as those characters rather than decoded from hex. Verify it over the exact bytes received, before parsing them. Only the body is signed: there is no timestamp. The signing secret is read at each attempt, so a retry after a regenerate is signed with the new secret.
^sha256=[0-9a-f]{64}$X-OpenRelay-Event*stringThe event's type, the same as the body's type.
X-OpenRelay-Delivery*stringThe id of this delivery to this webhook, a UUID. Every retry of the delivery carries the same id and the same body, so deduplicate on it.
uuidUser-Agent*"OpenRelay-Webhook/1.0""OpenRelay-Webhook/1.0"X-VectorLay-Signature*stringDeprecatedThe same value as X-OpenRelay-Signature, under the name used before OpenRelay. Deprecated, to be removed in a future release: verify X-OpenRelay-Signature.
^sha256=[0-9a-f]{64}$X-VectorLay-Event*stringDeprecatedThe same value as X-OpenRelay-Event. Deprecated, to be removed in a future release: read X-OpenRelay-Event.
X-VectorLay-Delivery*stringDeprecatedThe same value as X-OpenRelay-Delivery. Deprecated, to be removed in a future release: read X-OpenRelay-Delivery.
uuidapplication/json- body
The body of a vm.running, vm.stopped, vm.terminated or vm.interrupted delivery. Pods send the same events with the same body.
id*stringThe event's id, evt_ followed by a UUID, new each time an event is recorded. A retry of a delivery carries the same id.
type*string"vm.running""vm.stopped""vm.terminated""vm.interrupted"created_at*stringWhen the event was recorded, RFC 3339 in UTC to the second.
date-timedata*Delivered. Any 2xx status within 10 seconds counts, and its body is not kept.
The body of a vm.running, vm.stopped, vm.terminated or vm.interrupted delivery. Pods send the same events with the same body.
{ "id": "evt_…", "type": "vm.running", "created_at": "2026-06-10T12:00:00Z", "data": { "vm_id": "…", "node_id": "…", "status": "running", "internal_ip": "…", "endpoint": "…" }}{ "X-OpenRelay-Signature": "string", "X-OpenRelay-Event": "string", "X-OpenRelay-Delivery": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "User-Agent": "OpenRelay-Webhook/1.0", "X-VectorLay-Signature": "string", "X-VectorLay-Event": "string", "X-VectorLay-Delivery": "497f6eca-6276-4993-bfeb-53cbbbba6f08"}Recent delivery attempts for a webhook GET
Lists a webhook's recent delivery attempts: event type, the id of the resource the event is about, attempt number, status, response code, error and time. The newest deliveries first, at most limit (default 50). A delivery of a batch event is left out for a caller without batch read access, and one of a balance event for a caller without billing read access, so a page can hold fewer than limit.
Batch events Webhook
Sent once per batch when it reaches its final status, usually within a minute, to each enabled webhook that lists the event. The events are batch.completed, batch.failed, batch.expired (the 24 hour completion window ended first) and batch.cancelled. A batch that reached its final status more than 24 hours before it is picked up sends none. Listing a batch event needs batch read access.