curl --request GET \
--url https://api.phare.io/uptime/monitors/{monitorId}/report \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.phare.io/uptime/monitors/{monitorId}/report"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.phare.io/uptime/monitors/{monitorId}/report', 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.phare.io/uptime/monitors/{monitorId}/report",
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.phare.io/uptime/monitors/{monitorId}/report"
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.phare.io/uptime/monitors/{monitorId}/report")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.phare.io/uptime/monitors/{monitorId}/report")
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": 12,
"name": "Website",
"incident_count": 2,
"downtime": 1500,
"availability": 99.944,
"mttr": 750,
"mtbf": 43200,
"highest_incident_impact": "major_outage",
"incidents": [
{
"impact": "unknown",
"title": "Service is not working as expected",
"exclude_from_downtime": false,
"monitors": [
1,
2,
3
],
"id": 1,
"project_id": 1,
"type": "monitor",
"slug": "APP-123",
"state": "unknown",
"status": "ongoing",
"description": "The server answered with an unexpected status code: 503.",
"incident_at": "2023-11-07T05:31:56Z",
"recovery_at": "2023-11-07T05:31:56Z",
"tags": [
"environment:production"
],
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z"
}
]
}{
"message": "Unauthenticated."
}{
"message": "The platform:write permission is required to perform this action."
}{
"message": "Record not found."
}{
"message": "<string>",
"errors": {
"key": [
"The key field is required"
]
}
}Get a monitor report
Get uptime statistics for a single monitor by ID in the selected time window of up to 1 year
curl --request GET \
--url https://api.phare.io/uptime/monitors/{monitorId}/report \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.phare.io/uptime/monitors/{monitorId}/report"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.phare.io/uptime/monitors/{monitorId}/report', 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.phare.io/uptime/monitors/{monitorId}/report",
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.phare.io/uptime/monitors/{monitorId}/report"
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.phare.io/uptime/monitors/{monitorId}/report")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.phare.io/uptime/monitors/{monitorId}/report")
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": 12,
"name": "Website",
"incident_count": 2,
"downtime": 1500,
"availability": 99.944,
"mttr": 750,
"mtbf": 43200,
"highest_incident_impact": "major_outage",
"incidents": [
{
"impact": "unknown",
"title": "Service is not working as expected",
"exclude_from_downtime": false,
"monitors": [
1,
2,
3
],
"id": 1,
"project_id": 1,
"type": "monitor",
"slug": "APP-123",
"state": "unknown",
"status": "ongoing",
"description": "The server answered with an unexpected status code: 503.",
"incident_at": "2023-11-07T05:31:56Z",
"recovery_at": "2023-11-07T05:31:56Z",
"tags": [
"environment:production"
],
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z"
}
]
}{
"message": "Unauthenticated."
}{
"message": "The platform:write permission is required to perform this action."
}{
"message": "Record not found."
}{
"message": "<string>",
"errors": {
"key": [
"The key field is required"
]
}
}Authorizations
Use a user token to access authenticated routes. The token must be specified in the Authorization HTTP header with the following format 'Authorization: Bearer '.
Headers
A project header is required when using an organization-scoped API key.
1
A project header is required when using an organization-scoped API key.
"luminous-guiding-tower"
Path Parameters
ID of the monitor to report on
Query Parameters
Start of the reporting window, defaults to 30 days ago. Must be in the past, required when to is provided.
"2026-04-01T00:00:00Z"
End of the reporting window, defaults to now. Must be after from and not in the future, required when from is provided.
"2026-04-30T23:59:59Z"
Response
Success, monitor report retrieved
Monitor ID
12
Monitor name
"Website"
Number of incidents affecting this monitor in the selected range
2
Total downtime for this monitor in seconds
1500
Availability for this monitor in the selected range, as a percentage
99.944
Mean time to recovery (MTTR) for this monitor, in seconds
750
Mean time between failures (MTBF) for this monitor, in seconds
43200
Highest impact level observed for this monitor in the selected range
unknown, operational, maintenance, degraded_performance, partial_outage, major_outage "major_outage"
Incidents that affected this monitor in the selected range
Show child attributes
Show child attributes
Was this page helpful?