---
title: "Create an SSL monitor"
method: POST
path: "/v1/checks/ssl"
tags: ["Monitors"]
---

# Create an SSL monitor

`POST /v1/checks/ssl`

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

## Query parameters

- `autoAssignAlerts` boolean — Determines whether a new check will automatically be added as a subscriber to all existing alert channels when it gets created.

## Headers

- `x-checkly-account` string, uuid — Your Checkly account ID, you can find it at https://app.checklyhq.com/settings/account/general

## Request body

- ChecksV1SslMonitorCreate
  - `name` string, required
  - `activated` boolean
  - `muted` boolean
  - `doubleCheck` boolean
  - `shouldFail` boolean
  - `locations` string[], nullable
  - `tags` string[]
  - `alertSettings` ChecksV1AlertSettingsCreate
    - `escalationType` 'RUN_BASED' | 'TIME_BASED'
    - `reminders` object
      - `amount` 0 | 1 | 2 | 3 | 4 | 5 | 100000
      - `interval` 1 | 2 | 3 | 4 | 5 | 10 | 15 | 30
    - `sslCertificates` object
      - `enabled` boolean
      - `alertThreshold` integer
    - `runBasedEscalation` ChecksV1AlertSettingsRunBasedEscalation
      - `failedRunThreshold` 1 | 2 | 3 | 4 | 5
    - `timeBasedEscalation` ChecksV1AlertSettingsTimeBasedEscalation
      - `minutesFailingThreshold` 5 | 10 | 15 | 30
    - `parallelRunFailureThreshold` object
      - `enabled` boolean
      - `percentage` 10 | 20 | 30 | 40 | 50 | 60 | 70 | 80 | 90 | 100
  - `useGlobalAlertSettings` boolean
  - `groupId` number, nullable
  - `groupOrder` number, nullable
  - `runtimeId` '2026.04' | '2025.04' | '2024.09' | '2024.02' | '2023.09' | '2023.02' | '2022.10' | 'null', nullable
  - `alertChannelSubscriptions` ChecksV1AlertChannelSubscription[]
    - `alertChannelId` number, required
    - `activated` boolean, required
  - `retryStrategy` ChecksV1RetryStrategy, nullable
    - `type` 'FIXED' | 'LINEAR' | 'EXPONENTIAL' | 'SINGLE_RETRY', required
    - `baseBackoffSeconds` number
    - `sameRegion` boolean
    - `maxRetries` number
    - `maxDurationSeconds` number
    - `onlyOn` string[]
  - `triggerIncident` ChecksV1TriggerIncident, nullable
    - `serviceId` string, uuid, required
    - `severity` 'CRITICAL' | 'MAJOR' | 'MEDIUM' | 'MINOR', required
    - `name` string, required
    - `description` string, required
    - `notifySubscribers` boolean, required
  - `runParallel` boolean
  - `description` string, nullable
  - `checkType` 'SSL'
  - `frequency` 0 | 1 | 2 | 5 | 10 | 15 | 30 | 60 | 120 | 180 | 360 | 720 | 1440
  - `frequencyOffset` integer
  - `heartbeat` object, nullable
  - `script` string, nullable
  - `scriptPath` string, nullable
  - `sslCheckDomain` string, nullable
  - `environmentVariables` ChecksV1EnvironmentVariable[], nullable
    - `key` string, required
    - `value` string, nullable, required
    - `locked` boolean
    - `secret` boolean
  - `setupSnippetId` number, nullable
  - `tearDownSnippetId` number, nullable
  - `localSetupScript` string, nullable
  - `localTearDownScript` string, nullable
  - `request` ChecksV1SslRequest, required
    - `sslConfig` ChecksV1SslConfig, required
      - `hostname` string, required
      - `port` integer
      - `serverName` union
        - string
        - ''
        - unknown
      - `ipFamily` 'IPv4' | 'IPv6'
      - `skipChainValidation` boolean
      - `handshakeTimeoutMs` integer
      - `alertDaysBeforeExpiry` integer
      - `securityBaseline` object
        - `enabled` boolean
        - `minTLSVersion` object
          - `value` 'TLS1.2' | 'TLS1.3'
          - `severity` 'fail' | 'degrade' | 'ignore'
        - `minKeySizeBits` object
          - `value` integer
          - `severity` 'fail' | 'degrade' | 'ignore'
        - `weakSignatureAlgorithm` object
          - `severity` 'fail' | 'degrade' | 'ignore'
        - `weakCipherSuite` object
          - `severity` 'fail' | 'degrade' | 'ignore'
        - `knownBadCA` object
          - `severity` 'fail' | 'degrade' | 'ignore'
        - `recommendedTLSVersion` object
          - `value` 'TLS1.2' | 'TLS1.3'
          - `severity` 'fail' | 'degrade' | 'ignore'
        - `recommendedKeySizeBits` object
          - `value` integer
          - `severity` 'fail' | 'degrade' | 'ignore'
        - `ocspMustStapleRespected` object
          - `severity` 'fail' | 'degrade' | 'ignore'
        - `sctPresent` object
          - `severity` 'fail' | 'degrade' | 'ignore'
      - `clientCertificateMode` 'auto' | 'explicit'
    - `sslClientCertificateId` string, uuid, nullable
    - `assertions` ChecksV1SslAssertion[]
      - `source` 'CERTIFICATE' | 'CONNECTION' | 'RESPONSE_TIME' | 'JSON_RESPONSE' | 'TEXT_RESPONSE', required
      - `property` string
      - `comparison` string, required
      - `target` string
      - `regex` string, nullable
  - `degradedResponseTime` integer
  - `maxResponseTime` integer
  - `privateLocations` string[], nullable

## Response `201`

Created

- ChecksV1SslMonitorMutationResponse
  - `name` string, required
  - `activated` boolean
  - `muted` boolean
  - `doubleCheck` boolean
  - `shouldFail` boolean
  - `locations` string[], nullable
  - `tags` string[]
  - `alertSettings` ChecksV1AlertSettings, nullable
    - `escalationType` 'RUN_BASED' | 'TIME_BASED'
    - `reminders` object
      - `amount` 0 | 1 | 2 | 3 | 4 | 5 | 100000
      - `interval` 1 | 2 | 3 | 4 | 5 | 10 | 15 | 30
    - `sslCertificates` object
      - `enabled` boolean
      - `alertThreshold` integer
    - `runBasedEscalation` ChecksV1AlertSettingsRunBasedEscalation
      - `failedRunThreshold` 1 | 2 | 3 | 4 | 5
    - `timeBasedEscalation` ChecksV1AlertSettingsTimeBasedEscalation
      - `minutesFailingThreshold` 5 | 10 | 15 | 30
    - `parallelRunFailureThreshold` object
      - `enabled` boolean
      - `percentage` 10 | 20 | 30 | 40 | 50 | 60 | 70 | 80 | 90 | 100
  - `useGlobalAlertSettings` boolean
  - `groupId` number, nullable
  - `groupOrder` number, nullable
  - `runtimeId` '2026.04' | '2025.04' | '2024.09' | '2024.02' | '2023.09' | '2023.02' | '2022.10' | 'null', nullable
  - `alertChannelSubscriptions` ChecksV1AlertChannelSubscription[]
    - `alertChannelId` number, required
    - `activated` boolean, required
  - `retryStrategy` ChecksV1RetryStrategy, nullable
    - `type` 'FIXED' | 'LINEAR' | 'EXPONENTIAL' | 'SINGLE_RETRY', required
    - `baseBackoffSeconds` number
    - `sameRegion` boolean
    - `maxRetries` number
    - `maxDurationSeconds` number
    - `onlyOn` string[]
  - `triggerIncident` ChecksV1TriggerIncident, nullable
    - `serviceId` string, uuid, required
    - `severity` 'CRITICAL' | 'MAJOR' | 'MEDIUM' | 'MINOR', required
    - `name` string, required
    - `description` string, required
    - `notifySubscribers` boolean, required
  - `runParallel` boolean
  - `description` string, nullable
  - `id` string
  - `created_at` string, date-time
  - `updated_at` string, date-time, nullable
  - `alertChannels` ChecksV1AlertChannels, nullable
    - `email` ChecksV1AlertEmail[]
      - `address` string
    - `webhook` ChecksV1AlertWebhook[]
      - `name` string
      - `url` string
      - `method` string, nullable
      - `headers` ChecksV1KeyValue[]
        - `key` string, required
        - `value` string, required
        - `locked` boolean
      - `queryParameters` ChecksV1KeyValue[]
        - `key` string, required
        - `value` string, required
        - `locked` boolean
    - `slack` ChecksV1AlertSlack[]
      - `url` string
    - `sms` ChecksV1AlertSms[]
      - `number` string
      - `name` string, required
  - `privateLocations` string[], nullable
  - `frequency` 0 | 1 | 2 | 5 | 10 | 15 | 30 | 60 | 120 | 180 | 360 | 720 | 1440
  - `frequencyOffset` integer
  - `degradedResponseTime` number, nullable
  - `maxResponseTime` number, nullable
  - `checkType` 'SSL'
  - `request` ChecksV1SslRequestRead
    - `sslConfig` ChecksV1SslConfigRead, required
      - `hostname` string, required
      - `port` integer
      - `serverName` union
        - string
        - ''
        - unknown
      - `ipFamily` 'IPv4' | 'IPv6'
      - `skipChainValidation` boolean
      - `handshakeTimeoutMs` integer
      - `alertDaysBeforeExpiry` integer
      - `securityBaseline` ChecksV1SslSecurityBaselineRead
        - `enabled` boolean
        - `minTLSVersion` object
          - `value` 'TLS1.2' | 'TLS1.3'
          - `severity` 'fail' | 'degrade' | 'ignore'
        - `minKeySizeBits` object
          - `value` integer
          - `severity` 'fail' | 'degrade' | 'ignore'
        - `weakSignatureAlgorithm` object
          - `severity` 'fail' | 'degrade' | 'ignore'
        - `weakCipherSuite` object
          - `severity` 'fail' | 'degrade' | 'ignore'
        - `knownBadCA` object
          - `severity` 'fail' | 'degrade' | 'ignore'
        - `recommendedTLSVersion` object
          - `value` 'TLS1.2' | 'TLS1.3'
          - `severity` 'fail' | 'degrade' | 'ignore'
        - `recommendedKeySizeBits` object
          - `value` integer
          - `severity` 'fail' | 'degrade' | 'ignore'
        - `ocspMustStapleRespected` object
          - `severity` 'fail' | 'degrade' | 'ignore'
        - `sctPresent` object
          - `severity` 'fail' | 'degrade' | 'ignore'
      - `clientCertificateMode` 'auto' | 'explicit'
    - `sslClientCertificateId` string, uuid, nullable
    - `assertions` ChecksV1SslAssertionPatch[]
      - `source` 'CERTIFICATE' | 'CONNECTION' | 'RESPONSE_TIME' | 'JSON_RESPONSE' | 'TEXT_RESPONSE', required
      - `property` string
      - `comparison` string, required
      - `target` string
      - `regex` string, nullable

## Other responses

- `400` — Bad Request
- `401` — Unauthorized
- `402` — Payment Required
- `403` — Forbidden
- `429` — Too Many Requests

---

[API](https://skmtc.net/checklyhq/apis/checkly-public-api.md) · [All operations](https://skmtc.net/checklyhq/apis/checkly-public-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/checklyhq/checkly-public-api/revisions/87d29dc7b4fe/schema)
