Get component tree
curl --request GET \
--url https://api.getmonitor.io/api/v1/status-pages/{id}/components \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.getmonitor.io/api/v1/status-pages/{id}/components"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.getmonitor.io/api/v1/status-pages/{id}/components', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.getmonitor.io/api/v1/status-pages/{id}/components",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.getmonitor.io/api/v1/status-pages/{id}/components"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.getmonitor.io/api/v1/status-pages/{id}/components")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.getmonitor.io/api/v1/status-pages/{id}/components")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body[
{
"id": "maernrpmgkm39utf1dmzugt1",
"name": "Panel",
"groupId": null,
"sortOrder": 0,
"uptimePercentage": "100.00",
"currentStatus": "Operational",
"statusHistory": [
{
"tooltip": "Sep 26, 2026 - Uptime: 2843, Downtime: 0",
"status": "Operational",
"timestamp": "2026-09-26T00:00:00.000Z",
"uptimePercentage": 100,
"upCount": 2843,
"downCount": 0
},
{
"tooltip": "Sep 27, 2026 - Uptime: 1321, Downtime: 0",
"status": "Operational",
"timestamp": "2026-09-27T00:00:00.000Z",
"uptimePercentage": 100,
"upCount": 1321,
"downCount": 0
}
],
"lastChecked": "2026-09-27T14:22:10.001Z",
"updateInterval": 60000,
"defaultOpen": true,
"supportsDayDetails": true,
"type": "monitor"
},
{
"id": "zb1hnim6qalhi7z9m3butlb6",
"name": "Synthetics Testing",
"groupId": null,
"sortOrder": 0,
"description": null,
"startDate": "2026-08-05",
"displayUptime": false,
"currentStatus": "Operational",
"statusHistory": [],
"type": "static-component"
}
]{
"message": "Monitor not found",
"error": "Not Found",
"statusCode": 404
}Status Pages
Get component tree
The components shown on the page (groups, monitors and static components) with daily status history. Pages with groups return a tree of type: "group" nodes; pages without groups return a flat list.
Authentication: No authentication needed for public pages. Send a user session to read private pages of an organization you belong to.
GET
/
api
/
v1
/
status-pages
/
{id}
/
components
Get component tree
curl --request GET \
--url https://api.getmonitor.io/api/v1/status-pages/{id}/components \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.getmonitor.io/api/v1/status-pages/{id}/components"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.getmonitor.io/api/v1/status-pages/{id}/components', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.getmonitor.io/api/v1/status-pages/{id}/components",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.getmonitor.io/api/v1/status-pages/{id}/components"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.getmonitor.io/api/v1/status-pages/{id}/components")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.getmonitor.io/api/v1/status-pages/{id}/components")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body[
{
"id": "maernrpmgkm39utf1dmzugt1",
"name": "Panel",
"groupId": null,
"sortOrder": 0,
"uptimePercentage": "100.00",
"currentStatus": "Operational",
"statusHistory": [
{
"tooltip": "Sep 26, 2026 - Uptime: 2843, Downtime: 0",
"status": "Operational",
"timestamp": "2026-09-26T00:00:00.000Z",
"uptimePercentage": 100,
"upCount": 2843,
"downCount": 0
},
{
"tooltip": "Sep 27, 2026 - Uptime: 1321, Downtime: 0",
"status": "Operational",
"timestamp": "2026-09-27T00:00:00.000Z",
"uptimePercentage": 100,
"upCount": 1321,
"downCount": 0
}
],
"lastChecked": "2026-09-27T14:22:10.001Z",
"updateInterval": 60000,
"defaultOpen": true,
"supportsDayDetails": true,
"type": "monitor"
},
{
"id": "zb1hnim6qalhi7z9m3butlb6",
"name": "Synthetics Testing",
"groupId": null,
"sortOrder": 0,
"description": null,
"startDate": "2026-08-05",
"displayUptime": false,
"currentStatus": "Operational",
"statusHistory": [],
"type": "static-component"
}
]{
"message": "Monitor not found",
"error": "Not Found",
"statusCode": 404
}Authorizations
Short-lived user session token issued to the GetMonitor panel. Endpoints marked "session only" cannot be called with an API key.
Path Parameters
Status page ID.
Query Parameters
Days of uptime history, 1 to 90. Default 60. Values outside the range are clamped.
Required range:
1 <= x <= 90Response
OK
Show child attributes
Show child attributes
Show child attributes
Show child attributes