Websites (Monitors)
A “website” (referred to as a “monitor” in some responses) is the core resource in PingPing. Each monitor carries a URL plus the two checks PingPing runs against it: an uptime check and a certificate health check.
All requests below require a Bearer token. See Authentication for details.
Retrieve all websites (monitors)
Returns an array of every monitor on the authenticated account, with their current check status inlined.
Response 200
[
{
"id": 3,
"identifier": "iolqRzxr",
"alias": "google.com",
"scheme": "https",
"host": "google.com",
"port": "",
"url": "https://google.com/",
"status_page": "https://pingping.io/iolqRzxr",
"checks": {
"uptime": {
"id": 5,
"status": "ok",
"error": null,
"interval": 30,
"is_enabled": true,
"notification_threshold": 0,
"last_check_at": "2026-05-31 14:56:03",
"meta": {
"http_status_code": 200,
"average_uptime_percentage": 100,
"average_response_time": 0.17569,
"offline_since": null
}
},
"certificate_health": {
"id": 6,
"status": "ok",
"error": null,
"interval": 86400,
"is_enabled": true,
"notification_threshold": 604800,
"last_check_at": "2026-05-31 14:56:10",
"meta": {
"issuer": "TeleSec ServerPass Class 2 CA",
"signature_algorithm": "RSA-SHA256",
"is_self_signed": false,
"valid_from": "2026-02-14 05:30:26",
"valid_to": "2027-02-19 23:59:59"
}
}
}
}
] Retrieve a specific website (monitor)
Path parameters
| Name | Type | Description |
|---|---|---|
| id | number | The monitor id. Use the id field from the list response, not the identifier. |
Returns the same shape as a single element of the list endpoint above.
Response 404
{
"message": "No monitor found with that id."
} Retrieve statistics from a specific website (monitor)
Returns a rolling 30-day summary plus historical outage events.
Path parameters
| Name | Type | Description |
|---|---|---|
| id | number | The monitor id. |
Response 200
{
"uptime_percentage_30d": 99.987,
"average_response_time_ms": 174,
"checks_run_30d": 86400,
"outages": [
{
"started_at": "2026-05-21 03:12:09",
"ended_at": "2026-05-21 03:13:42",
"duration_seconds": 93,
"http_status_code": 503
}
]
} Create a website (monitor)
Request body
| Name | Type | Description |
|---|---|---|
| url | string | Full URL including scheme. Required. |
| alias | string | Display name. Defaults to the host portion of the URL. |
| interval | number | Uptime check interval in seconds. Defaults to 30. See Checks for valid values. |
| notification_threshold | number | Wait this many seconds of confirmed downtime before firing an alert. Default 0 (alert on first confirmed failure). |
curl -X POST https://pingping.io/webapi/monitors \
-H 'Authorization: Bearer YOUR_API_TOKEN' \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
-d '{
"url": "https://example.com",
"alias": "Marketing site",
"interval": 30
}' Response 201
{
"id": 482,
"identifier": "RvX29qLp",
"alias": "Marketing site",
"scheme": "https",
"host": "example.com",
"url": "https://example.com/",
"status_page": "https://pingping.io/RvX29qLp",
"checks": {
"uptime": { "id": 901, "status": "pending", "interval": 30, "is_enabled": true },
"certificate_health": { "id": 902, "status": "pending", "interval": 86400, "is_enabled": true }
}
} Response 422
Returned when the request body fails validation (missing url, invalid scheme, etc.).
{
"message": "The given data was invalid.",
"errors": {
"url": ["The url field is required."]
}
} Update a website (monitor)
Update the display alias or the underlying URL. To change check intervals, use the Checks API instead.
Request body
| Name | Type | Description |
|---|---|---|
| alias | string | New display name. Optional. |
| url | string | New URL. Optional. Changing the host resets historical stats. |
Response 200
Returns the updated monitor in the same shape as the create response.
Delete a website (monitor)
Permanently removes the monitor and all associated checks, history, and the status page. This action cannot be undone.
Response 204
Empty body on success.