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. |