---
title: Organization summary
description: GET /v1/summary — a one-call snapshot of monitor status counts, health score, active incidents and open maintenance windows, for wallboards, bots and AI agents.
canonical: https://watchfor.io/docs/api/summary
---

# Organization summary

GET /v1/summary — a one-call snapshot of monitor status counts, health score, active incidents and open maintenance windows, for wallboards, bots and AI agents.

| Method | Path | Scope | operationId |
| --- | --- | --- | --- |
| GET | `/v1/summary` | read | `getOrgSummary` |

`GET /v1/summary` answers "how is everything right now?" in one round
trip. It is the recommended first data call for scripts, chat bots,
wallboards and AI agents that would otherwise stitch together several
list calls.

```bash
curl https://watchfor.io/api/v1/summary \
  -H "Authorization: Bearer wf_live_YOUR_KEY"
```

```json
{
  "object": "summary",
  "monitors": {
    "total": 42,
    "up": 39,
    "down": 1,
    "degraded": 1,
    "paused": 1,
    "unknown": 0,
    "health_score": 95
  },
  "incidents": {
    "firing": 1,
    "firing_critical": 1,
    "firing_warning": 0,
    "acknowledged": 0,
    "started_24h": 3
  },
  "open_maintenance_windows": 0
}
```

## Fields

| Field | Meaning |
| --- | --- |
| `monitors.total` | All monitors in the organization |
| `monitors.up` / `degraded` / `down` / `paused` / `unknown` | Counts by **effective** status — the same rule as the dashboard and the `status` field on [`GET /v1/monitors`](/docs/api/monitors) |
| `monitors.health_score` | Percentage (0–100) of active monitors (not paused, not unknown) that are up — `degraded` and `down` both count against it; `100` when there are none |
| `incidents.firing` | Open incidents nobody has acknowledged yet, split into `firing_critical` and `firing_warning` |
| `incidents.acknowledged` | Open incidents someone is handling |
| `incidents.started_24h` | Incidents that started in the last 24 hours, whatever their state now |
| `open_maintenance_windows` | Maintenance windows active at this moment |

**Effective status:** a monitor with an open **Critical** incident —
firing or acknowledged — counts as `down` even if its stored status has
not refreshed yet; an open **Warning** incident, or a failed latest check
with no confirmed incident, counts as `degraded`; `paused` always wins
because it is explicit operator intent; a brand-new monitor that has not
reported is `unknown` unless an incident is already open. The same rule
drives the `status` filter on [`GET /v1/monitors`](/docs/api/monitors),
so `?status=down` and this summary always agree.

Remember the platform's [status model](/docs/core-concepts#monitor-status):
**Down** means a failure confirmed from several locations (a Critical
incident is open); a single failed check only shows as `degraded` and
does not open an incident.

## Related

- [`GET /v1/incidents/stats`](/docs/api/incidents#incident-statistics) —
  period statistics (totals by severity, MTTR, MTBF, most unstable
  monitors) rather than a live snapshot.
- [`GET /v1/reports`](/docs/api/reports) — the full period-over-period
  report.
- Try it without a key: [`GET /api/v1/sandbox/summary`](https://watchfor.io/api/v1/sandbox/summary).
- MCP tool `get_summary`, A2A skill `check-status`, CLI `watchfor summary`.

---

Canonical page: https://watchfor.io/docs/api/summary · All docs: https://watchfor.io/docs · Site guide: https://watchfor.io/llms.txt
