{"openapi":"3.1.0","info":{"title":"Uptimecheck API","version":"1.0.0","description":"Manage monitors and read uptime, checks and incidents. Authenticate with a workspace API key: `Authorization: Bearer uc_…`. Rate limit: 120 requests per minute per key."},"servers":[{"url":"https://app.uptimecheck.com/api/v1"}],"security":[{"apiKey":[]}],"tags":[{"name":"Monitors"},{"name":"Incidents"},{"name":"Maintenance"},{"name":"Status pages"},{"name":"Workspace"}],"paths":{"/monitors":{"get":{"operationId":"list-monitors","tags":["Monitors"],"summary":"List monitors","description":"All monitors in the workspace, sorted by name, with 24-hour uptime and average response time.","parameters":[{"name":"type","in":"query","required":false,"description":"Only this type: http, tcp, ping, dns, domain, heartbeat or server.","schema":{"type":"string"}},{"name":"status","in":"query","required":false,"description":"Only this status: up, down, pending or paused.","schema":{"type":"string"}},{"name":"projectId","in":"query","required":false,"description":"Only monitors in this project.","schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/MonitorWithUptime"}}}},"example":{"data":[{"id":"mon_9xk2m1q8w4","name":"Checkout","type":"http","target":"https://northwind.shop/checkout","port":null,"config":{"method":"GET","headers":[],"body":"","expectedStatus":"200-399","keyword":null,"followRedirects":true,"verifyTls":true,"timeoutMs":10000},"intervalSeconds":60,"regions":[],"projectId":null,"channelIds":["ch_4n8v0d2k7p"],"status":"up","statusChangedAt":"2026-10-12T08:14:03.000Z","slowSince":null,"lastCheckedAt":"2026-10-14T09:41:12.000Z","lastResponseMs":212,"lastError":null,"heartbeatUrl":null,"agentToken":null,"agent":null,"sslExpiresAt":"2026-12-30T23:59:59.000Z","domainExpiresAt":null,"domainRegistrar":null,"dnsRecords":null,"createdAt":"2026-10-12T08:12:40.000Z","updatedAt":"2026-10-12T08:12:40.000Z","uptime24h":99.98,"avgResponseMs24h":205}]}}}},"default":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"post":{"operationId":"create-monitor","tags":["Monitors"],"summary":"Create a monitor","description":"The body depends on `type`. Fields with defaults can be left out. Without `channelIds` the monitor alerts the workspace's default alert channels; send `[]` for none. The first check runs within a minute. Returns 402 when the plan's limit for that monitor type is reached.\n\nRequires a read & write key.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MonitorInput"},"example":{"type":"http","name":"Checkout","target":"https://northwind.shop/checkout","intervalSeconds":60,"config":{"keyword":{"value":"Add to cart","mode":"contains"}}}}}},"responses":{"201":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/Monitor"}}},"example":{"data":{"id":"mon_9xk2m1q8w4","name":"Checkout","type":"http","target":"https://northwind.shop/checkout","port":null,"config":{"method":"GET","headers":[],"body":"","expectedStatus":"200-399","keyword":null,"followRedirects":true,"verifyTls":true,"timeoutMs":10000},"intervalSeconds":60,"regions":[],"projectId":null,"channelIds":["ch_4n8v0d2k7p"],"status":"up","statusChangedAt":"2026-10-12T08:14:03.000Z","slowSince":null,"lastCheckedAt":"2026-10-14T09:41:12.000Z","lastResponseMs":212,"lastError":null,"heartbeatUrl":null,"agentToken":null,"agent":null,"sslExpiresAt":"2026-12-30T23:59:59.000Z","domainExpiresAt":null,"domainRegistrar":null,"dnsRecords":null,"createdAt":"2026-10-12T08:12:40.000Z","updatedAt":"2026-10-12T08:12:40.000Z"}}}}},"default":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/monitors/{id}":{"get":{"operationId":"get-monitor","tags":["Monitors"],"summary":"Get a monitor","description":"One monitor with uptime for the last 24 hours, 7 days and 30 days.","parameters":[{"name":"id","in":"path","required":true,"description":"The monitor ID.","schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/MonitorWithStats"}}},"example":{"data":{"id":"mon_9xk2m1q8w4","name":"Checkout","type":"http","target":"https://northwind.shop/checkout","port":null,"config":{"method":"GET","headers":[],"body":"","expectedStatus":"200-399","keyword":null,"followRedirects":true,"verifyTls":true,"timeoutMs":10000},"intervalSeconds":60,"regions":[],"projectId":null,"channelIds":["ch_4n8v0d2k7p"],"status":"up","statusChangedAt":"2026-10-12T08:14:03.000Z","slowSince":null,"lastCheckedAt":"2026-10-14T09:41:12.000Z","lastResponseMs":212,"lastError":null,"heartbeatUrl":null,"agentToken":null,"agent":null,"sslExpiresAt":"2026-12-30T23:59:59.000Z","domainExpiresAt":null,"domainRegistrar":null,"dnsRecords":null,"createdAt":"2026-10-12T08:12:40.000Z","updatedAt":"2026-10-12T08:12:40.000Z","stats":{"uptime24h":100,"uptime7d":99.93,"uptime30d":99.98,"avgResponseMs24h":205}}}}}},"default":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"patch":{"operationId":"update-monitor","tags":["Monitors"],"summary":"Update a monitor","description":"Send only the fields to change. `config` is merged with the current config, and `channelIds` replaces the list. The type can't be changed. Changing the target starts the monitor over.\n\nRequires a read & write key.","parameters":[{"name":"id","in":"path","required":true,"description":"The monitor ID.","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MonitorPatch"},"example":{"intervalSeconds":300,"channelIds":["ch_4n8v0d2k7p"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/Monitor"}}},"example":{"data":{"id":"mon_9xk2m1q8w4","name":"Checkout","type":"http","target":"https://northwind.shop/checkout","port":null,"config":{"method":"GET","headers":[],"body":"","expectedStatus":"200-399","keyword":null,"followRedirects":true,"verifyTls":true,"timeoutMs":10000},"intervalSeconds":300,"regions":[],"projectId":null,"channelIds":["ch_4n8v0d2k7p"],"status":"up","statusChangedAt":"2026-10-12T08:14:03.000Z","slowSince":null,"lastCheckedAt":"2026-10-14T09:41:12.000Z","lastResponseMs":212,"lastError":null,"heartbeatUrl":null,"agentToken":null,"agent":null,"sslExpiresAt":"2026-12-30T23:59:59.000Z","domainExpiresAt":null,"domainRegistrar":null,"dnsRecords":null,"createdAt":"2026-10-12T08:12:40.000Z","updatedAt":"2026-10-12T08:12:40.000Z"}}}}},"default":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"delete":{"operationId":"delete-monitor","tags":["Monitors"],"summary":"Delete a monitor","description":"Deletes the monitor with its checks and incidents. This can't be undone.\n\nRequires a read & write key.","parameters":[{"name":"id","in":"path","required":true,"description":"The monitor ID.","schema":{"type":"string"}}],"responses":{"204":{"description":"No content"},"default":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/monitors/{id}/pause":{"post":{"operationId":"pause-monitor","tags":["Monitors"],"summary":"Pause a monitor","description":"Stops checks and alerts, for example during a deploy or maintenance. Open incidents are closed and alerts that haven't gone out yet are canceled. A monitor that is already paused is returned unchanged.\n\nRequires a read & write key.","parameters":[{"name":"id","in":"path","required":true,"description":"The monitor ID.","schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/Monitor"}}},"example":{"data":{"id":"mon_9xk2m1q8w4","name":"Checkout","type":"http","target":"https://northwind.shop/checkout","port":null,"config":{"method":"GET","headers":[],"body":"","expectedStatus":"200-399","keyword":null,"followRedirects":true,"verifyTls":true,"timeoutMs":10000},"intervalSeconds":60,"regions":[],"projectId":null,"channelIds":["ch_4n8v0d2k7p"],"status":"paused","statusChangedAt":"2026-10-12T08:14:03.000Z","slowSince":null,"lastCheckedAt":"2026-10-14T09:41:12.000Z","lastResponseMs":212,"lastError":null,"heartbeatUrl":null,"agentToken":null,"agent":null,"sslExpiresAt":"2026-12-30T23:59:59.000Z","domainExpiresAt":null,"domainRegistrar":null,"dnsRecords":null,"createdAt":"2026-10-12T08:12:40.000Z","updatedAt":"2026-10-12T08:12:40.000Z"}}}}},"default":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/monitors/{id}/resume":{"post":{"operationId":"resume-monitor","tags":["Monitors"],"summary":"Resume a monitor","description":"Starts checks again. The monitor is pending until the first result arrives. A monitor that isn't paused is returned unchanged: a down monitor stays down with its incident open.\n\nRequires a read & write key.","parameters":[{"name":"id","in":"path","required":true,"description":"The monitor ID.","schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/Monitor"}}},"example":{"data":{"id":"mon_9xk2m1q8w4","name":"Checkout","type":"http","target":"https://northwind.shop/checkout","port":null,"config":{"method":"GET","headers":[],"body":"","expectedStatus":"200-399","keyword":null,"followRedirects":true,"verifyTls":true,"timeoutMs":10000},"intervalSeconds":60,"regions":[],"projectId":null,"channelIds":["ch_4n8v0d2k7p"],"status":"pending","statusChangedAt":"2026-10-12T08:14:03.000Z","slowSince":null,"lastCheckedAt":"2026-10-14T09:41:12.000Z","lastResponseMs":212,"lastError":null,"heartbeatUrl":null,"agentToken":null,"agent":null,"sslExpiresAt":"2026-12-30T23:59:59.000Z","domainExpiresAt":null,"domainRegistrar":null,"dnsRecords":null,"createdAt":"2026-10-12T08:12:40.000Z","updatedAt":"2026-10-12T08:12:40.000Z"}}}}},"default":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/monitors/{id}/checks":{"get":{"operationId":"list-checks","tags":["Monitors"],"summary":"List check results","description":"Raw results from every location, newest first, with what the probe saw for failed checks. Kept for the plan's retention period. To get the next page, pass the last `checkedAt` as `before`.","parameters":[{"name":"id","in":"path","required":true,"description":"The monitor ID.","schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"description":"1–1000, default 100.","schema":{"type":"integer"}},{"name":"before","in":"query","required":false,"description":"ISO 8601 timestamp. Only results older than this.","schema":{"type":"string"}},{"name":"region","in":"query","required":false,"description":"Only this location, e.g. eu-north (Stockholm, the only location online today).","schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Check"}},"hasMore":{"type":"boolean","description":"True when there may be more results."}}},"example":{"data":[{"region":"eu-north","ok":true,"responseMs":198,"statusCode":200,"error":null,"details":null,"checkedAt":"2026-10-14T09:41:12.000Z"}],"hasMore":false}}}},"default":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/monitors/{id}/metrics":{"get":{"operationId":"server-metrics","tags":["Monitors"],"summary":"Get server metrics","description":"Server monitors only: the latest agent report and averages per interval (2 minutes for 24h, 1 hour for 7d, 4 hours for 30d). Disk is the fullest filesystem; network is bytes per second.","parameters":[{"name":"id","in":"path","required":true,"description":"The monitor ID.","schema":{"type":"string"}},{"name":"range","in":"query","required":false,"description":"24h (default), 7d or 30d.","schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/ServerMetrics"}}},"example":{"data":{"latest":{"collectedAt":"2026-10-14T09:41:00.000Z","cpuPercent":14.2,"load1":0.31,"memoryPercent":61.8,"swapPercent":null,"memoryTotal":4100000000,"memoryUsed":2533800000,"rxBytesPerSec":18200,"txBytesPerSec":9400,"disks":[{"mount":"/","fsType":"ext4","total":80000000000,"used":41000000000,"percent":51.3}]},"points":[{"t":"2026-10-14T09:35:00.000Z","cpu":12.9,"memory":61.5,"disk":51.3,"rx":17650,"tx":9120}]}}}}},"default":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/monitors/{id}/page-speed":{"get":{"operationId":"page-speed","tags":["Monitors"],"summary":"Get page speed","description":"Site health monitors only: Google Lighthouse's latest run per page on mobile and desktop (score 0–100, lab metrics in ms with Lighthouse's 0–1 score each, suggestions with estimated savings), real visitors' Core Web Vitals at the 75th percentile when Google has them (`scope` is `page`, or `origin` for the whole site), and 90 days of scores. Measured once a day.","parameters":[{"name":"id","in":"path","required":true,"description":"The monitor ID.","schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/PageSpeed"}}},"example":{"data":{"enabled":true,"pages":[{"url":"https://northwind.shop/","mobile":{"measuredAt":"2026-10-15T04:00:00.000Z","score":73,"metrics":{"lcp":{"value":3412,"score":0.62},"tbt":{"value":310,"score":0.78},"cls":{"value":0.04,"score":0.99},"fcp":{"value":1490,"score":0.92},"si":{"value":4100,"score":0.71}},"realVisitors":{"scope":"page","rating":"average","metrics":{"lcp":{"p75":2100,"rating":"good"},"inp":{"p75":240,"rating":"average"},"cls":{"p75":0.03,"rating":"good"}}},"opportunities":[{"id":"image-delivery-insight","title":"Improve image delivery","detail":"Use modern formats like WebP.","display":"Est savings of 412 KiB","savingsMs":1250}],"error":null,"lighthouseVersion":"13.0.1"},"desktop":null,"history":{"mobile":[{"t":"2026-10-15T04:00:00.000Z","score":73}],"desktop":[]}}]}}}}},"default":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/monitors/{id}/email":{"get":{"operationId":"email-auth","tags":["Monitors"],"summary":"Get email authentication","description":"Domain monitors only: the latest check of the domain's email setup (MX and mail provider, SPF with its DNS lookup count, DKIM keys found, DMARC policy and report addresses, MTA-STS), a grade (`good`, `attention`, `risk`) and findings worst first, each with a fix or the DNS `record` to add. `history` has the grades of the last 30 checks. Checked twice a day.","parameters":[{"name":"id","in":"path","required":true,"description":"The monitor ID.","schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/EmailAuth"}}},"example":{"data":{"enabled":true,"latest":{"domain":"northwind.shop","checkedAt":"2026-10-15T06:00:00.000Z","grade":"attention","provider":"Google Workspace","receivesMail":true,"mx":[{"priority":1,"exchange":"aspmx.l.google.com"}],"spf":{"record":"v=spf1 include:_spf.google.com ~all","lookups":3,"all":"~all"},"dmarc":{"record":"v=DMARC1; p=none; rua=mailto:dmarc@northwind.shop","policy":"none","subdomainPolicy":null,"pct":null,"reports":["dmarc@northwind.shop"]},"dkim":[{"selector":"google","keyType":"rsa","bits":2048,"revoked":false}],"mtaSts":false,"tlsRpt":false,"findings":[{"area":"dmarc","level":"warning","code":"dmarc.none","text":"DMARC only monitors (p=none): fake mail in your name still gets delivered.","fix":"When the reports show only your own senders, change p=none to p=quarantine, later p=reject."}]},"history":[{"checkedAt":"2026-10-15T06:00:00.000Z","grade":"attention"}]}}}}},"default":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/incidents":{"get":{"operationId":"list-incidents","tags":["Incidents"],"summary":"List incidents","description":"Confirmed outages, newest first. To get the next page, pass the last `startedAt` as `before`.","parameters":[{"name":"status","in":"query","required":false,"description":"open or resolved.","schema":{"type":"string"}},{"name":"monitorId","in":"query","required":false,"description":"Only incidents for this monitor.","schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"description":"1–200, default 50.","schema":{"type":"integer"}},{"name":"before","in":"query","required":false,"description":"ISO 8601 timestamp. Only incidents that started before this.","schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Incident"}},"hasMore":{"type":"boolean","description":"True when there may be more results."}}},"example":{"data":[{"id":"inc_7b3t9r2m5c","monitorId":"mon_9xk2m1q8w4","monitorName":"Checkout","monitorType":"http","status":"resolved","cause":"HTTP 502","regions":[],"startedAt":"2026-10-13T21:02:11.000Z","confirmedAt":"2026-10-13T21:02:24.000Z","resolvedAt":"2026-10-13T21:09:40.000Z","acknowledgedAt":null,"durationSeconds":449}],"hasMore":false}}}},"default":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/incidents/{id}":{"get":{"operationId":"get-incident","tags":["Incidents"],"summary":"Get an incident","description":"One incident with its timeline: detection, confirmation by a second check, alerts and recovery.","parameters":[{"name":"id","in":"path","required":true,"description":"The incident ID.","schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/IncidentWithEvents"}}},"example":{"data":{"id":"inc_7b3t9r2m5c","monitorId":"mon_9xk2m1q8w4","monitorName":"Checkout","monitorType":"http","status":"resolved","cause":"HTTP 502","regions":[],"startedAt":"2026-10-13T21:02:11.000Z","confirmedAt":"2026-10-13T21:02:24.000Z","resolvedAt":"2026-10-13T21:09:40.000Z","acknowledgedAt":null,"durationSeconds":449,"events":[{"type":"check_failed","message":"Check from Stockholm failed: HTTP 502","region":"eu-north","createdAt":"2026-10-13T21:02:11.000Z"},{"type":"confirmed","message":"Confirmed by a second check from Stockholm","region":null,"createdAt":"2026-10-13T21:02:24.000Z"},{"type":"alert_sent","message":"Alert sent to Slack #ops","region":null,"createdAt":"2026-10-13T21:02:26.000Z"},{"type":"resolved","message":"Recovered: check from Stockholm passed","region":null,"createdAt":"2026-10-13T21:09:40.000Z"}]}}}}},"default":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/incidents/{id}/acknowledge":{"post":{"operationId":"acknowledge-incident","tags":["Incidents"],"summary":"Acknowledge an incident","description":"Marks an open incident as being handled. Alerts to channels with an escalation delay that haven't gone out yet are canceled; the recovery alert still goes to everyone who got the outage alert.\n\nRequires a read & write key.","parameters":[{"name":"id","in":"path","required":true,"description":"The incident ID.","schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/IncidentWithEvents"}}},"example":{"data":{"id":"inc_7b3t9r2m5c","monitorId":"mon_9xk2m1q8w4","monitorName":"Checkout","monitorType":"http","status":"open","cause":"HTTP 502","regions":[],"startedAt":"2026-10-13T21:02:11.000Z","confirmedAt":"2026-10-13T21:02:24.000Z","resolvedAt":null,"acknowledgedAt":"2026-10-13T21:04:02.000Z","durationSeconds":null}}}}},"default":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/maintenance":{"get":{"operationId":"list-maintenance","tags":["Maintenance"],"summary":"List maintenance windows","description":"Active and upcoming windows, and those that ended in the last 30 days.","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Maintenance"}}}},"example":{"data":[{"id":"mw_3f8k2n9q","title":"Database upgrade","message":"The shop may be slow for a few minutes.","state":"upcoming","startsAt":"2026-10-18T01:00:00.000Z","endsAt":"2026-10-18T02:00:00.000Z","monitorIds":["mon_9xk2m1q8w4"],"notifiedSubscribers":128}]}}}},"default":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"post":{"operationId":"schedule-maintenance","tags":["Maintenance"],"summary":"Schedule maintenance","description":"No checks, incidents or alerts for the monitors between `startsAt` and `endsAt`, and the time doesn't count against uptime. A start in the past starts the window now. At most 14 days. Handy around deploys: start a window, deploy, end it.\n\nRequires a read & write key.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MaintenanceInput"},"example":{"title":"Deploy","startsAt":"2026-10-14T12:00:00Z","endsAt":"2026-10-14T12:15:00Z","monitorIds":["mon_9xk2m1q8w4"],"notifySubscribers":false}}}},"responses":{"201":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/Maintenance"}}},"example":{"data":{"id":"mw_3f8k2n9q","title":"Deploy","message":"","state":"active","startsAt":"2026-10-14T12:00:00.000Z","endsAt":"2026-10-14T12:15:00.000Z","monitorIds":["mon_9xk2m1q8w4"],"notifiedSubscribers":null}}}}},"default":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/maintenance-schedules":{"get":{"operationId":"list-maintenance-schedules","tags":["Maintenance"],"summary":"List recurring maintenance","description":"Recurring schedules. Their windows are created two weeks ahead and appear in List maintenance windows with their `scheduleId`.","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/MaintenanceSchedule"}}}},"example":{"data":[{"id":"ms_8d2k4m1p","title":"Weekly deploy","message":"","description":"Every Sunday at 02:00 for 1 h (Europe/Stockholm)","frequency":"weekly","weekdays":[0],"startTime":"02:00","durationMinutes":60,"timeZone":"Europe/Stockholm","startsOn":"2026-10-18","endsOn":null,"remindMinutes":1440,"monitorIds":["mon_9xk2m1q8w4"],"nextStartsAt":"2026-10-18T00:00:00.000Z"}]}}}},"default":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/maintenance-schedules/{id}":{"delete":{"operationId":"delete-maintenance-schedule","tags":["Maintenance"],"summary":"Stop recurring maintenance","description":"Deletes the schedule and its windows that haven't started. A window that is running continues; past windows stay.\n\nRequires a read & write key.","parameters":[{"name":"id","in":"path","required":true,"description":"The maintenance schedule ID.","schema":{"type":"string"}}],"responses":{"204":{"description":"No content"},"default":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/maintenance/{id}":{"delete":{"operationId":"end-maintenance","tags":["Maintenance"],"summary":"End or cancel maintenance","description":"Ends an active window now, so checks resume right away, or deletes one that hasn't started.\n\nRequires a read & write key.","parameters":[{"name":"id","in":"path","required":true,"description":"The maintenance window ID.","schema":{"type":"string"}}],"responses":{"204":{"description":"No content"},"default":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/summary":{"get":{"operationId":"summary","tags":["Workspace"],"summary":"Get a summary","description":"Monitor counts per status and the number of open incidents. Handy for wallboards.","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/Summary"}}},"example":{"data":{"monitors":{"total":24,"up":22,"down":1,"pending":0,"paused":1},"openIncidents":1}}}}},"default":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/alert-channels":{"get":{"operationId":"list-alert-channels","tags":["Workspace"],"summary":"List alert channels","description":"Use the IDs in a monitor's `channelIds`. Secrets such as webhook URLs are never returned.","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/AlertChannel"}}}},"example":{"data":[{"id":"ch_4n8v0d2k7p","type":"slack","name":"#ops","hint":"hooks.slack.com/…/T0","isDefault":true,"enabled":true,"verified":true,"createdAt":"2026-10-12T08:10:00.000Z"}]}}}},"default":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/projects":{"get":{"operationId":"list-projects","tags":["Workspace"],"summary":"List projects","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Project"}}}},"example":{"data":[{"id":"prj_2c8x5n1b7v","name":"Northwind","color":"#1F5CFF"}]}}}},"default":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/status-pages":{"get":{"operationId":"list-status-pages","tags":["Status pages"],"summary":"List status pages","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/StatusPage"}}}},"example":{"data":[{"id":"sp_6m1k9z3x0q","slug":"northwind","title":"Northwind status","description":"","url":"https://app.uptimecheck.com/s/northwind","published":true,"passwordProtected":false,"language":"en","projectId":"prj_2c8x5n1b7v","components":4,"createdAt":"2026-10-12T09:00:00.000Z","updatedAt":"2026-10-12T09:00:00.000Z"}]}}}},"default":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/status-pages/{id}/reports":{"get":{"operationId":"list-status-reports","tags":["Status pages"],"summary":"List status updates","description":"The page's updates (each a thread of posts like Investigating → Resolved), newest first, the last 50.","parameters":[{"name":"id","in":"path","required":true,"description":"Status page id.","schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/StatusReport"}}}},"example":{"data":[{"id":"rep_7d2k9x1m","title":"Checkout errors for some customers","status":"identified","componentIds":["mon_9xk2m1q8w4"],"resolvedAt":null,"createdAt":"2026-10-14T09:02:00.000Z","updates":[{"id":"upd_4m1x8q2z","status":"identified","message":"A payment provider is timing out. We're switching to the backup route.","notifiedSubscribers":214,"createdAt":"2026-10-14T09:20:00.000Z"},{"id":"upd_9q3k1m7d","status":"investigating","message":"Some customers can't complete checkout. We're on it.","notifiedSubscribers":214,"createdAt":"2026-10-14T09:02:00.000Z"}]}]}}}},"default":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"post":{"operationId":"create-status-report","tags":["Status pages"],"summary":"Post a status update","description":"Starts an update on the public page, shown at the top until it's resolved. With `notify`, subscribers get it by email or in their chat app (those who follow one of the `componentIds`, or everything). Handy from deploy pipelines and incident tools.\n\nRequires a read & write key.","parameters":[{"name":"id","in":"path","required":true,"description":"Status page id.","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StatusReportInput"},"example":{"title":"Checkout errors for some customers","status":"investigating","message":"Some customers can't complete checkout. We're on it.","componentIds":["mon_9xk2m1q8w4"],"notify":true}}}},"responses":{"201":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/StatusReport"}}},"example":{"data":{"id":"rep_7d2k9x1m","title":"Checkout errors for some customers","status":"identified","componentIds":["mon_9xk2m1q8w4"],"resolvedAt":null,"createdAt":"2026-10-14T09:02:00.000Z","updates":[{"id":"upd_4m1x8q2z","status":"identified","message":"A payment provider is timing out. We're switching to the backup route.","notifiedSubscribers":214,"createdAt":"2026-10-14T09:20:00.000Z"},{"id":"upd_9q3k1m7d","status":"investigating","message":"Some customers can't complete checkout. We're on it.","notifiedSubscribers":214,"createdAt":"2026-10-14T09:02:00.000Z"}]}}}}},"default":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/status-pages/{id}/reports/{reportId}/updates":{"post":{"operationId":"add-status-update","tags":["Status pages"],"summary":"Add to a status update","description":"The next post in the thread. `resolved` closes it; posting again reopens it. Leave out `componentIds` to keep the affected components.\n\nRequires a read & write key.","parameters":[{"name":"id","in":"path","required":true,"description":"Status page id.","schema":{"type":"string"}},{"name":"reportId","in":"path","required":true,"description":"Status update id.","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StatusUpdateInput"},"example":{"status":"resolved","message":"Payments work normally again.","notify":true}}}},"responses":{"201":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/StatusReport"}}},"example":{"data":{"id":"rep_7d2k9x1m","title":"Checkout errors for some customers","status":"identified","componentIds":["mon_9xk2m1q8w4"],"resolvedAt":null,"createdAt":"2026-10-14T09:02:00.000Z","updates":[{"id":"upd_4m1x8q2z","status":"identified","message":"A payment provider is timing out. We're switching to the backup route.","notifiedSubscribers":214,"createdAt":"2026-10-14T09:20:00.000Z"},{"id":"upd_9q3k1m7d","status":"investigating","message":"Some customers can't complete checkout. We're on it.","notifiedSubscribers":214,"createdAt":"2026-10-14T09:02:00.000Z"}]}}}}},"default":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/status-pages/{id}/reports/{reportId}":{"delete":{"operationId":"delete-status-report","tags":["Status pages"],"summary":"Delete a status update","description":"Removes it from the public page. Emails and chat messages already sent can't be recalled.\n\nRequires a read & write key.","parameters":[{"name":"id","in":"path","required":true,"description":"Status page id.","schema":{"type":"string"}},{"name":"reportId","in":"path","required":true,"description":"Status update id.","schema":{"type":"string"}}],"responses":{"200":{"description":"No content"},"default":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}},"webhooks":{"alert":{"post":{"summary":"Alert","description":"Sent to webhook alert channels. Verify `x-uptimecheck-signature`: `sha256=` + hex HMAC-SHA256 of `<x-uptimecheck-timestamp>.<raw body>` with the channel secret, and reject old timestamps. Answer with any 2xx within 10 seconds. Anything else is retried after 30 s, 2 min, 10 min and 30 min (5 attempts). Events: monitor.down, monitor.up, monitor.slow, monitor.fast, certificate.expiring, domain.expiring, dns.changed, site.issues, domain.email_issues, site.performance_dropped, server.rebooted, test.","parameters":[{"name":"x-uptimecheck-timestamp","in":"header","required":true,"description":"Unix time (seconds) when the request was signed.","schema":{"type":"string"}},{"name":"x-uptimecheck-signature","in":"header","required":true,"description":"`sha256=` + hex HMAC-SHA256 of `<timestamp>.<raw body>`, keyed with the channel's secret.","schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookPayload"},"example":{"event":"monitor.down","workspace":"Northwind","monitor":{"name":"Checkout","target":"northwind.shop/checkout","url":"https://app.uptimecheck.com/api/v1/w/northwind/monitors/mon_9xk2m1q8w4"},"cause":"HTTP 502 Bad Gateway","regions":["Stockholm"],"at":"2026-10-14T09:12:00.000Z","downtimeSeconds":null}}}},"responses":{"200":{"description":"Any 2xx acknowledges the alert."}},"security":[]}}},"components":{"securitySchemes":{"apiKey":{"type":"http","scheme":"bearer","description":"A workspace API key from Settings › API."}},"schemas":{"MonitorInput":{"oneOf":[{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":80},"intervalSeconds":{"type":"number","enum":[60,120,300,600,900,1800,3600]},"regions":{"default":[],"type":"array","items":{"type":"string","enum":["eu-north","eu-west","us-east"]}},"projectId":{"default":null,"type":["string","null"]},"channelIds":{"default":[],"maxItems":50,"type":"array","items":{"type":"string"}},"type":{"type":"string","const":"http"},"target":{"type":"string"},"config":{"default":{},"type":"object","properties":{"method":{"default":"GET","type":"string","enum":["GET","HEAD","POST","PUT","PATCH","DELETE","OPTIONS"]},"headers":{"default":[],"maxItems":20,"type":"array","items":{"type":"object","properties":{"name":{"type":"string","pattern":"^[A-Za-z0-9!#$%&'*+.^_`|~-]+$"},"value":{"type":"string","maxLength":2000}},"required":["name","value"]}},"body":{"default":"","type":"string","maxLength":10000},"expectedStatus":{"default":"200-399","type":"string"},"keyword":{"default":null,"anyOf":[{"type":"object","properties":{"value":{"type":"string","minLength":1,"maxLength":500},"mode":{"type":"string","enum":["contains","not_contains"]}},"required":["value","mode"]},{"type":"null"}]},"assertions":{"default":[],"maxItems":10,"type":"array","items":{"type":"object","properties":{"source":{"type":"string","enum":["json","header"]},"path":{"type":"string","minLength":1,"maxLength":200},"op":{"type":"string","enum":["equals","not_equals","contains","not_contains","greater_than","less_than","exists","not_exists"]},"value":{"default":"","type":"string","maxLength":500}},"required":["source","path","op"]}},"followRedirects":{"default":true,"type":"boolean"},"verifyTls":{"default":true,"type":"boolean"},"timeoutMs":{"default":10000,"type":"integer","minimum":1000,"maximum":30000},"slowMs":{"default":null,"anyOf":[{"type":"integer","minimum":50,"maximum":60000},{"type":"null"}]}}}},"required":["name","intervalSeconds","type","target"]},{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":80},"intervalSeconds":{"type":"number","enum":[60,120,300,600,900,1800,3600]},"regions":{"default":[],"type":"array","items":{"type":"string","enum":["eu-north","eu-west","us-east"]}},"projectId":{"default":null,"type":["string","null"]},"channelIds":{"default":[],"maxItems":50,"type":"array","items":{"type":"string"}},"type":{"type":"string","const":"tcp"},"target":{"type":"string"},"port":{"type":"integer","minimum":1,"maximum":65535},"config":{"default":{},"type":"object","properties":{"timeoutMs":{"default":10000,"type":"integer","minimum":1000,"maximum":30000},"slowMs":{"default":null,"anyOf":[{"type":"integer","minimum":50,"maximum":60000},{"type":"null"}]}}}},"required":["name","intervalSeconds","type","target","port"]},{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":80},"intervalSeconds":{"type":"number","enum":[60,120,300,600,900,1800,3600]},"regions":{"default":[],"type":"array","items":{"type":"string","enum":["eu-north","eu-west","us-east"]}},"projectId":{"default":null,"type":["string","null"]},"channelIds":{"default":[],"maxItems":50,"type":"array","items":{"type":"string"}},"type":{"type":"string","const":"ping"},"target":{"type":"string"},"config":{"default":{},"type":"object","properties":{"timeoutMs":{"default":5000,"type":"integer","minimum":1000,"maximum":30000},"slowMs":{"default":null,"anyOf":[{"type":"integer","minimum":50,"maximum":60000},{"type":"null"}]}}}},"required":["name","intervalSeconds","type","target"]},{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":80},"intervalSeconds":{"type":"number","enum":[60,120,300,600,900,1800,3600]},"regions":{"default":[],"type":"array","items":{"type":"string","enum":["eu-north","eu-west","us-east"]}},"projectId":{"default":null,"type":["string","null"]},"channelIds":{"default":[],"maxItems":50,"type":"array","items":{"type":"string"}},"type":{"type":"string","const":"dns"},"target":{"type":"string"},"config":{"default":{},"type":"object","properties":{"recordType":{"default":"A","type":"string","enum":["A","AAAA","CNAME","MX","NS","SOA","TXT","CAA"]},"expected":{"default":[],"maxItems":20,"type":"array","items":{"type":"string","minLength":1,"maxLength":500}}}}},"required":["name","intervalSeconds","type","target"]},{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":80},"intervalSeconds":{},"regions":{"default":[],"type":"array","items":{"type":"string","enum":["eu-north","eu-west","us-east"]}},"projectId":{"default":null,"type":["string","null"]},"channelIds":{"default":[],"maxItems":50,"type":"array","items":{"type":"string"}},"type":{"type":"string","const":"domain"},"target":{"type":"string"},"config":{"default":{},"type":"object","properties":{"email":{"default":true,"type":"boolean"},"dkimSelectors":{"default":[],"maxItems":10,"type":"array","items":{"type":"string","pattern":"^[a-z0-9][a-z0-9._-]{0,62}$"}}}}},"required":["name","type","target"]},{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":80},"intervalSeconds":{"type":"number","enum":[60,300,900,1800,3600,21600,43200,86400,604800]},"regions":{"default":[],"type":"array","items":{"type":"string","enum":["eu-north","eu-west","us-east"]}},"projectId":{"default":null,"type":["string","null"]},"channelIds":{"default":[],"maxItems":50,"type":"array","items":{"type":"string"}},"type":{"type":"string","const":"heartbeat"},"config":{"default":{},"type":"object","properties":{"graceSeconds":{"default":300,"type":"number","enum":[60,300,900,1800,3600,21600]},"schedule":{"default":null,"anyOf":[{"type":"object","properties":{"cron":{"type":"string","minLength":1,"maxLength":120},"timeZone":{"default":"UTC","type":"string","maxLength":64}},"required":["cron"]},{"type":"null"}]},"maxRunSeconds":{"default":null,"anyOf":[{"type":"number","enum":[60,300,900,1800,3600,7200,21600,43200,86400]},{"type":"null"}]}}}},"required":["name","type"]},{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":80},"intervalSeconds":{},"regions":{"default":[],"type":"array","items":{"type":"string","enum":["eu-north","eu-west","us-east"]}},"projectId":{"default":null,"type":["string","null"]},"channelIds":{"default":[],"maxItems":50,"type":"array","items":{"type":"string"}},"type":{"type":"string","const":"server"},"config":{"default":{},"type":"object","properties":{"cpuPercent":{"default":90,"anyOf":[{"type":"integer","minimum":1,"maximum":100},{"type":"null"}]},"memoryPercent":{"default":90,"anyOf":[{"type":"integer","minimum":1,"maximum":100},{"type":"null"}]},"diskPercent":{"default":90,"anyOf":[{"type":"integer","minimum":1,"maximum":100},{"type":"null"}]},"forMinutes":{"default":5,"type":"number","enum":[1,5,10,15,30]},"graceSeconds":{"default":180,"type":"number","enum":[120,180,300,600,900]},"alertOnReboot":{"default":true,"type":"boolean"}}}},"required":["name","type"]},{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":80},"intervalSeconds":{},"regions":{"default":[],"type":"array","items":{"type":"string","enum":["eu-north","eu-west","us-east"]}},"projectId":{"default":null,"type":["string","null"]},"channelIds":{"default":[],"maxItems":50,"type":"array","items":{"type":"string"}},"type":{"type":"string","const":"vendor"},"target":{"type":"string","minLength":1},"config":{"default":{},"type":"object","properties":{"components":{"default":[],"maxItems":50,"type":"array","items":{"type":"string","minLength":1,"maxLength":200}}}}},"required":["name","type","target"]},{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":80},"intervalSeconds":{},"regions":{"default":[],"type":"array","items":{"type":"string","enum":["eu-north","eu-west","us-east"]}},"projectId":{"default":null,"type":["string","null"]},"channelIds":{"default":[],"maxItems":50,"type":"array","items":{"type":"string"}},"type":{"type":"string","const":"crawl"},"target":{"type":"string"},"config":{"default":{},"type":"object","properties":{"maxPages":{"default":100,"type":"number","enum":[50,100,250,500]},"checkExternal":{"default":true,"type":"boolean"},"performance":{"default":true,"type":"boolean"},"performancePages":{"maxItems":4,"type":"array","items":{"type":"string"}},"performanceAlertBelow":{"default":null,"anyOf":[{"type":"number","enum":[90,75,50,30]},{"type":"null"}]}}}},"required":["name","type","target"]},{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":80},"intervalSeconds":{"type":"number","enum":[60,120,300,600,900,1800,3600]},"regions":{"default":[],"type":"array","items":{"type":"string","enum":["eu-north","eu-west","us-east"]}},"projectId":{"default":null,"type":["string","null"]},"channelIds":{"default":[],"maxItems":50,"type":"array","items":{"type":"string"}},"type":{"type":"string","const":"flow"},"target":{"type":"string"},"config":{"type":"object","properties":{"steps":{"minItems":1,"maxItems":10,"type":"array","items":{"oneOf":[{"type":"object","properties":{"id":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,40}$"},"action":{"type":"string","const":"open"},"url":{"default":"","type":"string","maxLength":2000},"expectedStatus":{"default":"200-399","type":"string"},"text":{"default":null,"anyOf":[{"type":"object","properties":{"value":{"type":"string","minLength":1,"maxLength":500},"mode":{"type":"string","enum":["contains","not_contains"]}},"required":["value","mode"]},{"type":"null"}]},"assertions":{"default":[],"maxItems":5,"type":"array","items":{"type":"object","properties":{"source":{"type":"string","enum":["json","header"]},"path":{"type":"string","minLength":1,"maxLength":200},"op":{"type":"string","enum":["equals","not_equals","contains","not_contains","greater_than","less_than","exists","not_exists"]},"value":{"default":"","type":"string","maxLength":500}},"required":["source","path","op"]}},"save":{"default":[],"maxItems":5,"type":"array","items":{"type":"object","properties":{"name":{"type":"string","pattern":"^[A-Za-z_][A-Za-z0-9_]{0,39}$"},"source":{"type":"string","enum":["json","header","regex"]},"path":{"type":"string","minLength":1,"maxLength":300}},"required":["name","source","path"]}}},"required":["action"]},{"type":"object","properties":{"id":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,40}$"},"action":{"type":"string","const":"submit"},"form":{"default":"","type":"string","maxLength":200},"fields":{"default":[],"maxItems":20,"type":"array","items":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":200},"value":{"default":"","type":"string","maxLength":2000},"secret":{"default":false,"type":"boolean"},"sealed":{"type":"string","maxLength":8000}},"required":["name"]}},"expectedStatus":{"default":"200-399","type":"string"},"text":{"default":null,"anyOf":[{"type":"object","properties":{"value":{"type":"string","minLength":1,"maxLength":500},"mode":{"type":"string","enum":["contains","not_contains"]}},"required":["value","mode"]},{"type":"null"}]},"assertions":{"default":[],"maxItems":5,"type":"array","items":{"type":"object","properties":{"source":{"type":"string","enum":["json","header"]},"path":{"type":"string","minLength":1,"maxLength":200},"op":{"type":"string","enum":["equals","not_equals","contains","not_contains","greater_than","less_than","exists","not_exists"]},"value":{"default":"","type":"string","maxLength":500}},"required":["source","path","op"]}},"save":{"default":[],"maxItems":5,"type":"array","items":{"type":"object","properties":{"name":{"type":"string","pattern":"^[A-Za-z_][A-Za-z0-9_]{0,39}$"},"source":{"type":"string","enum":["json","header","regex"]},"path":{"type":"string","minLength":1,"maxLength":300}},"required":["name","source","path"]}}},"required":["action"]},{"type":"object","properties":{"id":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,40}$"},"action":{"type":"string","const":"follow"},"link":{"type":"string","minLength":1,"maxLength":200},"expectedStatus":{"default":"200-399","type":"string"},"text":{"default":null,"anyOf":[{"type":"object","properties":{"value":{"type":"string","minLength":1,"maxLength":500},"mode":{"type":"string","enum":["contains","not_contains"]}},"required":["value","mode"]},{"type":"null"}]},"assertions":{"default":[],"maxItems":5,"type":"array","items":{"type":"object","properties":{"source":{"type":"string","enum":["json","header"]},"path":{"type":"string","minLength":1,"maxLength":200},"op":{"type":"string","enum":["equals","not_equals","contains","not_contains","greater_than","less_than","exists","not_exists"]},"value":{"default":"","type":"string","maxLength":500}},"required":["source","path","op"]}},"save":{"default":[],"maxItems":5,"type":"array","items":{"type":"object","properties":{"name":{"type":"string","pattern":"^[A-Za-z_][A-Za-z0-9_]{0,39}$"},"source":{"type":"string","enum":["json","header","regex"]},"path":{"type":"string","minLength":1,"maxLength":300}},"required":["name","source","path"]}}},"required":["action","link"]},{"type":"object","properties":{"id":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,40}$"},"action":{"type":"string","const":"click"},"target":{"type":"string","minLength":1,"maxLength":200},"expectedStatus":{"default":"200-399","type":"string"},"text":{"default":null,"anyOf":[{"type":"object","properties":{"value":{"type":"string","minLength":1,"maxLength":500},"mode":{"type":"string","enum":["contains","not_contains"]}},"required":["value","mode"]},{"type":"null"}]},"assertions":{"default":[],"maxItems":5,"type":"array","items":{"type":"object","properties":{"source":{"type":"string","enum":["json","header"]},"path":{"type":"string","minLength":1,"maxLength":200},"op":{"type":"string","enum":["equals","not_equals","contains","not_contains","greater_than","less_than","exists","not_exists"]},"value":{"default":"","type":"string","maxLength":500}},"required":["source","path","op"]}},"save":{"default":[],"maxItems":5,"type":"array","items":{"type":"object","properties":{"name":{"type":"string","pattern":"^[A-Za-z_][A-Za-z0-9_]{0,39}$"},"source":{"type":"string","enum":["json","header","regex"]},"path":{"type":"string","minLength":1,"maxLength":300}},"required":["name","source","path"]}}},"required":["action","target"]},{"type":"object","properties":{"id":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,40}$"},"action":{"type":"string","const":"request"},"method":{"default":"GET","type":"string","enum":["GET","POST","PUT","PATCH","DELETE"]},"url":{"type":"string","minLength":1,"maxLength":2000},"headers":{"default":[],"maxItems":20,"type":"array","items":{"type":"object","properties":{"name":{"type":"string","pattern":"^[A-Za-z0-9!#$%&'*+.^_`|~-]+$"},"value":{"default":"","type":"string","maxLength":2000},"secret":{"default":false,"type":"boolean"},"sealed":{"type":"string","maxLength":8000}},"required":["name"]}},"body":{"default":"","type":"string","maxLength":10000},"expectedStatus":{"default":"200-399","type":"string"},"text":{"default":null,"anyOf":[{"type":"object","properties":{"value":{"type":"string","minLength":1,"maxLength":500},"mode":{"type":"string","enum":["contains","not_contains"]}},"required":["value","mode"]},{"type":"null"}]},"assertions":{"default":[],"maxItems":5,"type":"array","items":{"type":"object","properties":{"source":{"type":"string","enum":["json","header"]},"path":{"type":"string","minLength":1,"maxLength":200},"op":{"type":"string","enum":["equals","not_equals","contains","not_contains","greater_than","less_than","exists","not_exists"]},"value":{"default":"","type":"string","maxLength":500}},"required":["source","path","op"]}},"save":{"default":[],"maxItems":5,"type":"array","items":{"type":"object","properties":{"name":{"type":"string","pattern":"^[A-Za-z_][A-Za-z0-9_]{0,39}$"},"source":{"type":"string","enum":["json","header","regex"]},"path":{"type":"string","minLength":1,"maxLength":300}},"required":["name","source","path"]}}},"required":["action","url"]}]}},"verifyTls":{"default":true,"type":"boolean"},"timeoutMs":{"default":15000,"type":"integer","minimum":1000,"maximum":30000},"browser":{"default":false,"type":"boolean"}},"required":["steps"]}},"required":["name","intervalSeconds","type","target","config"]}],"description":"Fields per type. `type` selects the variant."},"MonitorPatch":{"type":"object","description":"Any subset of the MonitorInput fields for the monitor's type, except `type`.","additionalProperties":true},"Monitor":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"type":{"type":"string","enum":["http","tcp","ping","dns","domain","heartbeat","server","vendor","crawl","flow"]},"target":{"type":["string","null"],"description":"URL, host or domain. Null for heartbeats; for servers, the hostname the agent reported; for vendor monitors, a catalog id (klarna, shopify, cloudflare…) or a Statuspage https address."},"port":{"type":["integer","null"]},"config":{"type":"object","description":"Type-specific settings, see MonitorInput. Flows: secret field and header values (passwords, tokens) are stored encrypted and come back with an empty `value` and `saved: true`; send them empty to keep the saved value."},"intervalSeconds":{"type":"integer"},"regions":{"type":"array","items":{"type":"string"},"description":"Empty means all online locations."},"projectId":{"type":["string","null"]},"channelIds":{"type":"array","items":{"type":"string"}},"status":{"type":"string","enum":["up","down","pending","paused"]},"statusChangedAt":{"type":["string","null"],"format":"date-time"},"slowSince":{"type":["string","null"],"format":"date-time","description":"Set while three checks in a row were slower than config.slowMs."},"lastCheckedAt":{"type":["string","null"],"format":"date-time","description":"For heartbeats: the last ping."},"lastResponseMs":{"type":["integer","null"]},"lastError":{"type":["string","null"]},"heartbeatUrl":{"type":["string","null"],"description":"Heartbeats only: the URL your job calls."},"agentToken":{"type":["string","null"],"description":"Servers only: pass it to the agent installer (--token)."},"agent":{"type":["object","null"],"description":"Servers only: hostname, os, platform, kernel, arch, cpus, bootTime and agentVersion from the last report."},"sslExpiresAt":{"type":["string","null"],"format":"date-time"},"domainExpiresAt":{"type":["string","null"],"format":"date-time"},"domainRegistrar":{"type":["string","null"]},"dnsRecords":{"type":["array","null"],"items":{"type":"string"}},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}}},"MonitorWithUptime":{"allOf":[{"$ref":"#/components/schemas/Monitor"},{"type":"object","properties":{"uptime24h":{"type":["number","null"]},"avgResponseMs24h":{"type":["integer","null"]}}}]},"MonitorWithStats":{"allOf":[{"$ref":"#/components/schemas/Monitor"},{"type":"object","properties":{"stats":{"type":"object","properties":{"uptime24h":{"type":["number","null"]},"uptime7d":{"type":["number","null"]},"uptime30d":{"type":["number","null"]},"avgResponseMs24h":{"type":["integer","null"]}}}}}]},"ServerMetrics":{"type":"object","properties":{"latest":{"type":["object","null"],"description":"The most recent report; disks lists every filesystem."},"points":{"type":"array","items":{"type":"object","properties":{"t":{"type":"string","format":"date-time"},"cpu":{"type":["number","null"]},"memory":{"type":["number","null"]},"disk":{"type":["number","null"]},"rx":{"type":["number","null"]},"tx":{"type":["number","null"]}}}}}},"EmailAuth":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether the monitor checks email authentication."},"latest":{"type":["object","null"],"description":"The latest check; null before the first or when turned off."},"history":{"type":"array","items":{"type":"object","properties":{"checkedAt":{"type":"string","format":"date-time"},"grade":{"type":"string"}}}}}},"PageSpeed":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether the monitor measures page speed."},"pages":{"type":"array","items":{"type":"object","properties":{"url":{"type":"string"},"mobile":{"type":["object","null"],"description":"The latest run on a mid-range phone with slow 4G; null before the first."},"desktop":{"type":["object","null"],"description":"The latest run on desktop."},"history":{"type":"object","description":"Scores over 90 days per device: { mobile: [{ t, score }], desktop: [...] }."}}}}}},"Check":{"type":"object","properties":{"region":{"type":"string"},"ok":{"type":"boolean"},"responseMs":{"type":["integer","null"]},"statusCode":{"type":["integer","null"]},"error":{"type":["string","null"]},"details":{"type":["object","null"],"description":"Failed checks only: ip, resolved, timings (dns, connect, tls, ttfb, total in ms), protocol, tls, redirects, headers and the start of the response body."},"checkedAt":{"type":"string","format":"date-time"}}},"Incident":{"type":"object","properties":{"id":{"type":"string"},"monitorId":{"type":"string"},"monitorName":{"type":"string"},"monitorType":{"type":"string"},"status":{"type":"string","enum":["open","resolved"]},"cause":{"type":"string"},"regions":{"type":"array","items":{"type":"string"}},"startedAt":{"type":"string","format":"date-time"},"confirmedAt":{"type":"string","format":"date-time"},"resolvedAt":{"type":["string","null"],"format":"date-time"},"acknowledgedAt":{"type":["string","null"],"format":"date-time"},"durationSeconds":{"type":["integer","null"]}}},"IncidentWithEvents":{"allOf":[{"$ref":"#/components/schemas/Incident"},{"type":"object","properties":{"events":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string"},"message":{"type":"string"},"region":{"type":["string","null"]},"createdAt":{"type":"string","format":"date-time"}}}}}}]},"Summary":{"type":"object","properties":{"monitors":{"type":"object","properties":{"total":{"type":"integer"},"up":{"type":"integer"},"down":{"type":"integer"},"pending":{"type":"integer"},"paused":{"type":"integer"}}},"openIncidents":{"type":"integer"}}},"AlertChannel":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","enum":["email","push","slack","teams","discord","google_chat","mattermost","telegram","pagerduty","ntfy","pushover","webhook","sms","voice"]},"name":{"type":"string"},"hint":{"type":["string","null"]},"isDefault":{"type":"boolean"},"enabled":{"type":"boolean"},"verified":{"type":"boolean","description":"SMS and phone channels get alerts only once the number is confirmed."},"createdAt":{"type":"string","format":"date-time"}}},"Project":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"color":{"type":"string"}}},"WebhookPayload":{"type":"object","required":["event","workspace","monitor","at"],"properties":{"event":{"type":"string","enum":["monitor.down","monitor.up","monitor.slow","monitor.fast","certificate.expiring","domain.expiring","dns.changed","site.issues","domain.email_issues","site.performance_dropped","server.rebooted","test"]},"workspace":{"type":"string"},"monitor":{"type":"object","properties":{"name":{"type":"string"},"target":{"type":"string"},"url":{"type":"string","description":"The monitor in Uptimecheck."}}},"cause":{"type":["string","null"]},"regions":{"type":"array","items":{"type":"string"},"description":"Locations that saw the failure."},"at":{"type":"string","format":"date-time"},"downtimeSeconds":{"type":["integer","null"]},"expiresAt":{"type":"string","format":"date-time","description":"certificate.expiring and domain.expiring"},"daysLeft":{"type":["integer","null"]},"before":{"type":"array","items":{"type":"string"},"description":"dns.changed"},"after":{"type":"array","items":{"type":"string"},"description":"dns.changed"},"avgMs":{"type":["integer","null"],"description":"monitor.slow and monitor.fast"},"limitMs":{"type":["integer","null"]}}},"Maintenance":{"type":"object","properties":{"id":{"type":"string"},"title":{"type":"string"},"message":{"type":"string"},"state":{"type":"string","enum":["upcoming","active","ended"]},"startsAt":{"type":"string","format":"date-time"},"endsAt":{"type":"string","format":"date-time"},"monitorIds":{"type":"array","items":{"type":"string"}},"notifiedSubscribers":{"type":["integer","null"],"description":"How many status page subscribers were emailed about the window. Null until the emails are sent, or when none were requested."},"scheduleId":{"type":["string","null"],"description":"The recurring schedule that created the window."}}},"MaintenanceSchedule":{"type":"object","properties":{"id":{"type":"string"},"title":{"type":"string"},"message":{"type":"string"},"description":{"type":"string","description":"The rule in words, e.g. \"Every Sunday at 02:00 for 1 h (Europe/Stockholm)\"."},"frequency":{"type":"string","enum":["daily","weekly","monthly"]},"weekdays":{"type":"array","items":{"type":"integer","minimum":0,"maximum":6},"description":"Weekly: 0 = Sunday … 6 = Saturday."},"startTime":{"type":"string","description":"Local start time, HH:MM."},"durationMinutes":{"type":"integer"},"timeZone":{"type":"string","description":"IANA time zone the times repeat in."},"startsOn":{"type":"string","format":"date"},"endsOn":{"type":["string","null"],"format":"date"},"remindMinutes":{"type":["integer","null"],"description":"Status page subscribers are emailed this many minutes before each window."},"monitorIds":{"type":"array","items":{"type":"string"}},"nextStartsAt":{"type":["string","null"],"format":"date-time"}}},"MaintenanceInput":{"type":"object","required":["title","startsAt","endsAt","monitorIds"],"properties":{"title":{"type":"string","maxLength":120},"message":{"type":"string","maxLength":1000,"description":"Shown on status pages."},"startsAt":{"type":"string","format":"date-time"},"endsAt":{"type":"string","format":"date-time"},"monitorIds":{"type":"array","items":{"type":"string"},"minItems":1},"notifySubscribers":{"type":"boolean","default":false,"description":"Email confirmed subscribers of published status pages that show any of the monitors, now and again if the window is canceled before it starts."},"repeat":{"type":"object","description":"Makes the window the first of a recurring schedule; the response is then the schedule. The first window sets the time of day and the duration (at most a day); monthly windows fall on its day of the month.","required":["frequency"],"properties":{"frequency":{"type":"string","enum":["daily","weekly","monthly"]},"weekdays":{"type":"array","items":{"type":"integer","minimum":0,"maximum":6},"description":"Weekly: 0 = Sunday … 6 = Saturday. Defaults to the first window's weekday."},"timeZone":{"type":"string","default":"UTC","description":"IANA time zone, so the local time holds across daylight saving."},"endsOn":{"type":["string","null"],"format":"date","description":"Last date with a window; null repeats until the schedule is deleted."},"remindMinutes":{"type":["integer","null"],"minimum":15,"maximum":10080,"description":"Email status page subscribers this many minutes before each window."}}}}},"StatusReport":{"type":"object","properties":{"id":{"type":"string"},"title":{"type":"string"},"status":{"type":"string","enum":["investigating","identified","monitoring","resolved","notice"],"description":"The latest post's status."},"componentIds":{"type":"array","items":{"type":"string"},"description":"Affected components (monitor ids on the page); empty = the whole page."},"resolvedAt":{"type":["string","null"],"format":"date-time"},"createdAt":{"type":"string","format":"date-time"},"updates":{"type":"array","description":"Newest first.","items":{"type":"object","properties":{"id":{"type":"string"},"status":{"type":"string","enum":["investigating","identified","monitoring","resolved","notice"]},"message":{"type":"string"},"notifiedSubscribers":{"type":["integer","null"],"description":"How many subscribers got it; null until sent, or when not requested."},"createdAt":{"type":"string","format":"date-time"}}}}}},"StatusReportInput":{"type":"object","required":["title","status","message"],"properties":{"title":{"type":"string","maxLength":160},"status":{"type":"string","enum":["investigating","identified","monitoring","resolved","notice"]},"message":{"type":"string","maxLength":5000},"componentIds":{"type":"array","items":{"type":"string"},"description":"Affected components (monitor ids shown on the page). Others are ignored."},"notify":{"type":"boolean","default":false,"description":"Tell subscribers by email or in their chat app."}}},"StatusUpdateInput":{"type":"object","required":["status","message"],"properties":{"status":{"type":"string","enum":["investigating","identified","monitoring","resolved","notice"]},"message":{"type":"string","maxLength":5000},"componentIds":{"type":"array","items":{"type":"string"},"description":"Replaces the affected components; leave out to keep them."},"notify":{"type":"boolean","default":false}}},"StatusPage":{"type":"object","properties":{"id":{"type":"string"},"slug":{"type":"string"},"title":{"type":"string"},"description":{"type":"string"},"url":{"type":"string","format":"uri"},"published":{"type":"boolean"},"passwordProtected":{"type":"boolean"},"language":{"type":"string","enum":["en","sv","da","nb","fi","de","fr","es","nl"],"description":"The language visitors and subscribers see the page in."},"projectId":{"type":["string","null"]},"components":{"type":"integer"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}}},"Error":{"type":"object","properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"fields":{"type":"object","additionalProperties":{"type":"string"},"description":"Validation message per field, e.g. config.timeoutMs."}}}}}}}}