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.