Docs
List monitors
GET /api/v1/monitors
Every monitor of your team: websites, TCP ports, ping targets, API endpoints and heartbeats. SSL, domain and DNS checks belong to a target and are not listed separately. Paused monitors are included, with paused: true.
Parameters
| Parameter | Meaning |
|---|---|
client |
Only the monitors of one client (its ID, the client.id of a monitor). |
Example
cURL
curl http://pulsekeeper.io/api/v1/monitors \
-H "Authorization: Bearer $PULSEKEEPER_TOKEN"
PHP
<?php
// composer require guzzlehttp/guzzle
$client = new GuzzleHttp\Client([
'base_uri' => 'http://pulsekeeper.io/api/v1/',
'headers' => ['Authorization' => 'Bearer '.getenv('PULSEKEEPER_TOKEN')],
]);
$monitors = json_decode($client->get('monitors')->getBody(), true)['data'];
// Monitors grouped by client, for one report per client.
$byClient = [];
foreach ($monitors as $monitor) {
$byClient[$monitor['client']['id'] ?? 'none'][] = $monitor;
}
JavaScript
const response = await fetch('http://pulsekeeper.io/api/v1/monitors', {
headers: { Authorization: `Bearer ${process.env.PULSEKEEPER_TOKEN}` },
});
const { data: monitors } = await response.json();
// Monitors grouped by client, for one report per client.
const byClient = Object.groupBy(monitors, (m) => m.client?.id ?? 'none');
Go
req, _ := http.NewRequest("GET", "http://pulsekeeper.io/api/v1/monitors", nil)
req.Header.Set("Authorization", "Bearer "+os.Getenv("PULSEKEEPER_TOKEN"))
res, err := http.DefaultClient.Do(req)
if err != nil {
log.Fatal(err)
}
defer res.Body.Close()
var body struct {
Data []struct {
ID string `json:"id"`
Name string `json:"name"`
Target *string `json:"target"`
State string `json:"state"`
} `json:"data"`
}
json.NewDecoder(res.Body).Decode(&body)
Response
{
"data": [
{
"id": "a81c27e05f3d9b64",
"type": "http",
"name": "HTTP",
"target": "shop.example.com",
"client": { "id": "c4e0b9a17d2f6385", "name": "Example Shop" },
"state": "ok",
"paused": false,
"first_ok_at": "2026-08-02T09:10:00Z",
"created_at": "2026-08-02T09:08:44Z"
},
{
"id": "5d07e9c2b18a4f36",
"type": "port",
"name": "TCP 5432",
"target": "db.example.com",
"client": { "id": "c4e0b9a17d2f6385", "name": "Example Shop" },
"state": "ok",
"paused": false,
"first_ok_at": "2026-08-02T09:12:30Z",
"created_at": "2026-08-02T09:11:02Z"
}
]
}
The fields are described under Get a monitor.