Performance report Beta
Check counts and response times grouped by hour, day or week, ready for a chart. Add includeUptime=true to get uptime and downtime for each bucket too.
Needs an X-API-Key header whose owner has access to uptime monitoring in the app. The call counts once against your daily quota. See Monitoring API: getting started for authentication, rate limits and errors.
Query parameters
| Name | Type | Description |
|---|---|---|
resolution optional | string | hour (default), day or week. Buckets line up on UTC hours, UTC days, or weeks starting on Monday. |
from optional | string | integer | Start of the window. Default: 1 day before to for hour, 30 days for day and week. |
to optional | string | integer | End of the window. Default: now. Longest window: 31 days for hour, 400 for day, 800 for week. |
region optional | string | One location code. Filters the check counts and response times. |
includeUptime optional | boolean | true adds uptimePct, downSeconds, unknownSeconds and maintenanceSeconds to each bucket. Only allowed when the response has 400 buckets or fewer (for example, up to 16 days at hour). |
Request
Response
- {
- "id": "mon_79ce3cf9c4fa56e98af4",
- "from": "2026-09-14T00:00:00.000Z",
- "to": "2026-09-17T00:00:00.000Z",
- "resolution": "day",
- "buckets": [
- { "from": "2026-09-14T00:00:00.000Z", "to": "2026-09-15T00:00:00.000Z", "checks": 288, "upChecks": 288,
- "avgResponseMs": 204, "minResponseMs": 121, "maxResponseMs": 866,
- "uptimePct": 100, "downSeconds": 0, "unknownSeconds": 0, "maintenanceSeconds": 0 },
- { "from": "2026-09-15T00:00:00.000Z", "to": "2026-09-16T00:00:00.000Z", "checks": 0, "upChecks": 0,
- "avgResponseMs": null, "minResponseMs": null, "maxResponseMs": null,
- "uptimePct": null, "downSeconds": 0, "unknownSeconds": 86400, "maintenanceSeconds": 0 },
- { "from": "2026-09-16T00:00:00.000Z", "to": "2026-09-17T00:00:00.000Z", "checks": 285, "upChecks": 282,
- "avgResponseMs": 219, "minResponseMs": 118, "maxResponseMs": 1934,
- "uptimePct": 99.028, "downSeconds": 840, "unknownSeconds": 0, "maintenanceSeconds": 0 }
- ],
- "usage": { "used": 24, "dailyLimit": 100, "tier": "free" }
- }
- There's one bucket for every hour, day or week in the window, oldest first, including empty ones. An empty bucket has
checks: 0andnullresponse times. (In the example, the monitor was paused on 15 September.) - The first bucket starts at the hour, day or week that contains
from, so it can start a little before it. No buckets are returned for the future, and the last one ends attoor now, whichever is earlier. uptimePctand the other uptime fields follow the same rules as Summary.
Errors
| Status | When |
|---|---|
400 | from or to isn't a valid time, from isn't before to, the window is too long for the resolution, resolution or region isn't allowed, or includeUptime would return more than 400 buckets. |
401 | The API key is missing or invalid. |
403 | The key's owner doesn't have access to uptime monitoring, or the key isn't linked to a workspace. |
404 | No monitor with that id in your workspace. |
405 | The endpoint doesn't accept that method. |
429 | A rate limit or your daily quota was hit. Read Retry-After, in seconds. |
500 | Something went wrong on our side. Try again. |
503 | The API is temporarily unavailable. Try again shortly. |
Errors are JSON: { "error": "message" }. See Monitoring API errors.
Related
- Reports: how the reports count time
- Hours of day: response time by hour of the day
- Summary: one figure for the whole period