---
title: "Update a monitor configuration"
method: PUT
path: "/api/monitors/{id}"
tags: ["Monitors"]
---

# Update a monitor configuration

`PUT /api/monitors/{id}`

## Request

- Base URL: `https://demo.supercheck.dev`
- URL: `https://demo.supercheck.dev/api/monitors/{id}`
- Auth: HTTP bearer

Update monitor configuration. Only provided fields are changed. PUT is retained for CLI deploy and backward compatibility; interactive partial updates should prefer PATCH. Resource IDs must be canonical UUIDs; malformed IDs return 404.

## Request body

- MonitorUpdateRequest
  - `name` string
  - `description` string
  - `type` 'http_request' | 'website' | 'ping_host' | 'port_check' | 'synthetic_test'
  - `target` string
  - `frequencyMinutes` integer
  - `enabled` boolean
  - `status` 'up' | 'down' | 'paused' | 'pending' | 'maintenance' | 'error'
  - `config` MonitorConfig
    - `method` 'GET' | 'POST' | 'PUT' | 'DELETE' | 'PATCH' | 'HEAD' | 'OPTIONS'
    - `headers` object
    - `body` string
    - `expectedStatusCodes` string
    - `keywordInBody` string
    - `keywordInBodyShouldBePresent` boolean
    - `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
    - `timeoutSeconds` integer
    - `regions` string[]
    - `locationConfig` MonitorLocationConfig
      - `enabled` boolean
      - `locations` string[]
      - `threshold` integer
      - `strategy` 'all' | 'majority' | 'any'
    - `retryStrategy` object: Unsupported for monitors. Accepted for compatibility but ignored; it does not change execution retries. Do not set this field in new configurations.
      - `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
    - `incidentEnabled` boolean: Open an incident when this alerts.
    - `incidentSeverity` 'sev1' | 'sev2' | 'sev3' | 'sev4': Severity of the opened incident. Omit to derive it from the alert.
    - `autoResolveIncident` boolean: Resolve the incident automatically when the source recovers.

## Response `200`

Monitor updated

- Monitor
  - `id` string, uuid
  - `organizationId` string, uuid, nullable
  - `projectId` string, uuid, nullable
  - `createdByUserId` string, uuid, nullable
  - `createdByName` string, nullable
  - `createdByImage` string, 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
    - `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
    - `timeoutSeconds` integer
    - `regions` string[]
    - `locationConfig` MonitorLocationConfig
      - `enabled` boolean
      - `locations` string[]
      - `threshold` integer
      - `strategy` 'all' | 'majority' | 'any'
    - `retryStrategy` object: Unsupported for monitors. Accepted for compatibility but ignored; it does not change execution retries. Do not set this field in new configurations.
      - `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
    - `incidentEnabled` boolean: Open an incident when this alerts.
    - `incidentSeverity` 'sev1' | 'sev2' | 'sev3' | 'sev4': Severity of the opened incident. Omit to derive it from the alert.
    - `autoResolveIncident` boolean: Resolve the incident automatically when the source recovers.
  - `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 update payload
- `401`: Authentication required or token invalid
- `403`: Insufficient permissions
- `404`: Resource not found

## Changes

- **2026-10-28** `dc52000a1874`: 12 warning
  - the `alertConfig/failureThreshold` request property's max was set to `100.00`
  - the `alertConfig/recoveryThreshold` request property's max was set to `100.00`
  - removed the request property `config/checkExpiration`
  - removed the request property `config/checkRevocation`
  - …8 more
- **2026-10-28** `4531981d91c6`: 2 info
  - added the optional property `createdByImage` to the response with the `200` status
  - added the optional property `createdByName` to the response with the `200` status
- **2026-10-28** `8e88356fa079`: 6 info
  - added the new optional request property `alertConfig/autoResolveIncident`
  - added the new optional request property `alertConfig/incidentEnabled`
  - added the new optional request property `alertConfig/incidentSeverity`
  - added the optional property `alertConfig/anyOf[#/components/schemas/MonitorAlertConfig]/autoResolveIncident` to the response with the `200` status
  - …2 more
- **2026-10-15** `eaa91f4d08a8`: 2 info
  - request property `config/retryStrategy` deprecated
  - response property `config/anyOf[#/components/schemas/MonitorConfig]/retryStrategy` deprecated
- **2026-10-01** `0114b54c259d`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/supercheck-io/apis/supercheck-api/changes/api/monitors/:id/put.md)

---

[API](https://skmtc.dev/supercheck-io/apis/supercheck-api.md) - [All operations](https://skmtc.dev/supercheck-io/apis/supercheck-api/llms.txt) - [OpenAPI document](https://skmtc.dev/supercheck-io/apis/supercheck-api/revisions/7fa0162c07bd?raw)
