List monitoring runs
curl --request GET \
--url https://api.godiligent.ai/monitoring-executions \
--header 'X-API-KEY: <api-key>'import requests
url = "https://api.godiligent.ai/monitoring-executions"
headers = {"X-API-KEY": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-API-KEY': '<api-key>'}};
fetch('https://api.godiligent.ai/monitoring-executions', 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.godiligent.ai/monitoring-executions",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"X-API-KEY: <api-key>"
],
]);
$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.godiligent.ai/monitoring-executions"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-API-KEY", "<api-key>")
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.godiligent.ai/monitoring-executions")
.header("X-API-KEY", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.godiligent.ai/monitoring-executions")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-API-KEY"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"items": [
{
"id": "d6e3b214-30b1-4401-a1b8-a1bd3c6a84e4",
"monitoring_id": "8f1e8e3a-4f4f-4f4f-8f4f-4f4f4f4f4f4f",
"website": "https://example.com",
"execution_time": "2026-05-21T12:34:56.000Z",
"external_id": "ref-123",
"alert_count": 0
}
],
"next_token": "eyJjdXN0b21lcklkIjp7IlMiOiI2OWRmNWQ4MS0yYjc0LTRmNDItYTQwMS0xM2ViOTZiYTA2MTkifSwiZXhlY3V0aW9uVGltZSI6eyJTIjoiMjAyNS0wNy0zMVQxMjowMTozMC44OTFaIn19"
}{
"errors": [
{
"path": [
"<string>"
],
"message": "<string>",
"code": "<string>"
}
]
}Monitoring
List Monitoring Runs
Retrieve a paginated list of monitoring runs (executions), regardless of whether they produced alerts.
GET
/
monitoring-executions
List monitoring runs
curl --request GET \
--url https://api.godiligent.ai/monitoring-executions \
--header 'X-API-KEY: <api-key>'import requests
url = "https://api.godiligent.ai/monitoring-executions"
headers = {"X-API-KEY": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-API-KEY': '<api-key>'}};
fetch('https://api.godiligent.ai/monitoring-executions', 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.godiligent.ai/monitoring-executions",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"X-API-KEY: <api-key>"
],
]);
$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.godiligent.ai/monitoring-executions"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-API-KEY", "<api-key>")
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.godiligent.ai/monitoring-executions")
.header("X-API-KEY", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.godiligent.ai/monitoring-executions")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-API-KEY"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"items": [
{
"id": "d6e3b214-30b1-4401-a1b8-a1bd3c6a84e4",
"monitoring_id": "8f1e8e3a-4f4f-4f4f-8f4f-4f4f4f4f4f4f",
"website": "https://example.com",
"execution_time": "2026-05-21T12:34:56.000Z",
"external_id": "ref-123",
"alert_count": 0
}
],
"next_token": "eyJjdXN0b21lcklkIjp7IlMiOiI2OWRmNWQ4MS0yYjc0LTRmNDItYTQwMS0xM2ViOTZiYTA2MTkifSwiZXhlY3V0aW9uVGltZSI6eyJTIjoiMjAyNS0wNy0zMVQxMjowMTozMC44OTFaIn19"
}{
"errors": [
{
"path": [
"<string>"
],
"message": "<string>",
"code": "<string>"
}
]
}Overview
Retrieve a paginated list of monitoring runs for the authenticated customer. A “run” is one execution of a monitoring, returned whether or not it produced alerts — useful for reconciliation against your own records. Queries are bounded to a maximum 60-day window per request. If you do not passfrom and to, the endpoint returns the last 30 days.
Request
- Method:
GET - Path:
/monitoring-executions - Query Parameters: All optional
Query Parameters
from(ISO 8601 string, optional) - Start of the window. Defaults to 30 days beforeto.to(ISO 8601 string, optional) - End of the window. Defaults to now.page_size(integer, optional) - Number of runs per page- Default: 10
- Range: 1-100
next_token(string, optional) - Pagination token for next page (Base64-encoded)
Example Request
GET /monitoring-executions?from=2026-04-01T00:00:00Z&to=2026-04-30T00:00:00Z&page_size=50
Success Response
- Status: 200 OK
Response Body
items(array) - List of monitoring run summariesid(string) - Unique identifier for the runmonitoring_id(string) - ID of the monitoring this run belongs towebsite(string) - Website that was monitoredexecution_time(string) - ISO 8601 timestamp of when the run was executedexternal_id(string|null) - External reference ID (null if not set)alert_count(integer) - Number of alerts produced by the run (0 if none)
next_token(string|null) - Token for next page (null if no more pages)
Example Response
{
"items": [
{
"id": "d6e3b214-30b1-4401-a1b8-a1bd3c6a84e4",
"monitoring_id": "8f1e8e3a-4f4f-4f4f-8f4f-4f4f4f4f4f4f",
"website": "https://example.com",
"execution_time": "2026-05-21T12:34:56.000Z",
"external_id": "ref-123",
"alert_count": 0
}
],
"next_token": null
}
Error Handling
- 400 Bad Request
- Invalid
fromorto(must be ISO 8601 date-time) fromis afterto- Date range exceeds 60 days
- Invalid
page_size - Example:
{ "error": "Date range cannot exceed 60 days" }
- Invalid
- 401 Unauthorized
- Missing or invalid customer authentication
- 500 Internal Server Error
- Unexpected server error
Pagination
Cursor-based pagination with Base64-encoded tokens:- First request: Don’t include
next_token - Subsequent requests: Use the
next_tokenfrom the previous response - Last page:
next_tokenwill benull
Authorizations
Query Parameters
Start of the window (ISO 8601). Defaults to 30 days before to.
End of the window (ISO 8601). Defaults to now.
Number of runs per page (1-100, default 10)
Required range:
1 <= x <= 100Pagination token for next page (Base64-encoded)
⌘I