> For the complete documentation index, see [llms.txt](https://docs.visualsentinel.com/llms.txt)

# Monitor data model

The Monitor shape in the Visual Sentinel REST API.

## Fields

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `serviceDependencySlug` | string or null | No | For a monitor of a service you rely on: the service's slug (see GET /api/dependencies). Null for every other monitor. |
| `serviceDependencyComponents` | array of string | No | For a service monitor, the provider parts its alerts follow; empty follows everything. Returned by GET /api/monitors/{id}; change it with PATCH /api/dependencies/{slug}. |
| `id` | string (uuid) | No |   |
| `name` | string | No |   |
| `description` | string | No |   |
| `url` | string (uri) | No |   |
| `type` | string | No | Monitor type in lower case, for example `https`, `api` or `keyword`. |
| `status` | [MonitorStatus](https://docs.visualsentinel.com/reference/models/monitor-status.md) or [MonitorResponseStatus](https://docs.visualsentinel.com/reference/models/monitor-response-status.md) | No |   |
| `enabled` | boolean | No |   |
| `method` | [HTTPMethod](https://docs.visualsentinel.com/reference/models/http-method.md) | No |   |
| `checkInterval` | integer | No | Check interval in seconds |
| `timeout` | integer | No | Timeout in milliseconds |
| `uptime` | number | No | Uptime percentage |
| `uptime30d` | number or null | No | Uptime percentage over the last 30 UTC days. Null when no rated checks are available. |
| `pageSpeedError` | [PageSpeedFailure](https://docs.visualsentinel.com/reference/models/page-speed-failure.md) | No |   |
| `lastCheckedAt` | string (date-time) | No |   |
| `lastResponseTime` | integer or null | No | Most recent check latency in milliseconds. Null when the latest check has no latency. |
| `responseTime` | integer or null | No | Rolling 24-hour successful-check average in milliseconds, falling back to the latest latency for new monitors. |
| `avgResponseTime24h` | integer or null | No |   |
| `lastChecked` | string (date-time) or null (date-time) | No |   |
| `locations` | array of [CheckRegion](https://docs.visualsentinel.com/reference/models/check-region.md) | No | Uptime check regions. |
| `regionChecks` | array of object | No | Latest authoritative check per configured canonical region. An empty array means no regional evidence is available; clients must fall back to aggregate latency rather than inventing waiting states. |
| `regionChecks[].region` | string | Yes | One of: `EU`, `US`, `ASIA`. |
| `regionChecks[].status` | string | Yes |   |
| `regionChecks[].responseTime` | integer or null | Yes |   |
| `regionChecks[].checkedAt` | string (date-time) | Yes |   |
| `visualRegion` | string or null | No | Screenshot region. Null uses Europe. ASIA requires a healthy registered node and a plan with access to that region. Changing the region starts a fresh baseline. One of: `EU`, `ASIA`, `null`. |
| `visualEnabled` | boolean | No |   |
| `visualWafBlockedAt` | string (date-time) or null (date-time) | No | When visual (screenshot) checks were last turned away by the site's own bot protection. Null when screenshots are not blocked or visual checks are off. Uptime checks are not affected. Returned by the monitor list. |
| `visualWafVendor` | string or null | No | The bot protection product that blocked screenshots, when it was recognised (for example cloudflare or siteground). Null when unknown or not blocked. Returned by the monitor list. |
| `tags` | array of string | No |   |
| `createdAt` | string (date-time) | No |   |
| `updatedAt` | string (date-time) | No |   |
| `domainExpiryEnabled` | boolean | No | Domain registration expiry monitoring for this monitor's registrable domain. Available on every plan. Default: `true`. |
| `domainAlertDays` | array of integer | No | Days-before-expiry alert tiers. The 50-day tier provides time to review registrar terms, transfer locks, and renewal options before expiry. Items are one of: `50`, `30`, `20`, `13`, `6`, `3`, `1`. Default: `[50,13,3,1]`. |
| `domainExpiry` | object or null | No | Registration expiry summary for the monitor's registrable domain (null when the URL has no registrable domain, e.g. an IP address). |
| `domainExpiry.domain` | string | No |   |
| `domainExpiry.expiresAt` | string (date-time) or null (date-time) | No |   |
| `domainExpiry.daysRemaining` | integer or null | No |   |
| `domainExpiry.registrar` | string or null | No |   |
| `domainExpiry.state` | string | No | One of: `pending`, `ok`, `unsupported_tld`, `lookup_failed`, `not_found`. |
| `domainExpiry.lastCheckedAt` | string (date-time) or null (date-time) | No |   |
| `domainExpiry.enabled` | boolean | No |   |
| `otherAddress` | [OtherAddress](https://docs.visualsentinel.com/reference/models/other-address.md) | No |   |
| `checkOtherAddress` | boolean | No | Check the website’s www or bare-domain twin every 15 minutes without using a site slot. Ignored for other monitor types. Default: `true`. |
| `visualChange` | object or null | No | Returned by GET /api/monitors only: present for an enabled monitor whose status is `ui-changed`, otherwise null. The unreviewed page change: how much changed, since when, and the capture an approval would accept. `thumbUrl` is an authenticated preview that needs a browser session; API keys cannot load it. |
| `visualChange.kind` | string | No | One of: `visual_change`. |
| `visualChange.percent` | number or null | No |   |
| `visualChange.incidentId` | string or null | No |   |
| `visualChange.screenshotId` | string or null | No |   |
| `visualChange.visualTargetId` | string or null | No |   |
| `visualChange.thumbUrl` | string or null | No |   |
| `visualChange.since` | string (date-time) or null (date-time) | No |   |

## Used by

- [List monitors](https://docs.visualsentinel.com/reference/monitors.md#list-monitors): `GET /api/monitors`
- [Create monitor](https://docs.visualsentinel.com/reference/monitors.md#create-monitor): `POST /api/monitors`
- [Get monitor](https://docs.visualsentinel.com/reference/monitors.md#get-monitor): `GET /api/monitors/{id}`
- [Update monitor](https://docs.visualsentinel.com/reference/monitors.md#update-monitor): `PUT /api/monitors/{id}`
- [MonitorListResponse](https://docs.visualsentinel.com/reference/models/monitor-list-response.md) data model

Generated from the OpenAPI 3.1 specification at [https://docs.visualsentinel.com/openapi.json](https://docs.visualsentinel.com/openapi.json).
