Appearance
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-16The 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-16The 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:
| Reason | What it means |
|---|---|
pod_stopped | The target pod was Off. |
app_error | The pod answered, but with a 5xx. Your application, not the platform. |
unreachable | The pod was running but nothing answered. |
uplink_unreachable | The network's uplink did not answer. |
Active alerts
http
GET /api/alertsEverything 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:
kind | metric | Fires when |
|---|---|---|
pod | cpu, memory, disk | Usage is at or above the alert threshold. |
domain | uptime | The domain does not answer on its public path. |
domain | dns | A required record that used to be right is failing. |
domain | ownership | The domain ownership TXT record is missing or changed. |
domain | dnssec | The registry publishes a DS record but the zone is not signed to match. |
domain | certificate | The SSL certificate is near expiry, or has expired, and renewal has not succeeded. |
mailbox | disk | A mailbox is near its quota. |
network | uplink | The network cannot reach its uplink. |
account | credit, spend | Credit 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.