KEEPitALIVE / API

PUBLIC API V1

KEEPitALIVE Public API

Programmatic monitoring API for applications, scripts, CI/CD systems, SDKs, and agents.

Base /api/v1Auth Bearer API keyContract OpenAPI 3.1

This reference is generated from the canonical contract. It has no credential input and loads no third-party code. Agents should also read the safety guide.

34 endpoints
GET/api/v1/activityActivity

Return newest-first API-key-attributed actions across the account using keyset pagination.

Required scopemonitors:read
Parameters
  • limit — query
  • before — query
Responses
200Successful response
400Invalid request
401Missing or invalid API key
403Insufficient scope, plan, or monitor permission
404Resource not found or not visible to this key
409Operation conflicts with current state
422Semantically invalid request
429Rate limited
503Required dependency unavailable
curl example
curl -H "Authorization: Bearer $KEEPITALIVE_API_KEY" https://keepitalive.dev/api/v1/activity
GET/api/v1/eventsEvents

Open a Server-Sent Events stream of API-accessible monitor transitions and activity signals; snapshot current state after connecting.

Required scopemonitors:read
Responses
200Successful response
400Invalid request
401Missing or invalid API key
403Insufficient scope, plan, or monitor permission
404Resource not found or not visible to this key
409Operation conflicts with current state
422Semantically invalid request
429Rate limited
503Required dependency unavailable
curl example
curl -H "Authorization: Bearer $KEEPITALIVE_API_KEY" https://keepitalive.dev/api/v1/events
GET/api/v1/groupsGroups

Return owned groups with monitor and active-monitor counts.

Required scopemonitors:read
Responses
200Successful response
400Invalid request
401Missing or invalid API key
403Insufficient scope, plan, or monitor permission
404Resource not found or not visible to this key
409Operation conflicts with current state
422Semantically invalid request
429Rate limited
503Required dependency unavailable
curl example
curl -H "Authorization: Bearer $KEEPITALIVE_API_KEY" https://keepitalive.dev/api/v1/groups
GET/api/v1/groups/{group_id}/statusGroups

Return an owner-scoped group health rollup with member states, incidents, checks, history, and uptime windows.

Required scopemonitors:read
Parameters
  • group_id — path
  • history_days — query
Responses
200Successful response
400Invalid request
401Missing or invalid API key
403Insufficient scope, plan, or monitor permission
404Resource not found or not visible to this key
409Operation conflicts with current state
422Semantically invalid request
429Rate limited
503Required dependency unavailable
curl example
curl -H "Authorization: Bearer $KEEPITALIVE_API_KEY" https://keepitalive.dev/api/v1/groups/{group_id}/status
GET/api/v1/incidentsIncidents

Return a bounded recent incident collection across API-accessible monitors.

Required scopeincidents:read
Parameters
  • limit — query
  • since — query
Responses
200Successful response
400Invalid request
401Missing or invalid API key
403Insufficient scope, plan, or monitor permission
404Resource not found or not visible to this key
409Operation conflicts with current state
422Semantically invalid request
429Rate limited
503Required dependency unavailable
curl example
curl -H "Authorization: Bearer $KEEPITALIVE_API_KEY" https://keepitalive.dev/api/v1/incidents
GET/api/v1/incidents/{incident_id}Incidents

Return one incident only when its monitor is accessible to the API key.

Required scopeincidents:read
Parameters
  • incident_id — path
Responses
200Successful response
400Invalid request
401Missing or invalid API key
403Insufficient scope, plan, or monitor permission
404Resource not found or not visible to this key
409Operation conflicts with current state
422Semantically invalid request
429Rate limited
503Required dependency unavailable
curl example
curl -H "Authorization: Bearer $KEEPITALIVE_API_KEY" https://keepitalive.dev/api/v1/incidents/{incident_id}
PATCH/api/v1/incidents/{incident_id}Incidents

Update incident title, description, or operator classification within the allowed reclassification window.

Required scopeincidents:write
Parameters
  • incident_id — path
Request body · IncidentPatch
classification
string
Reclassify (frozen 7 days after resolution). false_positive requires a description.
description
string
Update description.
title
string
Update title.
Responses
200Successful response
400Invalid request
401Missing or invalid API key
403Insufficient scope, plan, or monitor permission
404Resource not found or not visible to this key
409Operation conflicts with current state
422Semantically invalid request
429Rate limited
503Required dependency unavailable
curl example
curl -X PATCH -H "Authorization: Bearer $KEEPITALIVE_API_KEY" -H "Content-Type: application/json" -d '{}' https://keepitalive.dev/api/v1/incidents/{incident_id}
POST/api/v1/incidents/{incident_id}/closeIncidents

Resolve an open manual incident; repeated retries may use Idempotency-Key.

Required scopeincidents:write
Parameters
  • incident_id — path
Responses
201Created
400Invalid request
401Missing or invalid API key
403Insufficient scope, plan, or monitor permission
404Resource not found or not visible to this key
409Operation conflicts with current state
422Semantically invalid request
429Rate limited
503Required dependency unavailable
curl example
curl -X POST -H "Authorization: Bearer $KEEPITALIVE_API_KEY" https://keepitalive.dev/api/v1/incidents/{incident_id}/close
GET/api/v1/incidents/{incident_id}/commentsIncidents

Return comments for an incident whose monitor is accessible to the API key.

Required scopeincidents:read
Parameters
  • incident_id — path
Responses
200Successful response
400Invalid request
401Missing or invalid API key
403Insufficient scope, plan, or monitor permission
404Resource not found or not visible to this key
409Operation conflicts with current state
422Semantically invalid request
429Rate limited
503Required dependency unavailable
curl example
curl -H "Authorization: Bearer $KEEPITALIVE_API_KEY" https://keepitalive.dev/api/v1/incidents/{incident_id}/comments
POST/api/v1/incidents/{incident_id}/commentsIncidents

Append an operator comment to an accessible incident.

Required scopeincidents:write
Parameters
  • incident_id — path
Request body · CommentCreate
body required
string
Comment body.
Responses
201Created
400Invalid request
401Missing or invalid API key
403Insufficient scope, plan, or monitor permission
404Resource not found or not visible to this key
409Operation conflicts with current state
422Semantically invalid request
429Rate limited
503Required dependency unavailable
curl example
curl -X POST -H "Authorization: Bearer $KEEPITALIVE_API_KEY" -H "Content-Type: application/json" -d '{}' https://keepitalive.dev/api/v1/incidents/{incident_id}/comments
DELETE/api/v1/incidents/{incident_id}/comments/{comment_id}Incidents

Delete an incident comment when permitted without revealing inaccessible incident existence.

Required scopeincidents:write
Parameters
  • incident_id — path
  • comment_id — path
Responses
204Deleted
400Invalid request
401Missing or invalid API key
403Insufficient scope, plan, or monitor permission
404Resource not found or not visible to this key
409Operation conflicts with current state
422Semantically invalid request
429Rate limited
503Required dependency unavailable
curl example
curl -X DELETE -H "Authorization: Bearer $KEEPITALIVE_API_KEY" https://keepitalive.dev/api/v1/incidents/{incident_id}/comments/{comment_id}
GET/api/v1/meCapabilities

Return the caller's plan, granted scopes, account limits, current usage, and credits so clients can plan before acting.

Responses
200Successful response
400Invalid request
401Missing or invalid API key
403Insufficient scope, plan, or monitor permission
404Resource not found or not visible to this key
409Operation conflicts with current state
422Semantically invalid request
429Rate limited
503Required dependency unavailable
curl example
curl -H "Authorization: Bearer $KEEPITALIVE_API_KEY" https://keepitalive.dev/api/v1/me
GET/api/v1/monitorsMonitors

List owned and, when explicitly enabled by their owner, shared monitors; supports bounded inventory pagination.

Required scopemonitors:read
Parameters
  • scope — query
  • limit — query
  • offset — query
Responses
200Successful response
400Invalid request
401Missing or invalid API key
403Insufficient scope, plan, or monitor permission
404Resource not found or not visible to this key
409Operation conflicts with current state
422Semantically invalid request
429Rate limited
503Required dependency unavailable
curl example
curl -H "Authorization: Bearer $KEEPITALIVE_API_KEY" https://keepitalive.dev/api/v1/monitors
POST/api/v1/monitorsMonitors

Create an enabled or paused monitor using the common fields and the selected monitor type's configuration schema.

Required scopemonitors:write
Request body · MonitorCreate

Select the schema matching the discriminator field:

MonitorCreateApi

active
boolean
Whether the monitor checks. Created PAUSED by default (active=false) — a new monitor will NOT run until activated. Pass active:true to start checking now (subject to your plan's active-monitor cap: 403 if full), or PATCH active:true later.
alert_after_checks
integer
Consecutive failing checks before DOWN alert (1-10, default 1).
capture_response_headers
boolean
Capture response headers.
check_method
string
HTTP method (default GET).
custom_headers
object
Map of header name -> value.
degraded_after_checks
integer
Consecutive degraded checks before alert (default 1).
expected_statuses
array
Status codes treated as up (default [200]).
http_body
string
Request body.
http_content_type
string
Request Content-Type (default application/json).
interval_sec required
integer
Check interval; must be an allowed value and >= your plan minimum.
json_assertions
object
JSON assertions evaluated against the response.
max_capture_bytes
integer
Max response bytes to capture (default 2048).
name required
string
Display name.
public_label
string
Label shown on public status pages.
threshold_ms
integer
Degraded-latency threshold in ms (advanced; Maker/Pro).
type required
string
<nil>
url required
string
Endpoint URL.

MonitorCreateBrowser

active
boolean
Whether the monitor checks. Created PAUSED by default (active=false) — a new monitor will NOT run until activated. Pass active:true to start checking now (subject to your plan's active-monitor cap: 403 if full), or PATCH active:true later.
alert_after_checks
integer
Consecutive failing checks before DOWN alert (1-10, default 1).
capture_response
boolean
Capture page output.
degraded_after_checks
integer
Consecutive degraded checks before alert (default 1).
interval_sec required
integer
Check interval; must be an allowed value and >= your plan minimum.
keyword
string
Text the rendered page must contain.
name required
string
Display name.
public_label
string
Label shown on public status pages.
threshold_ms
integer
Degraded-latency threshold in ms (advanced; Maker/Pro).
type required
string
<nil>
url required
string
Target URL for the headless browser check.
verify_ssl
boolean
Verify the TLS certificate.

MonitorCreateDns

active
boolean
Whether the monitor checks. Created PAUSED by default (active=false) — a new monitor will NOT run until activated. Pass active:true to start checking now (subject to your plan's active-monitor cap: 403 if full), or PATCH active:true later.
alert_after_checks
integer
Consecutive failing checks before DOWN alert (1-10, default 1).
degraded_after_checks
integer
Consecutive degraded checks before alert (default 1).
dns_expected_value
string
Assert the single record resolves to this.
dns_expected_values
array
Per-record-type expected patterns (max 3 each). Positional array aligned with dns_record_types.
dns_host required
string
Domain to resolve.
dns_record_type
string
Single record type (A/AAAA/CNAME/MX/TXT/NS).
dns_record_types
array
Multiple record types to query. dns_expected_values[i] applies to dns_record_types[i].
dns_resolvers
array
Resolvers to query (max 3).
domain_expiry
boolean
Track domain registration expiry.
interval_sec required
integer
Check interval; must be an allowed value and >= your plan minimum.
name required
string
Display name.
public_label
string
Label shown on public status pages.
threshold_ms
integer
Degraded-latency threshold in ms (advanced; Maker/Pro).
type required
string
<nil>

MonitorCreateGame

active
boolean
Whether the monitor checks. Created PAUSED by default (active=false) — a new monitor will NOT run until activated. Pass active:true to start checking now (subject to your plan's active-monitor cap: 403 if full), or PATCH active:true later.
alert_after_checks
integer
Consecutive failing checks before DOWN alert (1-10, default 1).
check_method
string
Game protocol/query mode. source_query = Steam A2S. No generic custom mode exists.
degraded_after_checks
integer
Consecutive degraded checks before alert (default 1).
host required
string
Game server host (Steam A2S query).
interval_sec required
integer
Check interval; must be an allowed value and >= your plan minimum.
name required
string
Display name.
players_public_mode
string
Roster visibility on public pages.
pop_drop_min
integer
Minimum player delta for a population-drop alert.
pop_drop_pct
integer
Population-drop % vs recent peak that marks degraded (Maker/Pro).
pop_outage_pct
integer
Population-drop % treated as an outage.
port required
integer
Query port.
public_label
string
Label shown on public status pages.
query_players
boolean
Capture live player roster (Maker/Pro).
threshold_ms
integer
Degraded-latency threshold in ms (advanced; Maker/Pro).
type required
string
<nil>

MonitorCreateHeartbeat

active
boolean
Whether the monitor checks. Created PAUSED by default (active=false) — a new monitor will NOT run until activated. Pass active:true to start checking now (subject to your plan's active-monitor cap: 403 if full), or PATCH active:true later.
alert_after_checks
integer
Consecutive failing checks before DOWN alert (1-10, default 1).
degraded_after_checks
integer
Consecutive degraded checks before alert (default 1).
heartbeat_grace_sec
integer
Extra grace beyond interval_sec before a missed beat counts.
interval_sec required
integer
Check interval; must be an allowed value and >= your plan minimum.
miss_detection
boolean
Scheduled mode: alert if no beat within interval (true). false = dormant event-receiver.
name required
string
Display name.
public_label
string
Label shown on public status pages.
threshold_ms
integer
Degraded-latency threshold in ms (advanced; Maker/Pro).
type required
string
<nil>

MonitorCreateHttp

active
boolean
Whether the monitor checks. Created PAUSED by default (active=false) — a new monitor will NOT run until activated. Pass active:true to start checking now (subject to your plan's active-monitor cap: 403 if full), or PATCH active:true later.
alert_after_checks
integer
Consecutive failing checks before DOWN alert (1-10, default 1).
capture_response
boolean
Capture a slice of the response body.
check_method
string
HTTP method (default GET).
custom_headers
object
Map of header name -> value.
degraded_after_checks
integer
Consecutive degraded checks before alert (default 1).
domain_expiry
boolean
Track domain (WHOIS/RDAP) expiry.
domain_warn_days
array
Days-before-domain-expiry to alert on.
expected_statuses
array
Status codes treated as up (default [200]).
http_body
string
Request body.
http_content_type
string
Content-Type for the request body.
http_force_http1
boolean
Force HTTP/1.1.
http_header_mode
string
Header preset (e.g. 'minimal').
interval_sec required
integer
Check interval; must be an allowed value and >= your plan minimum.
keyword
string
Body must contain (or, with keyword_absent, must NOT contain) this.
keyword_absent
boolean
Invert keyword: fail if the keyword IS present.
name required
string
Display name.
public_label
string
Label shown on public status pages.
ssl_warn_days
array
Days-before-expiry to alert on (e.g. [30,7,1]).
threshold_ms
integer
Degraded-latency threshold in ms (advanced; Maker/Pro).
type required
string
<nil>
url required
string
Target URL (http/https).
verify_ssl
boolean
Verify the TLS certificate (HTTP/browser monitors only; API monitors always verify).

MonitorCreatePing

active
boolean
Whether the monitor checks. Created PAUSED by default (active=false) — a new monitor will NOT run until activated. Pass active:true to start checking now (subject to your plan's active-monitor cap: 403 if full), or PATCH active:true later.
alert_after_checks
integer
Consecutive failing checks before DOWN alert (1-10, default 1).
degraded_after_checks
integer
Consecutive degraded checks before alert (default 1).
host required
string
Hostname or IP to ICMP-ping.
interval_sec required
integer
Check interval; must be an allowed value and >= your plan minimum.
name required
string
Display name.
public_label
string
Label shown on public status pages.
threshold_ms
integer
Latency threshold for degraded.
type required
string
<nil>

MonitorCreateTcp

active
boolean
Whether the monitor checks. Created PAUSED by default (active=false) — a new monitor will NOT run until activated. Pass active:true to start checking now (subject to your plan's active-monitor cap: 403 if full), or PATCH active:true later.
alert_after_checks
integer
Consecutive failing checks before DOWN alert (1-10, default 1).
degraded_after_checks
integer
Consecutive degraded checks before alert (default 1).
host required
string
Hostname or IP.
interval_sec required
integer
Check interval; must be an allowed value and >= your plan minimum.
name required
string
Display name.
port required
integer
TCP port to connect to.
public_label
string
Label shown on public status pages.
threshold_ms
integer
Latency threshold for degraded.
type required
string
<nil>
Responses
201Created
400Invalid request
401Missing or invalid API key
403Insufficient scope, plan, or monitor permission
404Resource not found or not visible to this key
409Operation conflicts with current state
422Semantically invalid request
429Rate limited
503Required dependency unavailable
curl example
curl -X POST -H "Authorization: Bearer $KEEPITALIVE_API_KEY" -H "Content-Type: application/json" -d '{}' https://keepitalive.dev/api/v1/monitors
GET/api/v1/monitors/{monitor_ref}Monitors

Return one accessible monitor by its stable public reference.

Required scopemonitors:read
Parameters
  • monitor_ref — path
Responses
200Successful response
400Invalid request
401Missing or invalid API key
403Insufficient scope, plan, or monitor permission
404Resource not found or not visible to this key
409Operation conflicts with current state
422Semantically invalid request
429Rate limited
503Required dependency unavailable
curl example
curl -H "Authorization: Bearer $KEEPITALIVE_API_KEY" https://keepitalive.dev/api/v1/monitors/{monitor_ref}
PATCH/api/v1/monitors/{monitor_ref}Monitors

Partially update an owned monitor; prefer explicit idempotent values such as active=true or active=false.

Required scopemonitors:write
Parameters
  • monitor_ref — path
Request body · MonitorPatch
active
boolean
Pause (false) / resume (true), idempotent.
alert_after_checks
integer
Consecutive failing checks before DOWN alert (1-10, plan-gated).
capture_response
boolean
Capture a slice of response output.
capture_response_headers
boolean
Capture response headers for API monitors.
check_method
string
HTTP/API method or game query mode. Game values: source_query, minecraft, fivem, ping, tcp.
custom_headers
object
Map of header name -> value. Secret-looking values are masked on read.
degraded_after_checks
integer
Consecutive degraded checks before alert (1-10, plan-gated).
dns_expected_value
string
Expected value for single DNS record type.
dns_expected_values
array
Per-record-type expected patterns (max 3 each). Positional array aligned with dns_record_types.
dns_host
string
Domain to resolve.
dns_record_type
string
Single record type (A/AAAA/CNAME/MX/TXT/NS).
dns_record_types
array
Multiple record types to query. dns_expected_values[i] applies to dns_record_types[i].
dns_resolvers
array
Resolvers to query (max 3).
domain_expiry
boolean
Track domain registration expiry.
domain_warn_days
array
Days-before-domain-expiry to alert on.
expected_statuses
array
HTTP/API/browser status codes treated as up.
heartbeat_grace_sec
integer
Extra grace beyond interval_sec before missed heartbeat counts.
host
string
Ping/TCP/game host.
http_body
string
HTTP/API request body.
http_content_type
string
Request Content-Type.
http_force_http1
boolean
Force HTTP/1.1.
http_header_mode
string
Header preset (minimal/browser_like).
interval_sec
integer
Owner-only; plan-validated.
json_assertions
object
API-monitor JSON assertions evaluated against the response.
keyword
string
Body/rendered page must contain, or must not contain with keyword_absent.
keyword_absent
boolean
Invert keyword check.
max_capture_bytes
integer
Max response bytes to capture.
miss_detection
boolean
Heartbeat scheduled miss detection. false = event receiver.
name
string
Rename.
players_public_mode
string
Roster visibility on public pages.
pop_drop_min
integer
Minimum player delta for a population-drop alert.
pop_drop_pct
integer
Population-drop % vs recent peak that marks degraded.
pop_outage_pct
integer
Population-drop % treated as outage.
port
integer
TCP/game port.
public_label
string
Status-page label.
query_players
boolean
Capture player roster when supported and plan-allowed.
ssl_warn_days
array
Days-before-certificate-expiry to alert on.
threshold_ms
integer
Degraded-latency threshold in ms.
url
string
HTTP/browser/API target URL.
verify_ssl
boolean
Verify TLS certificate for HTTP/browser monitors; API monitors always verify.
Responses
200Successful response
400Invalid request
401Missing or invalid API key
403Insufficient scope, plan, or monitor permission
404Resource not found or not visible to this key
409Operation conflicts with current state
422Semantically invalid request
429Rate limited
503Required dependency unavailable
curl example
curl -X PATCH -H "Authorization: Bearer $KEEPITALIVE_API_KEY" -H "Content-Type: application/json" -d '{}' https://keepitalive.dev/api/v1/monitors/{monitor_ref}
DELETE/api/v1/monitors/{monitor_ref}Monitors

Permanently delete an owned monitor and its dependent operational data.

Required scopemonitors:write
Parameters
  • monitor_ref — path
Responses
204Deleted
400Invalid request
401Missing or invalid API key
403Insufficient scope, plan, or monitor permission
404Resource not found or not visible to this key
409Operation conflicts with current state
422Semantically invalid request
429Rate limited
503Required dependency unavailable
curl example
curl -X DELETE -H "Authorization: Bearer $KEEPITALIVE_API_KEY" https://keepitalive.dev/api/v1/monitors/{monitor_ref}
GET/api/v1/monitors/{monitor_ref}/activityActivity

Return the full session and API action history for one accessible monitor using keyset pagination.

Required scopemonitors:read
Parameters
  • monitor_ref — path
  • limit — query
  • before — query
Responses
200Successful response
400Invalid request
401Missing or invalid API key
403Insufficient scope, plan, or monitor permission
404Resource not found or not visible to this key
409Operation conflicts with current state
422Semantically invalid request
429Rate limited
503Required dependency unavailable
curl example
curl -H "Authorization: Bearer $KEEPITALIVE_API_KEY" https://keepitalive.dev/api/v1/monitors/{monitor_ref}/activity
GET/api/v1/monitors/{monitor_ref}/checksChecks

Return recent diagnostic check outcomes without captured response bodies or sensitive request configuration.

Required scopemonitors:read
Parameters
  • monitor_ref — path
  • limit — query
  • before — query
Responses
200Successful response
400Invalid request
401Missing or invalid API key
403Insufficient scope, plan, or monitor permission
404Resource not found or not visible to this key
409Operation conflicts with current state
422Semantically invalid request
429Rate limited
503Required dependency unavailable
curl example
curl -H "Authorization: Bearer $KEEPITALIVE_API_KEY" https://keepitalive.dev/api/v1/monitors/{monitor_ref}/checks
GET/api/v1/monitors/{monitor_ref}/incidentsIncidents

Return newest-first incident history for one monitor using an RFC3339 cursor.

Required scopeincidents:read
Parameters
  • monitor_ref — path
  • limit — query
  • before — query
Responses
200Successful response
400Invalid request
401Missing or invalid API key
403Insufficient scope, plan, or monitor permission
404Resource not found or not visible to this key
409Operation conflicts with current state
422Semantically invalid request
429Rate limited
503Required dependency unavailable
curl example
curl -H "Authorization: Bearer $KEEPITALIVE_API_KEY" https://keepitalive.dev/api/v1/monitors/{monitor_ref}/incidents
POST/api/v1/monitors/{monitor_ref}/incidentsIncidents

Open an outage, degraded, or maintenance incident for an owned monitor; maintenance suppresses alerts until closed.

Required scopeincidents:write
Parameters
  • monitor_ref — path
Request body · IncidentCreate
classification
string
Defaults to outage. false_positive not allowed at create.
description
string
Details (alias: body).
title
string
Incident title.
Responses
201Created
400Invalid request
401Missing or invalid API key
403Insufficient scope, plan, or monitor permission
404Resource not found or not visible to this key
409Operation conflicts with current state
422Semantically invalid request
429Rate limited
503Required dependency unavailable
curl example
curl -X POST -H "Authorization: Bearer $KEEPITALIVE_API_KEY" -H "Content-Type: application/json" -d '{}' https://keepitalive.dev/api/v1/monitors/{monitor_ref}/incidents
GET/api/v1/monitors/{monitor_ref}/notificationsNotifications

Return the caller's global-channel and channel-instance overrides for one accessible monitor.

Required scopemonitors:read
Parameters
  • monitor_ref — path
Responses
200Successful response
400Invalid request
401Missing or invalid API key
403Insufficient scope, plan, or monitor permission
404Resource not found or not visible to this key
409Operation conflicts with current state
422Semantically invalid request
429Rate limited
503Required dependency unavailable
curl example
curl -H "Authorization: Bearer $KEEPITALIVE_API_KEY" https://keepitalive.dev/api/v1/monitors/{monitor_ref}/notifications
PATCH/api/v1/monitors/{monitor_ref}/notificationsNotifications

Replace selected caller-owned notification overrides; null values inherit the account or channel-instance default.

Required scopemonitors:write
Parameters
  • monitor_ref — path
Request body · NotificationOverridesPatch
global
array
<nil>
instances
array
<nil>
Responses
204Notification overrides updated
400Invalid request
401Missing or invalid API key
403Insufficient scope, plan, or monitor permission
404Resource not found or not visible to this key
409Operation conflicts with current state
422Semantically invalid request
429Rate limited
503Required dependency unavailable
curl example
curl -X PATCH -H "Authorization: Bearer $KEEPITALIVE_API_KEY" -H "Content-Type: application/json" -d '{}' https://keepitalive.dev/api/v1/monitors/{monitor_ref}/notifications
GET/api/v1/monitors/{monitor_ref}/triggersTriggers

Return redacted trigger configuration for a monitor; callback URLs, request bodies, headers, and secrets are omitted.

Required scopetriggers:read
Parameters
  • monitor_ref — path
Responses
200Successful response
400Invalid request
401Missing or invalid API key
403Insufficient scope, plan, or monitor permission
404Resource not found or not visible to this key
409Operation conflicts with current state
422Semantically invalid request
429Rate limited
503Required dependency unavailable
curl example
curl -H "Authorization: Bearer $KEEPITALIVE_API_KEY" https://keepitalive.dev/api/v1/monitors/{monitor_ref}/triggers
POST/api/v1/monitors/{monitor_ref}/triggersTriggers

Create an enabled HTTPS webhook or notify trigger; arbitrary HTTP-request triggers and caller-supplied secrets remain app-only.

Required scopetriggers:write
Parameters
  • monitor_ref — path
Request body · TriggerCreate

Select the schema matching the discriminator field:

TriggerCreateWebhook

conditions
object
Filter object with an expr string; see /api/agent for grammar and safety guidance.
name
string
Optional; auto-generated from type if omitted.
on_degraded
boolean
Fire on DEGRADED.
on_down
boolean
Fire on DOWN transition.
on_flapping_start
boolean
Fire when flapping starts.
on_flapping_stop
boolean
Fire when flapping stops.
on_maintenance_end
boolean
Fire when maintenance ends.
on_maintenance_start
boolean
Fire when maintenance starts.
on_payload
boolean
Fire on every payload (api/heartbeat monitors that emit a body); stripped if the monitor can't emit one.
on_recovered
boolean
Fire on recovery.
on_signal
boolean
Fire on every heartbeat beat (heartbeat monitors).
retry_count
integer
Webhook delivery retries after the first failed attempt (0-3; plan-gated). Notify triggers instead receive two automatic per-destination retries.
retry_delay_sec
integer
Webhook retry base delay in seconds (5-600, default 30; plan-gated; exponential backoff).
type required
string
<nil>
url required
string
https callback URL (no credentials, no custom headers). Receives the KEEPitALIVE-signed JSON payload; HMAC secret is server-derived and never returned.

TriggerCreateNotify

body
string
Notification body template. Supports {{monitor.*}} and {{event.*}} for every monitor; {{payload.*}} is available only when the monitor emits a captured payload.
conditions
object
Filter object with an expr string; see /api/agent for grammar and safety guidance.
incident_classification
string
degraded | outage | maintenance (required when open_incident=true).
name
string
Optional; auto-generated from type if omitted.
notify_channels
array
Channels to notify, e.g. ["in_app","email","discord"]; must already be configured in-app.
notify_cooldown_sec
integer
Min seconds between notifications (rate floor).
notify_title required
string
Notification title.
on_degraded
boolean
Fire on DEGRADED.
on_down
boolean
Fire on DOWN transition.
on_flapping_start
boolean
Fire when flapping starts.
on_flapping_stop
boolean
Fire when flapping stops.
on_maintenance_end
boolean
Fire when maintenance ends.
on_maintenance_start
boolean
Fire when maintenance starts.
on_payload
boolean
Fire on every payload (api/heartbeat monitors that emit a body); stripped if the monitor can't emit one.
on_recovered
boolean
Fire on recovery.
on_signal
boolean
Fire on every heartbeat beat (heartbeat monitors).
open_incident
boolean
Open/auto-resolve an incident on this trigger. Requires incident_classification AND conditions.
type required
string
<nil>
Responses
201Created
400Invalid request
401Missing or invalid API key
403Insufficient scope, plan, or monitor permission
404Resource not found or not visible to this key
409Operation conflicts with current state
422Semantically invalid request
429Rate limited
503Required dependency unavailable
curl example
curl -X POST -H "Authorization: Bearer $KEEPITALIVE_API_KEY" -H "Content-Type: application/json" -d '{}' https://keepitalive.dev/api/v1/monitors/{monitor_ref}/triggers
GET/api/v1/monitors/{monitor_ref}/triggers/{trigger_id}Triggers

Return one redacted webhook or notify trigger configuration.

Required scopetriggers:read
Parameters
  • monitor_ref — path
  • trigger_id — path
Responses
200Successful response
400Invalid request
401Missing or invalid API key
403Insufficient scope, plan, or monitor permission
404Resource not found or not visible to this key
409Operation conflicts with current state
422Semantically invalid request
429Rate limited
503Required dependency unavailable
curl example
curl -H "Authorization: Bearer $KEEPITALIVE_API_KEY" https://keepitalive.dev/api/v1/monitors/{monitor_ref}/triggers/{trigger_id}
PATCH/api/v1/monitors/{monitor_ref}/triggers/{trigger_id}Triggers

Partially edit a trigger; enabled-only changes require triggers:toggle while every other field requires triggers:write.

Required scopetriggers:toggle
Parameters
  • monitor_ref — path
  • trigger_id — path
Request body · TriggerPatch
conditions
object
Cloudflare-style filter expression object (triggers:write).
enabled
boolean
Enable or disable the trigger (triggers:toggle; may be sent alone).
incident_classification
string
degraded, outage, or maintenance (triggers:write).
name
string
Rename the trigger (triggers:write).
notify_channels
array
Configured notification channels (triggers:write).
notify_cooldown_sec
integer
Notification cooldown (triggers:write).
notify_title
string
Notification title for notify triggers (triggers:write).
on_degraded
boolean
Fire on DEGRADED transition (triggers:write).
on_down
boolean
Fire on DOWN transition (triggers:write).
on_flapping_start
boolean
Fire when flapping starts (triggers:write).
on_flapping_stop
boolean
Fire when flapping stops (triggers:write).
on_maintenance_end
boolean
Fire when maintenance ends (triggers:write).
on_maintenance_start
boolean
Fire when maintenance starts (triggers:write).
on_payload
boolean
Fire on captured payload; requires conditions (triggers:write).
on_recovered
boolean
Fire on recovery (triggers:write).
on_signal
boolean
Fire on heartbeat signal (triggers:write).
open_incident
boolean
Open and auto-resolve an incident while conditions match (triggers:write).
retry_delay_sec
integer
Webhook-only retry base delay in seconds (triggers:write).
url
string
HTTPS callback URL for webhook triggers only (triggers:write).
Responses
200Successful response
400Invalid request
401Missing or invalid API key
403Insufficient scope, plan, or monitor permission
404Resource not found or not visible to this key
409Operation conflicts with current state
422Semantically invalid request
429Rate limited
503Required dependency unavailable
curl example
curl -X PATCH -H "Authorization: Bearer $KEEPITALIVE_API_KEY" -H "Content-Type: application/json" -d '{}' https://keepitalive.dev/api/v1/monitors/{monitor_ref}/triggers/{trigger_id}
DELETE/api/v1/monitors/{monitor_ref}/triggers/{trigger_id}Triggers

Delete a trigger and resolve any incident still owned by that trigger.

Required scopetriggers:write
Parameters
  • monitor_ref — path
  • trigger_id — path
Responses
204Deleted
400Invalid request
401Missing or invalid API key
403Insufficient scope, plan, or monitor permission
404Resource not found or not visible to this key
409Operation conflicts with current state
422Semantically invalid request
429Rate limited
503Required dependency unavailable
curl example
curl -X DELETE -H "Authorization: Bearer $KEEPITALIVE_API_KEY" https://keepitalive.dev/api/v1/monitors/{monitor_ref}/triggers/{trigger_id}
GET/api/v1/monitors/{monitor_ref}/triggers/{trigger_id}/deliveriesTriggers

Return newest-first delivered, failed, and skipped execution outcomes without destination secrets or rendered request data.

Required scopetriggers:read
Parameters
  • monitor_ref — path
  • trigger_id — path
  • limit — query
  • before — query
Responses
200Successful response
400Invalid request
401Missing or invalid API key
403Insufficient scope, plan, or monitor permission
404Resource not found or not visible to this key
409Operation conflicts with current state
422Semantically invalid request
429Rate limited
503Required dependency unavailable
curl example
curl -H "Authorization: Bearer $KEEPITALIVE_API_KEY" https://keepitalive.dev/api/v1/monitors/{monitor_ref}/triggers/{trigger_id}/deliveries
GET/api/v1/notification-channelsNotifications

Return configured global channels and channel instances that may be referenced by per-monitor notification overrides; secrets are never returned.

Required scopemonitors:read
Responses
200Successful response
400Invalid request
401Missing or invalid API key
403Insufficient scope, plan, or monitor permission
404Resource not found or not visible to this key
409Operation conflicts with current state
422Semantically invalid request
429Rate limited
503Required dependency unavailable
curl example
curl -H "Authorization: Bearer $KEEPITALIVE_API_KEY" https://keepitalive.dev/api/v1/notification-channels
GET/api/v1/statusStatus

Return a thin status-only view of owned monitors without URLs, headers, tokens, or monitor configuration.

Required scopemonitors:read
Responses
200Successful response
400Invalid request
401Missing or invalid API key
403Insufficient scope, plan, or monitor permission
404Resource not found or not visible to this key
409Operation conflicts with current state
422Semantically invalid request
429Rate limited
503Required dependency unavailable
curl example
curl -H "Authorization: Bearer $KEEPITALIVE_API_KEY" https://keepitalive.dev/api/v1/status
GET/api/v1/status-pagesStatus Pages

Return status pages owned by the caller, including public embed URLs when available.

Required scopemonitors:read
Responses
200Successful response
400Invalid request
401Missing or invalid API key
403Insufficient scope, plan, or monitor permission
404Resource not found or not visible to this key
409Operation conflicts with current state
422Semantically invalid request
429Rate limited
503Required dependency unavailable
curl example
curl -H "Authorization: Bearer $KEEPITALIVE_API_KEY" https://keepitalive.dev/api/v1/status-pages
POST/api/v1/status-pagesStatus Pages

Create a private status page for all monitors, one group, or selected monitors; publishing and later editing remain app-only.

Required scopestatus_pages:write
Request body · StatusPageCreate
accent_color
string
Hex accent color when the plan permits branding.
description
string
Public description.
group_id
string
Group id when scope_type=group.
is_public
boolean
Must be false when creating through the public API.
logo_url
string
Hosted branding logo URL when the plan permits branding.
monitor_ids
array
Monitor references when scope_type=monitors.
name required
string
Page name.
scope_type
string
Status-page scope.
theme
string
Visual theme.
Responses
201Created
400Invalid request
401Missing or invalid API key
403Insufficient scope, plan, or monitor permission
404Resource not found or not visible to this key
409Operation conflicts with current state
422Semantically invalid request
429Rate limited
503Required dependency unavailable
curl example
curl -X POST -H "Authorization: Bearer $KEEPITALIVE_API_KEY" -H "Content-Type: application/json" -d '{}' https://keepitalive.dev/api/v1/status-pages
GET/api/v1/summarySummary

Return a one-call owned-fleet snapshot with state counts, open incidents, check volume, and 24-hour, 7-day, and 30-day uptime.

Required scopemonitors:read
Responses
200Successful response
400Invalid request
401Missing or invalid API key
403Insufficient scope, plan, or monitor permission
404Resource not found or not visible to this key
409Operation conflicts with current state
422Semantically invalid request
429Rate limited
503Required dependency unavailable
curl example
curl -H "Authorization: Bearer $KEEPITALIVE_API_KEY" https://keepitalive.dev/api/v1/summary