Skip to main content
POST
/
monitors
Create monitor
curl --request POST \
  --url https://api.dnsradar.dev/monitors \
  --header 'Content-Type: application/json' \
  --header 'X-Api-Key: <api-key>' \
  --data '
{
  "record_type": "A",
  "expected_value": [
    "192.168.1.1"
  ]
}
'
{
  "id": "mon_abc123...",
  "created": "2023-11-07T05:31:56Z",
  "domain": "example.com",
  "subdomain": "www",
  "record_type": "A",
  "expected_value": [
    "192.168.1.1"
  ],
  "current_value": [
    "192.168.1.1"
  ],
  "is_exact_match": true,
  "state": "UNSET",
  "incidence_count": 123,
  "last_checked": "2023-11-07T05:31:56Z",
  "is_active": true,
  "notify": "immediately"
}
Please note that the free plan limited to 50 total monitors.
If you plan to add many monitors, consider using the bulk endpoint /monitors/bulk instead.

Authorizations

X-Api-Key
string
header
required

API key used to authenticate yourself on DNSRadar. Obtain your API key from your DNSRadar dashboard.

Body

application/json
record_type
enum<string>
required
Available options:
A,
AAAA,
CNAME,
MX,
TXT,
NS,
PTR,
SPF,
CAA
expected_value
required

Expected DNS value(s). Can be a string or array (max 10 values, each max 1000 chars)

Example:
["192.168.1.1"]
domain
string

The domain name. Required if full_domain is not provided.

Maximum string length: 255
Example:

"example.com"

subdomain
string

Subdomain (empty string for apex domain). Used with domain. Ignored if full_domain is provided.

Maximum string length: 255
Example:

"www"

full_domain
string

Full domain including subdomain (e.g., 'www.example.com'). When provided, domain and subdomain are extracted automatically. Use this OR domain+subdomain, not both.

Maximum string length: 512
Example:

"dkim20260101._domainkey.example.com"

is_exact_match
boolean
default:true

If true, the DNS value must match exactly. If false, additional values beyond expected_value are allowed (useful for DNS records that may have multiple values).

is_active
boolean
default:true

Whether the monitor is active and should be checked. Set to false to pause monitoring.

group
string

Group slug to assign the monitor to. If the group doesn't exist, it will be created automatically. If not provided, the monitor will be assigned to the default group.

notify
enum<string>
default:immediately

When to start sending webhook notifications. 'immediately' triggers events from first check, 'on_success' starts after monitor enters valid state, 'after_success' starts after first transition from valid to another state.

Available options:
immediately,
on_success,
after_success

Response

Monitor created

DNS monitoring configuration

id
string

Monitor identifier with 'mon_' prefix

Example:

"mon_abc123..."

created
string<date-time>

Monitor creation datetime in ISO 8601 format

domain
string

Domain name to monitor

Example:

"example.com"

subdomain
string

Subdomain to monitor (empty string for apex)

Example:

"www"

record_type
enum<string>

DNS record type to monitor

Available options:
A,
AAAA,
CNAME,
MX,
TXT,
NS,
PTR,
SPF,
CAA
expected_value
string[]

Expected DNS record values (up to 10)

Example:
["192.168.1.1"]
current_value
string[] | null

Current DNS record values

Example:
["192.168.1.1"]
is_exact_match
boolean

If set to false, special rules applies depending on the record_type. See documentation for details.

state
enum<string> | null

Current monitoring state

Available options:
UNSET,
VALID,
INVALID,
TIMEOUT,
MISMATCH,
NOT_FOUND,
NO_DATA,
BAD_SETUP
incidence_count
integer

Number of incidents/changes detected

last_checked
string<date-time> | null

Datetime of the last check in ISO 8601 format

is_active
boolean

Whether monitoring is active

notify
enum<string>

Notification timing: 'immediately' notifies as soon as the value changes, 'on_success' notifies only when the value becomes valid, 'after_success' notifies only when the value goes from valid to invalid

Available options:
immediately,
on_success,
after_success