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

# CreateMonitorRequest data model

The CreateMonitorRequest shape in the Visual Sentinel REST API.

## Fields

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `name` | string | Yes | Display name. Min length 1, max length 200. |
| `url` | string (uri) | Yes | Address to check. HTTP, HTTPS, KEYWORD, API and GRAPHQL monitors take a full http:// or https:// address. TCP and PORT take host:port, UDP takes udp://host:port, WEBSOCKET takes ws:// or wss://, and PING, DNS and SSL take a host name. Spaces are not allowed. Max length 2048. |
| `type` | [MonitorType](https://docs.visualsentinel.com/reference/models/monitor-type.md) | No | Monitor type. Defaults to HTTPS. |
| `checkInterval` | integer | No | Seconds between uptime checks. On create, a value below your plan minimum is raised to the minimum. Default: `300`. Minimum 60, maximum 86400. |
| `timeout` | integer | No | Request timeout in milliseconds. Default: `30000`. Minimum 1000, maximum 120000. |
| `maxResponseTime` | integer | No | Responses slower than this many milliseconds count as slow. Default: `5000`. Minimum 100, maximum 60000. |
| `enabled` | boolean | No | Whether the monitor is checked. Send false to pause it and true to resume it. Default: `true`. |
| `description` | string or null | No | Free-text notes. Max length 10000. |
| `tags` | array of string | No | Tags for grouping and filtering. Status page groups can follow tags. Default: `[]`. Max items 50. |
| `locations` | array of string | No | Uptime check regions: EU, US and ASIA. Only HTTP, HTTPS, KEYWORD, API and GRAPHQL monitors can use US or ASIA; other types run from EU and another region returns 400 `LOCATION_UNSUPPORTED_FOR_TYPE`. Unknown regions return 400 `INVALID_LOCATION`; a region outside your plan returns 403 `LOCATION_RESTRICTED`. Asia Pacific is enabled per workspace during its rollout; call GET /api/monitoring/regions first. When this workspace cannot use ASIA the request fails with 400 `REGION_UNAVAILABLE`. Older spellings such as eu-west-1 are accepted and stored as the region code. Items are one of: `EU`, `US`, `ASIA`. Default: `["EU"]`. Max items 10. |
| `visualRegion` | string or null | No | Where screenshots for visual checks are taken: EU (the default, stored as null) or ASIA. Asia Pacific is enabled per workspace during its rollout; call GET /api/monitoring/regions first. When this workspace cannot use ASIA the request fails with 400 `REGION_UNAVAILABLE`. Changing the region starts a fresh baseline. One of: `EU`, `ASIA`, `null`. |
| `visualEnabled` | boolean | No | Visual change detection (screenshots). On create, when omitted, it is turned on for HTTP and HTTPS monitors on plans that include visual monitoring. Needs a plan with visual monitoring (403 `FEATURE_RESTRICTED`) and a free visual slot (403 `LIMIT_EXCEEDED`). |
| `serviceDependencySlug` | string or null | No | Create a service monitor for a provider from GET /api/dependencies. The catalog sets the address, so `url` can be any placeholder. Returns 409 `DEPENDENCY_EXISTS` when that service is already monitored. Min length 1, max length 100. |
| `method` | string or null | No | HTTP method for HTTP-family monitors. One of: `GET`, `POST`, `PUT`, `PATCH`, `DELETE`, `HEAD`, `QUERY`, `OPTIONS`, `null`. |
| `headers` | map of string | No | Request headers as name and value pairs (up to 16 KB). |
| `body` | string or null | No | Request body for POST, PUT, PATCH and QUERY checks. Max length 65536. |
| `expectedStatus` | array of integer | No | Status codes that count as up. |
| `followRedirects` | boolean | No | Follow redirects. |
| `expectedBody` | string or null | No | Text the response must contain. Max length 65536. |
| `authType` | string or null | No | Authentication for the checked address: none, basic, bearer or apikey. |
| `authConfig` | object | No | Credentials for `authType`, for example `{ "username": "...", "password": "..." }` or `{ "token": "..." }` (up to 8 KB). |
| `sslCheck` | boolean | No | Certificate expiry and validity monitoring. Needs a plan with SSL monitoring. |
| `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`. |
| `sslDaysBefore` | number | No | Older single reminder threshold in days. Prefer `sslAlertDays`. |
| `sslAlertDays` | array of integer | No | Days before certificate expiry to send reminders. |
| `domainExpiryEnabled` | boolean | No | Domain registration expiry monitoring for this monitor's registrable domain. Available on every plan. Defaults to true on create. Default: `true`. |
| `domainAlertDays` | array of integer | No | Days-before-expiry reminder tiers. Defaults to [50, 13, 3, 1] on create. Items are one of: `50`, `30`, `20`, `13`, `6`, `3`, `1`. Default: `[50,13,3,1]`. Min items 1. |
| `alertThreshold` | number | No | Consecutive failed checks before an alert is sent. |
| `slowAlertThreshold` | number | No | Consecutive slow responses before a slow-response alert. |
| `alertDelay` | integer | No | Seconds to wait after the threshold is met before alerting. Minimum 0. |
| `reportEnabled` | boolean | No | Scheduled client report email for this monitor. Needs the Business plan or higher (403). |
| `reportEmail` | string or null | No | Report recipient. Max length 320. |
| `reportFrequency` | string | No | Report schedule. One of: `weekly`, `biweekly`, `monthly`, `both`, `all`. |
| `notificationRepeatInterval` | integer | No | Minutes until a reminder while a problem continues, then one reminder a day. 0 sends no reminders. Default: `360`. Minimum 0, maximum 1440. |
| `performanceThresholds` | object | No | Performance budgets in milliseconds (`responseTime`, `ttfb`, `fcp`, `lcp`) and `cls`. |
| `performanceThresholds.responseTime` | integer | No |   |
| `performanceThresholds.ttfb` | integer | No |   |
| `performanceThresholds.fcp` | integer | No |   |
| `performanceThresholds.lcp` | integer | No |   |
| `performanceThresholds.cls` | number | No |   |
| `visualConfig` | object | No | Visual check settings: `threshold` (percent of changed pixels that counts as a change, 0 to 100; when omitted, 5 percent applies, the same as the Add monitor form in the app), `checkInterval` (seconds, at least 900), `viewport` `{ width, height }`, `fullPage`, `excludeSelectors`, video and GIF handling, and `auth` for pages behind a login. Up to 16 KB. |
| `dnsEnabled` | boolean | No | DNS record change monitoring. On create, when omitted, it is turned on for HTTP, HTTPS and DNS monitors on plans that include DNS monitoring, watching A, AAAA, MX, NS and TXT records unless `dnsRecords` names others. Needs a plan with DNS monitoring (403 `FEATURE_RESTRICTED`). |
| `dnsRecords` | map of boolean | No | DNS record types to watch, as `{ "A": true, "MX": true }`. |
| `performanceEnabled` | boolean | No | Daily phone speed test. Needs a plan with performance monitoring. |
| `keywordConfig` | object | No | Keyword checks on the response: `mustContain` and `mustNotContain` lists, `caseSensitive`, and `enabled`. |
| `keywordConfig.enabled` | boolean | No |   |
| `keywordConfig.mustContain` | array of string | No |   |
| `keywordConfig.mustNotContain` | array of string | No |   |
| `keywordConfig.caseSensitive` | boolean | No |   |
| `freshnessConfig` | object | No | Content freshness check: alert when a date on the page is older than `maxAgeHours`. |
| `contentConfig` | object | No | Content change detection: `selectors` (CSS selectors to include or exclude), `jsRendering`, and optional `conditions`. Needs a plan with content monitoring. |
| `apiConfig` | [ApiMonitorConfig](https://docs.visualsentinel.com/reference/models/api-monitor-config.md) | No | API and GRAPHQL monitors: response checks (`assertions`), `responseSlo`, `responseFormat`, response body storage and, for GRAPHQL, the `graphql` query. |

## Used by

- [Create monitor](https://docs.visualsentinel.com/reference/monitors.md#create-monitor): `POST /api/monitors`

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