---
title: "Create a monitor"
method: POST
path: "/api/monitors"
tags: ["Monitors"]
---

# Create a monitor

`POST /api/monitors`

Create a new uptime or performance monitor.

## Request body

- MonitorCreateRequest
  - `name` string, required
  - `description` string
  - `type` 'http_request' | 'website' | 'ping_host' | 'port_check' | 'synthetic_test', required
  - `target` string — URL, host, or synthetic test target to monitor
  - `frequencyMinutes` integer — Check interval in minutes
  - `enabled` boolean
  - `config` MonitorConfig
    - `method` 'GET' | 'POST' | 'PUT' | 'DELETE' | 'PATCH' | 'HEAD' | 'OPTIONS'
    - `headers` object
    - `body` string
    - `expectedStatusCodes` string
    - `keywordInBody` string
    - `keywordInBodyShouldBePresent` boolean
    - `responseBodyJsonPath` object
      - `path` string
      - `expectedValue` unknown
    - `auth` object
      - `type` 'none' | 'basic' | 'bearer'
      - `username` string
      - `password` string
      - `token` string
    - `port` integer
    - `protocol` 'tcp' | 'udp'
    - `expectClosed` boolean
    - `enableSslCheck` boolean
    - `sslDaysUntilExpirationWarning` integer
    - `sslCheckFrequencyHours` integer
    - `sslLastCheckedAt` string, date-time, nullable
    - `sslCheckOnStatusChange` boolean
    - `checkExpiration` boolean
    - `daysUntilExpirationWarning` integer
    - `checkRevocation` boolean
    - `timeoutSeconds` integer
    - `regions` string[]
    - `locationConfig` MonitorLocationConfig
      - `enabled` boolean
      - `locations` string[]
      - `threshold` integer
      - `strategy` 'all' | 'majority' | 'any'
    - `retryStrategy` object
      - `maxRetries` integer
      - `backoffFactor` integer
    - `alertChannels` string[]
    - `testId` string, uuid
    - `testTitle` string
    - `playwrightOptions` object
      - `headless` boolean
      - `timeout` integer
      - `retries` integer
  - `alertConfig` MonitorAlertConfig
    - `enabled` boolean
    - `notificationProviders` string[]
    - `alertOnFailure` boolean
    - `alertOnRecovery` boolean
    - `alertOnSslExpiration` boolean
    - `failureThreshold` integer
    - `recoveryThreshold` integer
    - `customMessage` string

## Response `201`

Monitor created

- Monitor
  - `id` string, uuid
  - `organizationId` string, uuid, nullable
  - `projectId` string, uuid, nullable
  - `createdByUserId` string, uuid, nullable
  - `name` string
  - `description` string, nullable
  - `target` string — URL, host, or synthetic test target being monitored
  - `type` 'http_request' | 'website' | 'ping_host' | 'port_check' | 'synthetic_test'
  - `status` 'up' | 'down' | 'paused' | 'pending' | 'maintenance' | 'error'
  - `frequencyMinutes` integer — Check interval in minutes
  - `enabled` boolean
  - `config` MonitorConfig
    - `method` 'GET' | 'POST' | 'PUT' | 'DELETE' | 'PATCH' | 'HEAD' | 'OPTIONS'
    - `headers` object
    - `body` string
    - `expectedStatusCodes` string
    - `keywordInBody` string
    - `keywordInBodyShouldBePresent` boolean
    - `responseBodyJsonPath` object
      - `path` string
      - `expectedValue` unknown
    - `auth` object
      - `type` 'none' | 'basic' | 'bearer'
      - `username` string
      - `password` string
      - `token` string
    - `port` integer
    - `protocol` 'tcp' | 'udp'
    - `expectClosed` boolean
    - `enableSslCheck` boolean
    - `sslDaysUntilExpirationWarning` integer
    - `sslCheckFrequencyHours` integer
    - `sslLastCheckedAt` string, date-time, nullable
    - `sslCheckOnStatusChange` boolean
    - `checkExpiration` boolean
    - `daysUntilExpirationWarning` integer
    - `checkRevocation` boolean
    - `timeoutSeconds` integer
    - `regions` string[]
    - `locationConfig` MonitorLocationConfig
      - `enabled` boolean
      - `locations` string[]
      - `threshold` integer
      - `strategy` 'all' | 'majority' | 'any'
    - `retryStrategy` object
      - `maxRetries` integer
      - `backoffFactor` integer
    - `alertChannels` string[]
    - `testId` string, uuid
    - `testTitle` string
    - `playwrightOptions` object
      - `headless` boolean
      - `timeout` integer
      - `retries` integer
  - `alertConfig` MonitorAlertConfig
    - `enabled` boolean
    - `notificationProviders` string[]
    - `alertOnFailure` boolean
    - `alertOnRecovery` boolean
    - `alertOnSslExpiration` boolean
    - `failureThreshold` integer
    - `recoveryThreshold` integer
    - `customMessage` string
  - `lastCheckAt` string, date-time, nullable
  - `lastStatusChangeAt` string, date-time, nullable
  - `mutedUntil` string, date-time, nullable
  - `scheduledJobId` string, nullable
  - `recentResults` MonitorResult[]
    - `id` string, uuid
    - `monitorId` string, uuid
    - `checkedAt` string, date-time
    - `location` string
    - `status` 'up' | 'down' | 'error' | 'timeout'
    - `responseTimeMs` integer, nullable — Response time in milliseconds
    - `details` MonitorResultDetails
      - `statusCode` integer, nullable
      - `statusText` string, nullable
      - `errorMessage` string, nullable
      - `responseHeaders` object
      - `responseBodySnippet` string, nullable
      - `ipAddress` string, nullable
      - `location` string, nullable
      - `sslCertificate` object
        - `valid` boolean
        - `issuer` string, nullable
        - `subject` string, nullable
        - `validFrom` string, nullable
        - `validTo` string, nullable
        - `daysRemaining` integer, nullable
    - `isUp` boolean
    - `isStatusChange` boolean
    - `consecutiveFailureCount` integer
    - `consecutiveSuccessCount` integer
    - `alertsSentForFailure` integer
    - `alertsSentForRecovery` integer
    - `testExecutionId` string, nullable
    - `testReportS3Url` string, nullable
    - `executionGroupId` string, nullable
  - `createdAt` string, date-time, nullable
  - `updatedAt` string, date-time, nullable

## Other responses

- `400` — Invalid monitor payload
- `401` — Authentication required or token invalid
- `402` — Active subscription required
- `403` — Insufficient permissions

---

[API](https://skmtc.net/supercheck-io/apis/supercheck-api.md) · [All operations](https://skmtc.net/supercheck-io/apis/supercheck-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/supercheck-io/supercheck-api/versions/81782deccf0e/schema)
