Website uptime
Monitors, their checks, and the incidents they recorded.
Uptime monitoring checks a URL on a schedule and records whether it answered. These endpoints read the monitors and their history; monitors are created in the dashboard.
Uptime monitoring is on Pro and Agency. A key on Free or Basic gets 403 plan_excluded.
GET /website-uptime
List monitors
Every URL this workspace watches, with its current state.
Request
curl "https://webrankpage.com/api/v1/website-uptime" \
-H "Authorization: Bearer wrp_live_8fKp2mQx9tR4vN7c"<?php
$ch = curl_init('https://webrankpage.com/api/v1/website-uptime');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
'Authorization: Bearer wrp_live_8fKp2mQx9tR4vN7c',
],
]);
$response = json_decode(curl_exec($ch), true);
curl_close($ch);
print_r($response);// Node 18+, or any server-side runtime. Never in browser code:
// an API key in a page is readable by anyone who opens it.
const response = await fetch('https://webrankpage.com/api/v1/website-uptime', {
headers: {
Authorization: `Bearer ${process.env.WEBRANKPAGE_KEY}`,
},
});
const data = await response.json();
console.log(data);import requests
response = requests.get(
'https://webrankpage.com/api/v1/website-uptime',
headers={'Authorization': 'Bearer wrp_live_8fKp2mQx9tR4vN7c'},
)
print(response.json())require 'net/http'
require 'json'
uri = URI('https://webrankpage.com/api/v1/website-uptime')
request = Net::HTTP::Get.new(uri)
request['Authorization'] = 'Bearer wrp_live_8fKp2mQx9tR4vN7c'
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) do |http|
http.request(request)
end
puts JSON.parse(response.body)package main
import (
"encoding/json"
"fmt"
"net/http"
)
func main() {
req, _ := http.NewRequest("GET", "https://webrankpage.com/api/v1/website-uptime", nil)
req.Header.Set("Authorization", "Bearer wrp_live_8fKp2mQx9tR4vN7c")
res, err := http.DefaultClient.Do(req)
if err != nil {
panic(err)
}
defer res.Body.Close()
var data map[string]interface{}
json.NewDecoder(res.Body).Decode(&data)
fmt.Println(data)
}Response
{
"website_uptime": [
{
"id": 1160,
"url": "https://onbixo.com/",
"label": "Onbixo",
"state": "up",
"interval_seconds": 300,
"paused": false,
"paused_reason": null,
"last_checked_at": "2026-09-25T04:37:13+00:00",
"created_at": "2026-09-24T05:53:17+00:00"
}
],
"total": 1
}GET /website-uptime/{id}
Read one monitor
The monitor with its uptime percentage over the last day, week and month.
Request
curl "https://webrankpage.com/api/v1/website-uptime/594" \
-H "Authorization: Bearer wrp_live_8fKp2mQx9tR4vN7c"<?php
$ch = curl_init('https://webrankpage.com/api/v1/website-uptime/594');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
'Authorization: Bearer wrp_live_8fKp2mQx9tR4vN7c',
],
]);
$response = json_decode(curl_exec($ch), true);
curl_close($ch);
print_r($response);// Node 18+, or any server-side runtime. Never in browser code:
// an API key in a page is readable by anyone who opens it.
const response = await fetch('https://webrankpage.com/api/v1/website-uptime/594', {
headers: {
Authorization: `Bearer ${process.env.WEBRANKPAGE_KEY}`,
},
});
const data = await response.json();
console.log(data);import requests
response = requests.get(
'https://webrankpage.com/api/v1/website-uptime/594',
headers={'Authorization': 'Bearer wrp_live_8fKp2mQx9tR4vN7c'},
)
print(response.json())require 'net/http'
require 'json'
uri = URI('https://webrankpage.com/api/v1/website-uptime/594')
request = Net::HTTP::Get.new(uri)
request['Authorization'] = 'Bearer wrp_live_8fKp2mQx9tR4vN7c'
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) do |http|
http.request(request)
end
puts JSON.parse(response.body)package main
import (
"encoding/json"
"fmt"
"net/http"
)
func main() {
req, _ := http.NewRequest("GET", "https://webrankpage.com/api/v1/website-uptime/594", nil)
req.Header.Set("Authorization", "Bearer wrp_live_8fKp2mQx9tR4vN7c")
res, err := http.DefaultClient.Do(req)
if err != nil {
panic(err)
}
defer res.Body.Close()
var data map[string]interface{}
json.NewDecoder(res.Body).Decode(&data)
fmt.Println(data)
}Response
{
"monitor": {
"id": 1160,
"url": "https://onbixo.com/",
"state": "up",
"interval_seconds": 300,
"uptime": {
"day": 100,
"week": 99.87,
"month": 99.94
}
}
}GET /website-uptime/{id}/checks
List recent checks
The individual checks, newest first, with response time and status.
Query parameters
| Name | Type | Notes | |
|---|---|---|---|
limit | integer | optional | 1 to 100. Defaults to 25. |
Request
curl "https://webrankpage.com/api/v1/website-uptime/594/checks" \
-H "Authorization: Bearer wrp_live_8fKp2mQx9tR4vN7c"<?php
$ch = curl_init('https://webrankpage.com/api/v1/website-uptime/594/checks');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
'Authorization: Bearer wrp_live_8fKp2mQx9tR4vN7c',
],
]);
$response = json_decode(curl_exec($ch), true);
curl_close($ch);
print_r($response);// Node 18+, or any server-side runtime. Never in browser code:
// an API key in a page is readable by anyone who opens it.
const response = await fetch('https://webrankpage.com/api/v1/website-uptime/594/checks', {
headers: {
Authorization: `Bearer ${process.env.WEBRANKPAGE_KEY}`,
},
});
const data = await response.json();
console.log(data);import requests
response = requests.get(
'https://webrankpage.com/api/v1/website-uptime/594/checks',
headers={'Authorization': 'Bearer wrp_live_8fKp2mQx9tR4vN7c'},
)
print(response.json())require 'net/http'
require 'json'
uri = URI('https://webrankpage.com/api/v1/website-uptime/594/checks')
request = Net::HTTP::Get.new(uri)
request['Authorization'] = 'Bearer wrp_live_8fKp2mQx9tR4vN7c'
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) do |http|
http.request(request)
end
puts JSON.parse(response.body)package main
import (
"encoding/json"
"fmt"
"net/http"
)
func main() {
req, _ := http.NewRequest("GET", "https://webrankpage.com/api/v1/website-uptime/594/checks", nil)
req.Header.Set("Authorization", "Bearer wrp_live_8fKp2mQx9tR4vN7c")
res, err := http.DefaultClient.Do(req)
if err != nil {
panic(err)
}
defer res.Body.Close()
var data map[string]interface{}
json.NewDecoder(res.Body).Decode(&data)
fmt.Println(data)
}Response
{
"checks": [
{
"up": true,
"status": 200,
"response_ms": 214,
"checked_at": "2026-09-25T04:37:13+00:00"
}
]
}GET /website-uptime/{id}/incidents
List incidents
Periods where the URL was unreachable, with how long each lasted.
Request
curl "https://webrankpage.com/api/v1/website-uptime/594/incidents" \
-H "Authorization: Bearer wrp_live_8fKp2mQx9tR4vN7c"<?php
$ch = curl_init('https://webrankpage.com/api/v1/website-uptime/594/incidents');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
'Authorization: Bearer wrp_live_8fKp2mQx9tR4vN7c',
],
]);
$response = json_decode(curl_exec($ch), true);
curl_close($ch);
print_r($response);// Node 18+, or any server-side runtime. Never in browser code:
// an API key in a page is readable by anyone who opens it.
const response = await fetch('https://webrankpage.com/api/v1/website-uptime/594/incidents', {
headers: {
Authorization: `Bearer ${process.env.WEBRANKPAGE_KEY}`,
},
});
const data = await response.json();
console.log(data);import requests
response = requests.get(
'https://webrankpage.com/api/v1/website-uptime/594/incidents',
headers={'Authorization': 'Bearer wrp_live_8fKp2mQx9tR4vN7c'},
)
print(response.json())require 'net/http'
require 'json'
uri = URI('https://webrankpage.com/api/v1/website-uptime/594/incidents')
request = Net::HTTP::Get.new(uri)
request['Authorization'] = 'Bearer wrp_live_8fKp2mQx9tR4vN7c'
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) do |http|
http.request(request)
end
puts JSON.parse(response.body)package main
import (
"encoding/json"
"fmt"
"net/http"
)
func main() {
req, _ := http.NewRequest("GET", "https://webrankpage.com/api/v1/website-uptime/594/incidents", nil)
req.Header.Set("Authorization", "Bearer wrp_live_8fKp2mQx9tR4vN7c")
res, err := http.DefaultClient.Do(req)
if err != nil {
panic(err)
}
defer res.Body.Close()
var data map[string]interface{}
json.NewDecoder(res.Body).Decode(&data)
fmt.Println(data)
}Response
{
"incidents": [
{
"started_at": "2026-09-20T02:11:00+00:00",
"ended_at": "2026-09-20T02:26:00+00:00",
"minutes": 15,
"reason": "Connection timed out"
}
]
}