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)

GET https://pingping.io/webapi/monitors

Returns an array of every monitor on the authenticated account, with their current check status inlined.

Response 200

200 OK
[
{
  "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)

GET https://pingping.io/webapi/monitors/{id}

Path parameters

NameTypeDescription
idnumberThe 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

404 Not Found
{
"message": "No monitor found with that id."
}

Retrieve statistics from a specific website (monitor)

GET https://pingping.io/webapi/monitors/{id}/statistics

Returns a rolling 30-day summary plus historical outage events.

Path parameters

NameTypeDescription
idnumberThe monitor id.

Response 200

200 OK
{
"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)

POST https://pingping.io/webapi/monitors

Request body

NameTypeDescription
urlstringFull URL including scheme. Required.
aliasstringDisplay name. Defaults to the host portion of the URL.
intervalnumberUptime check interval in seconds. Defaults to 30. See Checks for valid values.
notification_thresholdnumberWait this many seconds of confirmed downtime before firing an alert. Default 0 (alert on first confirmed failure).
Request
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

201 Created
{
"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.).

422 Unprocessable Entity
{
"message": "The given data was invalid.",
"errors": {
  "url": ["The url field is required."]
}
}

Update a website (monitor)

PUT https://pingping.io/webapi/monitors/{id}

Update the display alias or the underlying URL. To change check intervals, use the Checks API instead.

Request body

NameTypeDescription
aliasstringNew display name. Optional.
urlstringNew 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)

DELETE https://pingping.io/webapi/monitors/{id}

Permanently removes the monitor and all associated checks, history, and the status page. This action cannot be undone.

Response 204

Empty body on success.