# Get a monitor — API reference

> Returns one monitor.

Source: https://upfour.io/docs/api/monitors/get-a-monitor

[Developers](https://upfour.io/docs/api.md)/[Monitors](https://upfour.io/docs/api/monitors.md)

Returns one monitor.

GET https://app.upfour.io/v1/monitors/{monitorID}

scope monitor.read stable returns 200

## Parameters

| Field | Type | Description |
| --- | --- | --- |
| `monitorID` required | uuid | path parameter |

## Returns

A successful request returns `200` with application/json.

Response fields 1 top-level fields

| Field | Type | Description |
| --- | --- | --- |
| `data` | Monitor | |
| Monitor · 70 fields FieldTypeDescription `alert_type` string one of`status` `keyword` `keyword_absence` `expected_status_code` `auth_username` string `capture_on_incident_open` boolean `confirmation_period` integer `created_at` string (date-time) `degraded_alert_enabled` boolean `degraded_threshold_ms` integer  · nullable `domain_expiry_alert_days` integer  · nullable `escalation_policy_id` uuid  · nullable `expected_status_code` integer  · nullable `feature_pause_reasons` string[]  · nullable `follow_redirects` boolean `has_auth_password` boolean `has_request_headers` boolean `http_method` string `id` uuid `interval_seconds` integer `ip_version` string one of`""` `4` `6` `is_degraded` boolean `is_pending` boolean `keep_cookies` boolean `keyword` string `keyword_case_insensitive` boolean `maintenance_from` string  · nullable `maintenance_timezone` string `maintenance_to` string  · nullable `maintenance_weekdays` string[]  · nullable one of`mon` `tue` `wed` `thu` `fri` `sat` `sun` `monitor_type` string one of`http` `tcp` `ping` `dns` `name` string `next_check_at` string (date-time)  · nullable `notification_mode` string one of`quiet` `immediate` `notify_recovery` boolean `pronounceable_name` string `proxy_host` string `proxy_port` integer  · nullable `public_name` string `recovery_period` integer `regions` string[]  · nullable one of`eu` `us` `asia` `au` `default` `request_body` string `request_headers` any[]  · nullable Always empty: header values are never returned. has_request_headers says whether the monitor sends any. `request_timeout_s` integer `ssl_expiry_alert_days` integer  · nullable `ssl_verification` boolean `state` string one of`UP` `DOWN` `PAUSED` `url` string `user_id` uuid `badge_token` string `client_id` uuid `dns_expected` string `dns_query` string `dns_server` string `dns_type` string one of`A` `AAAA` `MX` `CNAME` `TXT` `NS` `freshness_timeout_seconds` integer `last_checked_at` string (date-time) `last_result_at` string (date-time) `last_state_change_at` string (date-time) `latency_p50_ms` integer `latency_p95_ms` integer `latency_samples_24h` integer `latest_result_successful` boolean `monitor_group_id` uuid `paused_until` string (date-time) `recent_incidents` MonitorRecentIncident[] Each item · 5 fields FieldTypeDescription `id` uuid `resolved_at` string (date-time)  · nullable `started_at` string (date-time) `status` string `resolved_by_type` string `tcp_host` string `tcp_port` integer | | |

## Errors

Only the errors this operation can return. Every error uses the [same envelope](https://upfour.io/docs/api/responses.md).

| Status | Code | Meaning |
| --- | --- | --- |
| 400 | [bad_request](https://upfour.io/docs/api/errors#code-bad_request) | The request is malformed or fails validation. |
| 404 | [not_found](https://upfour.io/docs/api/errors#code-not_found) | The requested resource does not exist or is outside the caller's scope. |

Every call can also return `unauthorized` (401), `rate_limit_exceeded` (429) or `internal_error` (500 / 502). See [Responses and errors](https://upfour.io/docs/api/responses.md).

[PreviousCreate a monitor](https://upfour.io/docs/api/monitors/create-a-monitor.md) [NextUpdate a monitor](https://upfour.io/docs/api/monitors/update-a-monitor.md)

## Request

### cURL

```bash
curl -s "https://app.upfour.io/v1/monitors/00000000-0000-4000-8000-000000000001" \
  -H "Authorization: Bearer $UP4_API_KEY"
```

### JavaScript

```javascript
const res = await fetch("https://app.upfour.io/v1/monitors/00000000-0000-4000-8000-000000000001", {
  headers: {
    Authorization: `Bearer ${process.env.UP4_API_KEY}`,
  },
});
console.log(res.status, await res.json());
```

### Python

```python
import os
import requests

res = requests.get(
    "https://app.upfour.io/v1/monitors/00000000-0000-4000-8000-000000000001",
    headers={"Authorization": f"Bearer {os.environ['UP4_API_KEY']}"},
)
print(res.status_code, res.json())
```

### Go

```go
package main

import (
	"fmt"
	"io"
	"net/http"
	"os"
)

func main() {
	req, _ := http.NewRequest("GET", "https://app.upfour.io/v1/monitors/00000000-0000-4000-8000-000000000001", nil)
	req.Header.Set("Authorization", "Bearer "+os.Getenv("UP4_API_KEY"))
	res, err := http.DefaultClient.Do(req)
	if err != nil {
		panic(err)
	}
	defer res.Body.Close()
	out, _ := io.ReadAll(res.Body)
	fmt.Println(res.StatusCode, string(out))
}
```

### PHP

```php
<?php
$ch = curl_init("https://app.upfour.io/v1/monitors/00000000-0000-4000-8000-000000000001");
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER => [
        "Authorization: Bearer " . getenv("UP4_API_KEY"),
    ],
]);
$response = curl_exec($ch);
echo curl_getinfo($ch, CURLINFO_RESPONSE_CODE), " ", $response, "\n";
curl_close($ch);
```

## Response

### 200

```json
{
  "data": {
    "alert_type": "status",
    "auth_username": "",
    "capture_on_incident_open": false,
    "confirmation_period": 0,
    "created_at": "2026-10-27T09:00:00Z",
    "degraded_alert_enabled": false,
    "degraded_threshold_ms": null,
    "dns_type": "A",
    "domain_expiry_alert_days": null,
    "escalation_policy_id": null,
    "expected_status_code": null,
    "feature_pause_reasons": [],
    "follow_redirects": true,
    "freshness_timeout_seconds": 120,
    "has_auth_password": false,
    "has_request_headers": false,
    "http_method": "HEAD",
    "id": "00000000-0000-4000-8000-000000000001",
    "interval_seconds": 60,
    "ip_version": "",
    "is_degraded": false,
    "is_pending": false,
    "keep_cookies": false,
    "keyword": "",
    "keyword_case_insensitive": true,
    "last_result_at": "2026-10-27T08:50:00Z",
    "latest_result_successful": true,
    "maintenance_from": null,
    "maintenance_timezone": "UTC",
    "maintenance_to": null,
    "maintenance_weekdays": [
      "mon",
      "tue",
      "wed",
      "thu",
      "fri",
      "sat",
      "sun"
    ],
    "monitor_type": "http",
    "name": "Marketing website",
    "next_check_at": "2026-10-27T09:00:00Z",
    "notification_mode": "immediate",
    "notify_recovery": true,
    "pronounceable_name": "",
    "proxy_host": "",
    "proxy_port": null,
    "public_name": "",
    "recovery_period": 0,
    "regions": [
      "eu"
    ],
    "request_body": "",
    "request_headers": [],
    "request_timeout_s": 30,
    "ssl_expiry_alert_days": null,
    "ssl_verification": true,
    "state": "UP",
    "url": "https://example.com",
    "user_id": "00000000-0000-4000-8000-000000000002"
  }
}
```

### 400

```json
{
  "error": {
    "code": "bad_request",
    "message": "The request is malformed or fails validation.",
    "request_id": "req_…"
  }
}
```

### 404

```json
{
  "error": {
    "code": "not_found",
    "message": "The requested resource does not exist or is outside the caller's scope.",
    "request_id": "req_…"
  }
}
```
