Pingtower Docs
Docs The service Actions

Actions

A runbook action is an HTTP call the service makes for you when an alert opens. Restart the worker, open the ticket, flip the feature flag, before anyone wakes up.

{
  "name": "restart-gateway-worker",
  "method": "POST",
  "url": "https://deploy.acme.example/api/services/gateway-worker/restart",
  "headers": { "Authorization": "Bearer …" },
  "body": "{\"reason\":\"pingtower\"}",
  "timeout_seconds": 10,
  "events": ["alert.opened"],
  "enabled": true
}
FieldMeaning
nameIdentity. Rules reference it by name or id.
methodGET, POST, PUT, PATCH or DELETE.
urlhttp or https, up to 2048 characters. Private and loopback ranges are refused.
headersUp to 32. Sealed at rest; reads return only header_keys.
bodyUp to 8 KiB. Sealed at rest; reads return has_body. Send "" to clear it, omit it to keep it.
timeout_seconds0 to 60, default 10.
eventsalert.opened, alert.escalated, or both. Default alert.opened.
enabledA disabled action is skipped silently.

POST GET /v1/projects/{id}/actions, then GET PUT DELETE /v1/projects/{id}/actions/{aid}.

Wiring it to a rule

A rule’s actions list names the actions to run. They fire when the alert opens, and again on each escalation for actions whose events include alert.escalated. The reference is checked when the rule is saved, and an action a rule still names cannot be deleted or renamed: 409 with the list of rules.

Test and history

POST /v1/projects/{id}/actions/{aid}/test fires it once, synchronously, with a synthetic alert, and records the result.

GET /v1/projects/{id}/actions/{aid}/executions?limit= lists runs: alert_id, event, status, status_code, the first bytes of the response as response_prefix, error, attempts, duration_ms, executed_at. The app shows this under the action. Deleting an action keeps its execution rows.

Idempotent endpoints onlyAn action can run more than once for one alert: on open, on every escalation it subscribed to, and on retry after a timeout. Point it at something that is safe to call twice.
Last updated 1 Sep 2026 Report a problem with this page