Pingtower Docs
Docs The service Alerts & escalation

Alerts & escalation

An alert has three states and two verbs. Everything about paging follows from that.

firingackedresolved
  • Firing means nobody has claimed it. It re-pages on its rule’s cadence and climbs its escalation ladder. In the app this is the Open filter.
  • Acked means someone is on it. Paging stops. The count keeps climbing if lines keep matching, so you can watch whether your fix worked.
  • Resolved means done. The alert leaves the open feed, stops counting toward the project’s open_alerts, and stays in history for thirty days by default.

What an alert carries

FieldMeaning
idStable id, used by ack and resolve.
project, ruleWhich rule opened it.
statefiring, acked or resolved.
levelThe highest level seen among its lines.
countMatching lines since it opened.
escalation_levelWhich rung of the ladder it has reached. 0 is the rule’s own recipients.
templateThe recovered shape that matched.
last_messageThe most recent raw line, so the notification says something useful.
first_seen, last_seenWhen it opened and when the last line matched.
identifiersThe key values that split this alert from its siblings, when the rule uses identifier_keys.
page_accountsWho the current escalation rung is paging, when it narrows the audience.
investigateThe rule asked the app to lead with the log tail.

Reading the feed

GET /v1/pull?cursor=N&wait=S returns every alert changed since cursor N and the next cursor. wait parks the request for up to that many seconds if nothing has changed, which is how the app keeps a live feed without polling in a loop. wait=0 returns immediately.

curl -s "$PT/v1/pull?cursor=0" -H "Authorization: Bearer ptk_…"

Ack and resolve

POST /v1/alerts/{id}/ack and POST /v1/alerts/{id}/resolve. Both return the alert as it now stands. Acking an alert that is already acked, or resolving one already resolved, returns 200 with the unchanged alert; only an unknown id is a 404. The app uses exactly these routes, so anything it can do a script can do.

Both are written to the audit log with who did it.

Who gets paged

Every device of every member of the tenant gets a push for every alert event. An escalation rung that names schedules or accounts narrows that event’s audience to those people, and that is also the only event delivered as a critical alert. Webhook, Slack and Telegram integrations receive the same events, filtered however each integration was configured.

EventWhen
alert.openedThe rule fired and no matching alert was firing.
alert.bumpedAnother line folded into a firing alert.
alert.escalatedA ladder rung’s after_minutes passed without an ack, or a renotify fired.
alert.ackedSomeone acked.
alert.resolvedSomeone resolved, or quiet time ran out.
Last updated 1 Sep 2026 Report a problem with this page