Skip to main content

Incident object

id
integer
Unique numeric identifier.
title
string
Incident title.
start_date_time
integer
UTC Unix timestamp (seconds) when the incident started. Truncated to the start of the minute.
end_date_time
integer | null
UTC Unix timestamp (seconds) when the incident ended. null if the incident is still open.
state
string
Current incident state. One of INVESTIGATING, IDENTIFIED, MONITORING, RESOLVED.
incident_source
string
How the incident was created. API for incidents created via this API, MANUAL for dashboard-created incidents.
incident_type
string
Type of incident record. Typically INCIDENT.
monitors
array
Monitors affected by this incident.
created_at
string
ISO 8601 timestamp of creation.
updated_at
string
ISO 8601 timestamp of last update.

List incidents

start_ts
integer
Filter to incidents that started at or after this UTC Unix timestamp (seconds).
end_ts
integer
Filter to incidents that started at or before this UTC Unix timestamp (seconds).
monitor_tags
string
Comma-separated list of monitor tags to filter by (e.g., api-gateway,checkout-service). Returns incidents linked to any of the specified monitors.
GET /api/v4/incidents
Response 200
{
  "incidents": [
    {
      "id": 1,
      "title": "API Gateway Outage",
      "start_date_time": 1737000000,
      "end_date_time": 1737003600,
      "state": "RESOLVED",
      "incident_source": "API",
      "monitors": [
        { "monitor_tag": "api-gateway", "impact": "DOWN" }
      ],
      "created_at": "2026-01-15T10:00:00.000Z",
      "updated_at": "2026-01-15T11:00:00.000Z"
    }
  ]
}
curl -X GET https://your-kener-instance.com/api/v4/incidents \
  -H "Authorization: Bearer kener_..."

Get an incident

GET /api/v4/incidents/{incident_id}
Path parameters
incident_id
integer
required
Numeric ID of the incident.
Response 200
{
  "incident": {
    "id": 1,
    "title": "API Gateway Outage",
    "start_date_time": 1737000000,
    "end_date_time": null,
    "state": "INVESTIGATING",
    "incident_type": "INCIDENT",
    "incident_source": "API",
    "monitors": [
      { "monitor_tag": "api-gateway", "impact": "DOWN" }
    ],
    "created_at": "2026-01-15T10:00:00.000Z",
    "updated_at": "2026-01-15T10:00:00.000Z"
  }
}
curl -X GET https://your-kener-instance.com/api/v4/incidents/1 \
  -H "Authorization: Bearer kener_..."

Create an incident

New incidents are created with state INVESTIGATING. Add comments to move the incident through its lifecycle.
POST /api/v4/incidents
title
string
required
Incident title.
start_date_time
integer
required
UTC Unix timestamp in seconds when the incident started.
end_date_time
integer | null
UTC Unix timestamp in seconds when the incident ended. Omit for open incidents.
monitors
array
Monitors to associate with the incident.
Response 201
{
  "incident": {
    "id": 2,
    "title": "Database Slowdown",
    "start_date_time": 1737010000,
    "end_date_time": null,
    "state": "INVESTIGATING",
    "incident_type": "INCIDENT",
    "incident_source": "API",
    "monitors": [
      { "monitor_tag": "database", "impact": "DEGRADED" }
    ],
    "created_at": "2026-01-15T12:00:00.000Z",
    "updated_at": "2026-01-15T12:00:00.000Z"
  }
}
curl -X POST https://your-kener-instance.com/api/v4/incidents \
  -H "Authorization: Bearer kener_..." \
  -H "Content-Type: application/json" \
  -d '{
    "title": "Database Slowdown",
    "start_date_time": 1737010000,
    "monitors": [
      { "monitor_tag": "database", "impact": "DEGRADED" }
    ]
  }'

Update an incident

Performs a partial update. Only the fields you provide are changed. Updating monitors replaces the full monitor list — pass an empty array to remove all.
PATCH /api/v4/incidents/{incident_id}
Path parameters
incident_id
integer
required
Numeric ID of the incident.
title
string
New incident title.
start_date_time
integer
New start timestamp (UTC seconds).
end_date_time
integer | null
New end timestamp (UTC seconds). Pass null to reopen the incident.
monitors
array
Replacement monitor list. Replaces all existing monitor associations.
Response 200
{
  "incident": {
    "id": 2,
    "title": "Database Slowdown (resolved)",
    "start_date_time": 1737010000,
    "end_date_time": 1737013600,
    "state": "INVESTIGATING",
    "incident_type": "INCIDENT",
    "incident_source": "API",
    "monitors": [
      { "monitor_tag": "database", "impact": "DEGRADED" }
    ],
    "created_at": "2026-01-15T12:00:00.000Z",
    "updated_at": "2026-01-15T13:00:00.000Z"
  }
}
curl -X PATCH https://your-kener-instance.com/api/v4/incidents/2 \
  -H "Authorization: Bearer kener_..." \
  -H "Content-Type: application/json" \
  -d '{
    "end_date_time": 1737013600,
    "title": "Database Slowdown (resolved)"
  }'
Updating monitors to an empty array removes all monitor associations from the incident.

Delete an incident

Permanently deletes an incident and all its comments. Associated monitor alerts have their incident_id cleared.
DELETE /api/v4/incidents/{incident_id}
Path parameters
incident_id
integer
required
Numeric ID of the incident to delete.
Response 200
{
  "message": "Incident with id '2' deleted successfully"
}
curl -X DELETE https://your-kener-instance.com/api/v4/incidents/2 \
  -H "Authorization: Bearer kener_..."

Comment object

Comments represent timeline updates posted to an incident. Adding a comment with state RESOLVED also sets end_date_time on the incident.
id
integer
Unique numeric identifier.
incident_id
integer
ID of the incident this comment belongs to.
comment
string
The comment text.
timestamp
integer
UTC Unix timestamp (seconds) when the update occurred. Truncated to minute start.
state
string
Incident state at the time of this comment. One of INVESTIGATING, IDENTIFIED, MONITORING, RESOLVED.
created_at
string
ISO 8601 creation timestamp.
updated_at
string
ISO 8601 last-updated timestamp.

List comments

GET /api/v4/incidents/{incident_id}/comments
Path parameters
incident_id
integer
required
Numeric ID of the incident.
Response 200
{
  "comments": [
    {
      "id": 1,
      "incident_id": 1,
      "comment": "We are investigating increased error rates.",
      "timestamp": 1737000000,
      "state": "INVESTIGATING",
      "created_at": "2026-01-15T10:00:00.000Z",
      "updated_at": "2026-01-15T10:00:00.000Z"
    }
  ]
}
curl -X GET https://your-kener-instance.com/api/v4/incidents/1/comments \
  -H "Authorization: Bearer kener_..."

Get a comment

GET /api/v4/incidents/{incident_id}/comments/{comment_id}
Path parameters
incident_id
integer
required
Numeric ID of the incident.
comment_id
integer
required
Numeric ID of the comment.
Response 200
{
  "comment": {
    "id": 1,
    "incident_id": 1,
    "comment": "We are investigating increased error rates.",
    "timestamp": 1737000000,
    "state": "INVESTIGATING",
    "created_at": "2026-01-15T10:00:00.000Z",
    "updated_at": "2026-01-15T10:00:00.000Z"
  }
}
curl -X GET https://your-kener-instance.com/api/v4/incidents/1/comments/1 \
  -H "Authorization: Bearer kener_..."

Add a comment

Adding a comment with state: "RESOLVED" automatically sets end_date_time on the parent incident to the comment’s timestamp.
POST /api/v4/incidents/{incident_id}/comments
Path parameters
incident_id
integer
required
Numeric ID of the incident.
comment
string
required
Comment text.
state
string
required
New incident state after this update. One of INVESTIGATING, IDENTIFIED, MONITORING, RESOLVED.
timestamp
integer
UTC Unix timestamp in seconds. Defaults to the current time if omitted.
Response 201
{
  "comment": {
    "id": 2,
    "incident_id": 1,
    "comment": "Root cause identified — rolling back deployment.",
    "timestamp": 1737001800,
    "state": "IDENTIFIED",
    "created_at": "2026-01-15T10:30:00.000Z",
    "updated_at": "2026-01-15T10:30:00.000Z"
  }
}
curl -X POST https://your-kener-instance.com/api/v4/incidents/1/comments \
  -H "Authorization: Bearer kener_..." \
  -H "Content-Type: application/json" \
  -d '{
    "comment": "Root cause identified — rolling back deployment.",
    "state": "IDENTIFIED",
    "timestamp": 1737001800
  }'

Update a comment

Performs a partial update on a comment. Does not change the incident’s current state.
PATCH /api/v4/incidents/{incident_id}/comments/{comment_id}
Path parameters
incident_id
integer
required
Numeric ID of the incident.
comment_id
integer
required
Numeric ID of the comment to update.
comment
string
New comment text.
state
string
New state for this comment. One of INVESTIGATING, IDENTIFIED, MONITORING, RESOLVED.
timestamp
integer
New timestamp (UTC seconds).
Response 200
{
  "comment": {
    "id": 2,
    "incident_id": 1,
    "comment": "Root cause identified — rollback in progress.",
    "timestamp": 1737001800,
    "state": "IDENTIFIED",
    "created_at": "2026-01-15T10:30:00.000Z",
    "updated_at": "2026-01-15T10:35:00.000Z"
  }
}
curl -X PATCH https://your-kener-instance.com/api/v4/incidents/1/comments/2 \
  -H "Authorization: Bearer kener_..." \
  -H "Content-Type: application/json" \
  -d '{
    "comment": "Root cause identified — rollback in progress."
  }'

Delete a comment

Soft-deletes a comment (marks it as DELETED). Deleted comments no longer appear in list or get responses.
DELETE /api/v4/incidents/{incident_id}/comments/{comment_id}
Path parameters
incident_id
integer
required
Numeric ID of the incident.
comment_id
integer
required
Numeric ID of the comment to delete.
Response 200
{
  "message": "Comment with id '2' deleted successfully"
}
curl -X DELETE https://your-kener-instance.com/api/v4/incidents/1/comments/2 \
  -H "Authorization: Bearer kener_..."

Build docs developers (and LLMs) love