> ## Documentation Index
> Fetch the complete documentation index at: https://checkly-422f444a-auto-update-api-spec.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Create an DNS monitor

> Creates a new DNS monitor. Will return a `402` when you are over the limit of your plan.
    When using the `globalAlertSetting`, the `alertSetting` can be `null`



## OpenAPI

````yaml post /v1/checks/dns
openapi: 3.0.0
info:
  title: Checkly Public API
  version: v1
  description: >-
    These are the docs for the newly released Checkly Public API. If you have
    any questions, please do not hesitate to get in touch with us.
servers:
  - url: https://api.checklyhq.com
security:
  - Bearer: []
tags: []
paths:
  /v1/checks/dns:
    post:
      tags:
        - Checks
      summary: Create an DNS monitor
      description: >-
        Creates a new DNS monitor. Will return a `402` when you are over the
        limit of your plan.
            When using the `globalAlertSetting`, the `alertSetting` can be `null`
      operationId: postV1ChecksDns
      parameters:
        - schema:
            type: boolean
            description: >-
              Determines whether a new check will automatically be added as a
              subscriber to all existing alert channels when it gets created.
            default: true
          required: false
          description: >-
            Determines whether a new check will automatically be added as a
            subscriber to all existing alert channels when it gets created.
          name: autoAssignAlerts
          in: query
        - schema:
            type: string
            format: uuid
            description: >-
              Your Checkly account ID, you can find it at
              https://app.checklyhq.com/settings/account/general
          required: false
          description: >-
            Your Checkly account ID, you can find it at
            https://app.checklyhq.com/settings/account/general
          name: x-checkly-account
          in: header
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ChecksV1DnsMonitorCreate'
      responses:
        '201':
          description: Created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ChecksV1DnsMonitorMutationResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
        '402':
          description: Payment Required
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
        '429':
          description: Too Many Requests
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
components:
  schemas:
    ChecksV1DnsMonitorCreate:
      type: object
      properties:
        name:
          type: string
          minLength: 1
        activated:
          type: boolean
          default: true
        muted:
          type: boolean
          default: false
        doubleCheck:
          type: boolean
          default: true
        shouldFail:
          type: boolean
          default: false
        locations:
          type: array
          nullable: true
          items:
            type: string
            enum:
              - us-east-1
              - us-east-2
              - us-west-1
              - us-west-2
              - ca-central-1
              - sa-east-1
              - eu-west-1
              - eu-central-1
              - eu-west-2
              - eu-west-3
              - eu-north-1
              - eu-south-1
              - me-south-1
              - ap-southeast-1
              - ap-northeast-1
              - ap-east-1
              - ap-southeast-2
              - ap-southeast-3
              - ap-northeast-2
              - ap-northeast-3
              - ap-south-1
              - af-south-1
          default: []
        tags:
          type: array
          items:
            type: string
            minLength: 1
          default: []
        alertSettings:
          $ref: '#/components/schemas/ChecksV1AlertSettingsCreate'
        useGlobalAlertSettings:
          type: boolean
          default: true
        groupId:
          type: number
          nullable: true
          default: null
        groupOrder:
          type: number
          nullable: true
          minimum: 0
          default: null
        runtimeId:
          type: string
          nullable: true
          enum:
            - '2026.04'
            - '2025.04'
            - '2024.09'
            - '2024.02'
            - '2023.09'
            - '2023.02'
            - '2022.10'
            - null
          default: null
        alertChannelSubscriptions:
          type: array
          items:
            $ref: '#/components/schemas/ChecksV1AlertChannelSubscription'
        retryStrategy:
          type: object
          nullable: true
          properties:
            type:
              type: string
              enum:
                - FIXED
                - LINEAR
                - EXPONENTIAL
                - SINGLE_RETRY
            baseBackoffSeconds:
              type: number
              default: 60
            sameRegion:
              type: boolean
              default: true
            maxRetries:
              type: number
              minimum: 1
              maximum: 10
            maxDurationSeconds:
              type: number
              minimum: 0
              maximum: 600
            onlyOn:
              type: array
              items:
                type: string
                enum:
                  - NETWORK_ERROR
          required:
            - type
          additionalProperties: false
        triggerIncident:
          type: object
          nullable: true
          properties:
            serviceId:
              type: string
              minLength: 1
              format: uuid
            severity:
              type: string
              enum:
                - CRITICAL
                - MAJOR
                - MEDIUM
                - MINOR
            name:
              type: string
            description:
              type: string
            notifySubscribers:
              type: boolean
          required:
            - serviceId
            - severity
            - name
            - description
            - notifySubscribers
          additionalProperties: false
        runParallel:
          type: boolean
          default: false
        description:
          type: string
          nullable: true
          maxLength: 500
          default: null
        checkType:
          type: string
          enum:
            - DNS
          default: DNS
        frequency:
          type: integer
          enum:
            - 0
            - 1
            - 2
            - 5
            - 10
            - 15
            - 30
            - 60
            - 120
            - 180
            - 360
            - 720
            - 1440
          default: 10
        frequencyOffset:
          type: integer
          minimum: 1
        heartbeat:
          type: object
          nullable: true
          properties: {}
          additionalProperties:
            nullable: true
        script:
          type: string
          nullable: true
        scriptPath:
          type: string
          nullable: true
          minLength: 1
        sslCheckDomain:
          type: string
          nullable: true
        environmentVariables:
          type: array
          nullable: true
          items:
            $ref: '#/components/schemas/ChecksV1EnvironmentVariable'
          maxItems: 100
        setupSnippetId:
          type: number
          nullable: true
          default: null
        tearDownSnippetId:
          type: number
          nullable: true
          default: null
        localSetupScript:
          type: string
          nullable: true
          default: null
        localTearDownScript:
          type: string
          nullable: true
          default: null
        request:
          $ref: '#/components/schemas/ChecksV1DnsRequest'
        degradedResponseTime:
          type: number
          nullable: true
          minimum: 0
          maximum: 5000
          default: 500
        maxResponseTime:
          type: number
          nullable: true
          minimum: 0
          maximum: 5000
          default: 1000
        privateLocations:
          type: array
          nullable: true
          items:
            type: string
            minLength: 1
      required:
        - name
        - request
      additionalProperties: false
    ChecksV1DnsMonitorMutationResponse:
      type: object
      properties:
        name:
          type: string
          minLength: 1
        activated:
          type: boolean
          default: true
        muted:
          type: boolean
          default: false
        doubleCheck:
          type: boolean
          default: true
        shouldFail:
          type: boolean
          default: false
        locations:
          type: array
          nullable: true
          items:
            type: string
            enum:
              - us-east-1
              - us-east-2
              - us-west-1
              - us-west-2
              - ca-central-1
              - sa-east-1
              - eu-west-1
              - eu-central-1
              - eu-west-2
              - eu-west-3
              - eu-north-1
              - eu-south-1
              - me-south-1
              - ap-southeast-1
              - ap-northeast-1
              - ap-east-1
              - ap-southeast-2
              - ap-southeast-3
              - ap-northeast-2
              - ap-northeast-3
              - ap-south-1
              - af-south-1
          default: []
        tags:
          type: array
          items:
            type: string
            minLength: 1
          default: []
        alertSettings:
          $ref: '#/components/schemas/ChecksV1AlertSettings'
        useGlobalAlertSettings:
          type: boolean
          default: true
        groupId:
          type: number
          nullable: true
          default: null
        groupOrder:
          type: number
          nullable: true
          minimum: 0
          default: null
        runtimeId:
          type: string
          nullable: true
          enum:
            - '2026.04'
            - '2025.04'
            - '2024.09'
            - '2024.02'
            - '2023.09'
            - '2023.02'
            - '2022.10'
            - null
          default: null
        alertChannelSubscriptions:
          type: array
          items:
            $ref: '#/components/schemas/ChecksV1AlertChannelSubscription'
        retryStrategy:
          $ref: '#/components/schemas/ChecksV1RetryStrategy'
        triggerIncident:
          $ref: '#/components/schemas/ChecksV1TriggerIncident'
        runParallel:
          type: boolean
          default: false
        description:
          type: string
          nullable: true
          maxLength: 500
          default: null
        id:
          type: string
        created_at:
          type: string
          format: date-time
        updated_at:
          type: string
          nullable: true
          format: date-time
        alertChannels:
          $ref: '#/components/schemas/ChecksV1AlertChannels'
        privateLocations:
          type: array
          nullable: true
          items:
            type: string
            minLength: 1
        frequency:
          type: integer
          enum:
            - 0
            - 1
            - 2
            - 5
            - 10
            - 15
            - 30
            - 60
            - 120
            - 180
            - 360
            - 720
            - 1440
          default: 10
        frequencyOffset:
          type: integer
          minimum: 1
        degradedResponseTime:
          type: number
          nullable: true
        maxResponseTime:
          type: number
          nullable: true
        checkType:
          type: string
          enum:
            - DNS
        request:
          $ref: '#/components/schemas/ChecksV1DnsRequest'
      required:
        - name
    ApiError:
      type: object
      properties:
        statusCode:
          type: number
        error:
          type: string
        message:
          type: string
      required:
        - statusCode
        - error
        - message
    ChecksV1AlertSettingsCreate:
      type: object
      properties:
        escalationType:
          type: string
          enum:
            - RUN_BASED
            - TIME_BASED
          default: RUN_BASED
        reminders:
          type: object
          properties:
            amount:
              type: integer
              enum:
                - 0
                - 1
                - 2
                - 3
                - 4
                - 5
                - 100000
              default: 0
            interval:
              type: integer
              enum:
                - 1
                - 2
                - 3
                - 4
                - 5
                - 10
                - 15
                - 30
              default: 5
        sslCertificates:
          type: object
          properties:
            enabled:
              type: boolean
            alertThreshold:
              type: integer
        runBasedEscalation:
          $ref: '#/components/schemas/ChecksV1AlertSettingsRunBasedEscalation'
        timeBasedEscalation:
          $ref: '#/components/schemas/ChecksV1AlertSettingsTimeBasedEscalation'
        parallelRunFailureThreshold:
          type: object
          properties:
            enabled:
              type: boolean
              default: false
            percentage:
              type: integer
              enum:
                - 10
                - 20
                - 30
                - 40
                - 50
                - 60
                - 70
                - 80
                - 90
                - 100
              default: 10
      default:
        escalationType: RUN_BASED
        runBasedEscalation:
          failedRunThreshold: 1
        reminders:
          amount: 0
          interval: 5
        parallelRunFailureThreshold:
          enabled: false
          percentage: 10
    ChecksV1AlertChannelSubscription:
      type: object
      properties:
        alertChannelId:
          type: number
        activated:
          type: boolean
      required:
        - alertChannelId
        - activated
    ChecksV1EnvironmentVariable:
      type: object
      properties:
        key:
          type: string
          minLength: 1
        value:
          type: string
          nullable: true
        locked:
          type: boolean
          default: false
        secret:
          type: boolean
          default: false
      required:
        - key
        - value
    ChecksV1DnsRequest:
      type: object
      properties:
        query:
          type: string
          minLength: 1
          maxLength: 100
        nameServer:
          type: string
          maxLength: 100
        port:
          type: number
        recordType:
          type: string
          enum:
            - A
            - AAAA
            - CNAME
            - MX
            - TXT
            - SOA
            - NS
            - HTTPS
        assertions:
          type: array
          items:
            $ref: '#/components/schemas/ChecksV1DnsAssertion'
          default: []
        protocol:
          type: string
          enum:
            - TCP
            - UDP
          default: UDP
      required:
        - query
        - recordType
    ChecksV1AlertSettings:
      type: object
      nullable: true
      properties:
        escalationType:
          type: string
          enum:
            - RUN_BASED
            - TIME_BASED
          default: RUN_BASED
        reminders:
          type: object
          properties:
            amount:
              type: integer
              enum:
                - 0
                - 1
                - 2
                - 3
                - 4
                - 5
                - 100000
              default: 0
            interval:
              type: integer
              enum:
                - 1
                - 2
                - 3
                - 4
                - 5
                - 10
                - 15
                - 30
              default: 5
        sslCertificates:
          type: object
          properties:
            enabled:
              type: boolean
            alertThreshold:
              type: integer
        runBasedEscalation:
          $ref: '#/components/schemas/ChecksV1AlertSettingsRunBasedEscalation'
        timeBasedEscalation:
          $ref: '#/components/schemas/ChecksV1AlertSettingsTimeBasedEscalation'
        parallelRunFailureThreshold:
          type: object
          properties:
            enabled:
              type: boolean
              default: false
            percentage:
              type: integer
              enum:
                - 10
                - 20
                - 30
                - 40
                - 50
                - 60
                - 70
                - 80
                - 90
                - 100
              default: 10
      default:
        escalationType: RUN_BASED
        runBasedEscalation:
          failedRunThreshold: 1
        reminders:
          amount: 0
          interval: 5
        parallelRunFailureThreshold:
          enabled: false
          percentage: 10
    ChecksV1RetryStrategy:
      type: object
      nullable: true
      properties:
        type:
          type: string
          enum:
            - FIXED
            - LINEAR
            - EXPONENTIAL
            - SINGLE_RETRY
        baseBackoffSeconds:
          type: number
          default: 60
        sameRegion:
          type: boolean
          default: true
        maxRetries:
          type: number
          minimum: 1
          maximum: 10
        maxDurationSeconds:
          type: number
          minimum: 0
          maximum: 600
        onlyOn:
          type: array
          items:
            type: string
            enum:
              - NETWORK_ERROR
      required:
        - type
    ChecksV1TriggerIncident:
      type: object
      nullable: true
      properties:
        serviceId:
          type: string
          minLength: 1
          format: uuid
        severity:
          type: string
          enum:
            - CRITICAL
            - MAJOR
            - MEDIUM
            - MINOR
        name:
          type: string
        description:
          type: string
        notifySubscribers:
          type: boolean
      required:
        - serviceId
        - severity
        - name
        - description
        - notifySubscribers
    ChecksV1AlertChannels:
      type: object
      nullable: true
      properties:
        email:
          type: array
          items:
            $ref: '#/components/schemas/ChecksV1AlertEmail'
        webhook:
          type: array
          items:
            $ref: '#/components/schemas/ChecksV1AlertWebhook'
        slack:
          type: array
          items:
            $ref: '#/components/schemas/ChecksV1AlertSlack'
        sms:
          type: array
          items:
            $ref: '#/components/schemas/ChecksV1AlertSms'
    ChecksV1AlertSettingsRunBasedEscalation:
      type: object
      properties:
        failedRunThreshold:
          type: integer
          enum:
            - 1
            - 2
            - 3
            - 4
            - 5
    ChecksV1AlertSettingsTimeBasedEscalation:
      type: object
      properties:
        minutesFailingThreshold:
          type: integer
          enum:
            - 5
            - 10
            - 15
            - 30
    ChecksV1DnsAssertion:
      type: object
      properties:
        source:
          type: string
          enum:
            - RESPONSE_TIME
            - RESPONSE_CODE
            - TEXT_ANSWER
            - JSON_ANSWER
        comparison:
          type: string
          enum:
            - EQUALS
            - NOT_EQUALS
            - HAS_KEY
            - NOT_HAS_KEY
            - HAS_VALUE
            - NOT_HAS_VALUE
            - IS_EMPTY
            - NOT_EMPTY
            - GREATER_THAN
            - LESS_THAN
            - CONTAINS
            - NOT_CONTAINS
            - IS_NULL
            - NOT_NULL
        property:
          type: string
          default: ''
        target:
          type: string
          default: ''
        regex:
          type: string
          nullable: true
          default: ''
    ChecksV1AlertEmail:
      type: object
      properties:
        address:
          type: string
          minLength: 1
          default: ''
    ChecksV1AlertWebhook:
      type: object
      properties:
        name:
          type: string
          minLength: 1
          default: ''
        url:
          type: string
          minLength: 1
          default: ''
        method:
          type: string
          nullable: true
          minLength: 1
          default: POST
        headers:
          type: array
          items:
            $ref: '#/components/schemas/ChecksV1KeyValue'
          default: []
        queryParameters:
          type: array
          items:
            $ref: '#/components/schemas/ChecksV1KeyValue'
          default: []
    ChecksV1AlertSlack:
      type: object
      properties:
        url:
          type: string
          minLength: 1
          default: ''
    ChecksV1AlertSms:
      type: object
      properties:
        number:
          type: string
          minLength: 1
          default: ''
        name:
          type: string
      required:
        - name
    ChecksV1KeyValue:
      type: object
      properties:
        key:
          type: string
          minLength: 1
        value:
          type: string
        locked:
          type: boolean
          default: false
      required:
        - key
        - value
  securitySchemes:
    Bearer:
      type: http
      scheme: bearer
      bearerFormat: Bearer
      description: >-
        The Checkly Public API uses API keys to authenticate requests. You can
        get the API Key
        [here](https://app.checklyhq.com/settings/user/api-keys). Your API key
        is like a password: keep it secure!

        Authentication to the API is performed using the Bearer auth method in
        the Authorization header and using the account ID.

        For example, set **Authorization** header while using cURL: `curl -H
        "Authorization: Bearer [apiKey]" "X-Checkly-Account: [accountId]"` 

````