Docs

Get a monitor

GET /api/v1/monitors/{id}

One monitor, by the id from List monitors. A monitor of another team, or one on a deleted target, returns 404.

Example

cURL

curl http://pulsekeeper.io/api/v1/monitors/a81c27e05f3d9b64 \
  -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')],
]);

$monitor = json_decode($client->get('monitors/a81c27e05f3d9b64')->getBody(), true)['data'];

JavaScript

const response = await fetch('http://pulsekeeper.io/api/v1/monitors/a81c27e05f3d9b64', {
  headers: { Authorization: `Bearer ${process.env.PULSEKEEPER_TOKEN}` },
});

const { data: monitor } = await response.json();

Go

req, _ := http.NewRequest("GET", "http://pulsekeeper.io/api/v1/monitors/a81c27e05f3d9b64", 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 map[string]any `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"
  }
}

Fields

Field Meaning
type http, api, port, ping or heartbeat. See monitor types.
name How the monitor is labelled in the app: HTTP, TCP 5432, GET /health, or the name you gave a heartbeat.
target The hostname or IP address; null for heartbeats.
client The client the target belongs to; null for heartbeats.
state Right now: ok, investigating (a suspicion being checked from other locations, not an outage), down, degraded, never_connected (has never answered, usually a typo or a firewall) or unknown.
paused true when the monitor or its whole target is paused. A paused monitor is not checked.
first_ok_at The first successful check. Availability counts from here; null if it never answered.