Skip to main content

Monitor object

id
integer
Unique numeric identifier for the monitor.
tag
string
URL-friendly identifier. Only lowercase letters, numbers, hyphens, and underscores. Must start and end with a letter or number. Cannot be changed after creation.
name
string
Display name for the monitor.
description
string | null
Optional description text.
image
string | null
Optional image URL for the monitor.
cron
string | null
Cron expression that controls how often the monitor runs.
default_status
string | null
Status reported when no data is available. One of UP, DOWN, DEGRADED.
status
string | null
Operational status of the monitor. One of ACTIVE, INACTIVE.
category_name
string | null
Category the monitor belongs to.
monitor_type
string
Type of monitor. Examples: API, PING, TCP, DNS, SSL, SQL, GRPC, HEARTBEAT, GROUP.
type_data
object | null
Type-specific configuration. Shape depends on monitor_type.
include_degraded_in_downtime
string
Whether to count DEGRADED status as downtime. YES or NO.
is_hidden
string
Whether the monitor is hidden from the public status page. YES or NO.
monitor_settings_json
object | null
Advanced monitor settings.
created_at
string
ISO 8601 timestamp of when the monitor was created.
updated_at
string
ISO 8601 timestamp of the last update.

List monitors

status
string
Filter by operational status: ACTIVE or INACTIVE.
category_name
string
Filter by category name.
monitor_type
string
Filter by monitor type (e.g., API, PING, HEARTBEAT).
is_hidden
string
Filter by visibility: YES or NO.
GET /api/v4/monitors
Response 200
{
  "monitors": [
    {
      "id": 1,
      "tag": "api-gateway",
      "name": "API Gateway",
      "description": "Main API gateway health check",
      "image": null,
      "cron": "* * * * *",
      "default_status": "UP",
      "status": "ACTIVE",
      "category_name": "Infrastructure",
      "monitor_type": "API",
      "type_data": { "url": "https://api.example.com/health" },
      "include_degraded_in_downtime": "NO",
      "is_hidden": "NO",
      "monitor_settings_json": null,
      "created_at": "2026-01-01T00:00:00.000Z",
      "updated_at": "2026-01-01T00:00:00.000Z"
    }
  ]
}
curl -X GET https://your-kener-instance.com/api/v4/monitors \
  -H "Authorization: Bearer kener_..."

Get a monitor

GET /api/v4/monitors/{monitor_tag}
Path parameters
monitor_tag
string
required
The tag of the monitor to retrieve.
Response 200
{
  "monitor": {
    "id": 1,
    "tag": "api-gateway",
    "name": "API Gateway",
    "description": null,
    "image": null,
    "cron": "* * * * *",
    "default_status": "UP",
    "status": "ACTIVE",
    "category_name": null,
    "monitor_type": "API",
    "type_data": null,
    "include_degraded_in_downtime": "NO",
    "is_hidden": "NO",
    "monitor_settings_json": null,
    "created_at": "2026-01-01T00:00:00.000Z",
    "updated_at": "2026-01-01T00:00:00.000Z"
  }
}
curl -X GET https://your-kener-instance.com/api/v4/monitors/api-gateway \
  -H "Authorization: Bearer kener_..."

Create a monitor

POST /api/v4/monitors
tag
string
required
URL-friendly identifier. Only lowercase letters, numbers, hyphens (-), and underscores (_). Must start and end with a letter or number. Must be unique.
name
string
required
Display name for the monitor.
description
string
Optional description.
image
string
Optional image URL.
cron
string
Cron expression for the check schedule.
default_status
string
Status to report when no data is available. Defaults to UP.
status
string
Initial operational status. Defaults to ACTIVE.
category_name
string
Category to assign the monitor to.
monitor_type
string
Type of monitor. Defaults to API.
type_data
object
Type-specific configuration object.
include_degraded_in_downtime
string
Whether to count DEGRADED as downtime. YES or NO. Defaults to NO.
is_hidden
string
Hide from public status page. YES or NO. Defaults to NO.
monitor_settings_json
object
Advanced settings.
Response 201
{
  "monitor": {
    "id": 2,
    "tag": "checkout-service",
    "name": "Checkout Service",
    "description": null,
    "image": null,
    "cron": "* * * * *",
    "default_status": "UP",
    "status": "ACTIVE",
    "category_name": null,
    "monitor_type": "API",
    "type_data": null,
    "include_degraded_in_downtime": "NO",
    "is_hidden": "NO",
    "monitor_settings_json": null,
    "created_at": "2026-01-15T10:00:00.000Z",
    "updated_at": "2026-01-15T10:00:00.000Z"
  }
}
curl -X POST https://your-kener-instance.com/api/v4/monitors \
  -H "Authorization: Bearer kener_..." \
  -H "Content-Type: application/json" \
  -d '{
    "tag": "checkout-service",
    "name": "Checkout Service",
    "monitor_type": "API",
    "cron": "* * * * *"
  }'
A monitor tag can only contain lowercase letters (a-z), numbers (0-9), hyphens (-), and underscores (_). It must start and end with a letter or number. Single-character tags must be a letter or number.

Update a monitor

Performs a partial update. Only the fields you include in the request body are changed. The tag field cannot be changed.
PATCH /api/v4/monitors/{monitor_tag}
Path parameters
monitor_tag
string
required
The tag of the monitor to update.
name
string
New display name.
description
string | null
New description.
image
string | null
New image URL.
cron
string | null
New cron expression.
default_status
string | null
New default status.
status
string | null
New operational status (ACTIVE or INACTIVE).
category_name
string | null
New category name.
monitor_type
string | null
New monitor type.
type_data
object | null
Type-specific configuration. Merged with existing data (not replaced).
include_degraded_in_downtime
string
YES or NO.
is_hidden
string
YES or NO.
monitor_settings_json
object | null
Advanced settings. Merged with existing settings (not replaced).
Response 200
{
  "monitor": {
    "id": 1,
    "tag": "api-gateway",
    "name": "API Gateway (Updated)",
    "status": "INACTIVE",
    "created_at": "2026-01-01T00:00:00.000Z",
    "updated_at": "2026-01-15T12:00:00.000Z"
  }
}
curl -X PATCH https://your-kener-instance.com/api/v4/monitors/api-gateway \
  -H "Authorization: Bearer kener_..." \
  -H "Content-Type: application/json" \
  -d '{
    "status": "INACTIVE",
    "description": "Temporarily disabled for maintenance"
  }'

Get monitoring data

Returns per-minute data points for a monitor over a time range.
GET /api/v4/monitors/{monitor_tag}/data
Path parameters
monitor_tag
string
required
The tag of the monitor.
Query parameters
start_ts
integer
required
Start of the range as a UTC Unix timestamp in seconds.
end_ts
integer
required
End of the range as a UTC Unix timestamp in seconds. Must be greater than start_ts.
Response 200
{
  "data": [
    {
      "monitor_tag": "api-gateway",
      "timestamp": 1737000000,
      "status": "UP",
      "latency": 120,
      "type": "API"
    }
  ]
}
curl -X GET "https://your-kener-instance.com/api/v4/monitors/api-gateway/data?start_ts=1737000000&end_ts=1737003600" \
  -H "Authorization: Bearer kener_..."

Update monitoring data (range)

Overwrite monitoring data for a range of minutes. Sets type to MANUAL for all updated points.
PATCH /api/v4/monitors/{monitor_tag}/data
Path parameters
monitor_tag
string
required
The tag of the monitor.
start_ts
integer
required
Start of the range (UTC seconds). Must be less than end_ts.
end_ts
integer
required
End of the range (UTC seconds).
status
string
required
Status to apply. One of UP, DOWN, DEGRADED.
latency
number
required
Latency in milliseconds. Must be non-negative.
deviation
number
Latency deviation in milliseconds. Defaults to 0. Must be non-negative.
Response 200
{
  "message": "Monitoring data updated successfully",
  "updated_count": 60
}
curl -X PATCH https://your-kener-instance.com/api/v4/monitors/api-gateway/data \
  -H "Authorization: Bearer kener_..." \
  -H "Content-Type: application/json" \
  -d '{
    "start_ts": 1737000000,
    "end_ts": 1737003600,
    "status": "DOWN",
    "latency": 0
  }'

Get a monitoring data point

Returns the data point for a monitor at a specific minute-aligned timestamp.
GET /api/v4/monitors/{monitor_tag}/data/{timestamp}
Path parameters
monitor_tag
string
required
The tag of the monitor.
timestamp
integer
required
UTC Unix timestamp in seconds. Automatically truncated to the start of the minute.
Response 200
{
  "data": {
    "monitor_tag": "api-gateway",
    "timestamp": 1737000000,
    "status": "UP",
    "latency": 95,
    "type": "API"
  }
}
curl -X GET https://your-kener-instance.com/api/v4/monitors/api-gateway/data/1737000000 \
  -H "Authorization: Bearer kener_..."

Update a monitoring data point

Upserts the data point for a monitor at a specific timestamp. Sets type to MANUAL.
PATCH /api/v4/monitors/{monitor_tag}/data/{timestamp}
Path parameters
monitor_tag
string
required
The tag of the monitor.
timestamp
integer
required
UTC Unix timestamp in seconds.
status
string
New status. One of UP, DOWN, DEGRADED. If omitted, retains the existing value.
latency
number
New latency in milliseconds. Must be non-negative. If omitted, retains the existing value.
Response 200
{
  "data": {
    "monitor_tag": "api-gateway",
    "timestamp": 1737000000,
    "status": "DOWN",
    "latency": 0,
    "type": "MANUAL"
  }
}
curl -X PATCH https://your-kener-instance.com/api/v4/monitors/api-gateway/data/1737000000 \
  -H "Authorization: Bearer kener_..." \
  -H "Content-Type: application/json" \
  -d '{
    "status": "DOWN",
    "latency": 0
  }'

Build docs developers (and LLMs) love