Skip to content

Monitoring API ​

Uptime history for your domains and networks, and the alerts currently firing on your account. All endpoints need a bearer token and the monitoring:read permission:

http
Authorization: Bearer <jwt-or-apikey>

Pods are different

These endpoints cover domains and networks. For a pod's CPU, memory, disk, and network, use pod telemetry instead - there's no separate uptime endpoint for pods.

Domain uptime ​

http
GET /api/uptime/domains/:id?from=2026-09-15&to=2026-09-16

The probe behind this reaches the domain over its public path, the way a visitor would.

Network uptime ​

http
GET /api/uptime/networks/:id?from=2026-09-15&to=2026-09-16

The probe behind this checks whether the network's link to the outside is answering.

Both take the same optional from / to params (RFC3339 or YYYY-MM-DD, where to counts to end of day). The default window is the last 24 hours, to is clamped to now, and from is clamped to the 90-day retention. Each target is probed every 5 minutes, so a full day is 288 probes. The point resolution scales to the window: 5-minute buckets up to 3 hours, hourly up to 3 days, daily beyond that.

Response ​

Both return an UptimeHistory. With no from / to, you get the last 24 hours:

bash
curl https://cloud-api.microapps.io/api/uptime/domains/6a4d5b83b7006ccae6391c41 \
  -H "Authorization: Bearer $MICROAPPS_API_KEY"
json
{
  "summary": {
    "total": 288,
    "up": 286,
    "degraded": 1,
    "down": 1,
    "uptimePercent": 99.31,
    "byReason": { "pod_stopped": 1, "unreachable": 1 }
  },
  "series": [
    {
      "timestamp": "2026-09-16T13:00:00Z",
      "total": 12,
      "up": 11,
      "degraded": 0,
      "down": 1,
      "uptimePercent": 91.67
    },
    {
      "timestamp": "2026-09-16T14:00:00Z",
      "total": 12,
      "up": 12,
      "degraded": 0,
      "down": 0,
      "uptimePercent": 100
    }
  ],
  "from": "2026-09-15T14:32:10Z",
  "to": "2026-09-16T14:32:10Z"
}

summary is the roll-up for the whole window; series is the same shape bucketed over time for charting. uptimePercent is up / total, rounded to two decimals, so a degraded bucket counts against it. A window with no probes at all comes back with every counter at 0 and an empty series.

When something was down, byReason attributes it. Reasons with a count of zero are left out entirely:

ReasonWhat it means
pod_stoppedThe target pod was Off.
app_errorThe pod answered, but with a 5xx. Your application, not the platform.
unreachableThe pod was running but nothing answered.
uplink_unreachableThe network's uplink did not answer.

Active alerts ​

http
GET /api/alerts

Everything the monitor is alerting on for your account right now - the same conditions it emails the account owner about and posts to your alert webhook. An alert appears here when a check first fails and drops out again when it recovers, so an empty list means nothing is wrong. The console's Home page lists these under Needs attention.

bash
curl https://cloud-api.microapps.io/api/alerts \
  -H "Authorization: Bearer $MICROAPPS_API_KEY"
json
{
  "data": [
    {
      "id": "6b0f2a9c4d1e8f0012ab34cd",
      "accountId": "6a4d5b83b7006ccae6391c00",
      "kind": "pod",
      "resourceId": "6a4d5b83b7006ccae6391c41",
      "resourceName": "web",
      "metric": "cpu",
      "alerting": true,
      "message": "CPU usage on pod web is 95% (threshold 90%)",
      "lastValue": 95,
      "lastNotifiedAt": "2026-11-09T10:15:00Z",
      "createdAt": "2026-11-09T10:15:00Z",
      "updatedAt": "2026-11-09T10:45:00Z"
    }
  ]
}

Newest first, by lastNotifiedAt. kind and metric say what is being watched:

kindmetricFires when
podcpu, memory, diskUsage is at or above the alert threshold.
domainuptimeThe domain does not answer on its public path.
domaindnsA required record that used to be right is failing.
domainownershipThe domain ownership TXT record is missing or changed.
domaindnssecThe registry publishes a DS record but the zone is not signed to match.
domaincertificateThe SSL certificate is near expiry, or has expired, and renewal has not succeeded.
mailboxdiskA mailbox is near its quota.
networkuplinkThe network cannot reach its uplink.
accountcredit, spendCredit is below, or monthly spend is above, the thresholds in your account settings.

message is the sentence from the notification, lastValue is the measurement behind it (a percentage, an amount, or days to expiry, depending on the metric) and lastNotifiedAt is when we last told you about it. An alert whose resource has since been deleted is removed, not shown as resolved.

See also ​

Built for the long tail.