Stazus docs
Stazus docs

Introduction

Stazus documentationGet startedConcepts

Planned features

Feature availabilityStatus pages

Monitoring

MonitorsChecks and resultsLatency alertingMaintenance windows

Incident response

IncidentsNotificationsTeams and access

Developer API

Developer APIAuthenticationProjectsEndpointsAnalyticsIncidentsErrors and limitsMigrate from v1

Account and help

Account and security

Help

Support

Updates

Changelog
Changelog launchedDocumentation UpdatesDeveloper API v2Scope-aware maintenance windows
Developer API

Incidents

Read, create, and modify incidents from an integration.

Read routes require incidents:read. Write routes require incidents:write and an editor-owned token.

List incidents

GET /api/public/v2/incidents
QueryTypeDescription
project_idIntegerReturn incidents from one project.
endpoint_idIntegerReturn incidents that affect one endpoint.
status_idIntegerReturn incidents with one status.
stateopen or resolvedFilter by resolution state.
severitywarning or criticalFilter by severity.
typeStringFilter by the exact incident type.
sourceautomatic or manualFilter by source.
fromRFC 3339Include incidents with a last error at or after this time.
toRFC 3339Include incidents with a last error before this time.
limitIntegerReturn 1 through 100 items.
cursorStringContinue from a previous response.

The request has no payload. The response contains incident summaries and pagination.

{
  "data": [
    {
      "id": 73,
      "team_id": 7,
      "project_id": 12,
      "endpoint_id": 41,
      "endpoint_ids": [41, 42],
      "title": "Payment provider errors",
      "type": "provider",
      "source": "manual",
      "severity": "critical",
      "auto_resolve": false,
      "detection_reason": "Provider returned elevated errors",
      "metadata": {
        "provider": "ExamplePay"
      },
      "status_id": 3,
      "status_name": "Investigating",
      "error_count": 0,
      "first_error_at": "2026-08-23T08:05:00Z",
      "last_error_at": "2026-08-23T08:05:00Z",
      "resolved_at": null,
      "created_at": "2026-08-23T08:06:00Z",
      "updated_at": "2026-08-23T08:06:00Z"
    }
  ],
  "pagination": {
    "next_cursor": null,
    "has_more": false
  }
}

Get incident details

GET /api/public/v2/incidents/:incidentID

The request has no payload. The response contains the incident fields and these arrays:

  • comments contains private team notes.
  • checkpoints contains updates intended for status pages.
  • checks contains linked failing checks without response excerpts.
  • merged_incidents identifies records merged into this incident.

List incident statuses

GET /api/public/v2/incident-statuses

The request has no payload.

{
  "data": [
    {
      "id": 3,
      "team_id": 7,
      "name": "Investigating",
      "is_default": true,
      "created_at": "2026-08-01T00:00:00Z"
    }
  ]
}

Use a returned status ID or exact status name in incident requests.

Create an incident

POST /api/public/v2/incidents
Idempotency-Key: incident-examplepay-20260823
Content-Type: application/json

Provide project_id or at least one endpoint_id. All selected endpoints must belong to the selected project.

{
  "project_id": 12,
  "endpoint_ids": [41, 42],
  "title": "Payment provider errors",
  "type": "provider",
  "severity": "critical",
  "detection_reason": "Provider returned elevated errors",
  "metadata": {
    "provider": "ExamplePay"
  },
  "status": "Investigating",
  "auto_resolve": false,
  "first_error_at": "2026-08-23T08:05:00Z",
  "last_error_at": "2026-08-23T08:05:00Z"
}
FieldRequiredNotes
project_idConditionalRequired when endpoint_ids is empty.
endpoint_idsConditionalMaximum 500 unique positive IDs.
titleYesBetween 1 and 200 characters.
typeNoMaximum 80 characters. The default is manual.
severityNowarning or critical. The default is warning.
detection_reasonNoMaximum 10,000 characters.
metadataNoJSON object. Encoded size must not exceed 64 KiB.
status_idNoID from the incident status route.
statusNoExact status name. Do not combine it with status_id.
auto_resolveNoThe default is false.
first_error_atNoRFC 3339 timestamp. The default is the current time.
last_error_atNoRFC 3339 timestamp. It cannot precede first_error_at.

The response status is 201. The response contains the complete incident detail in data.

Update incident details

PATCH /api/public/v2/incidents/:incidentID
Content-Type: application/json

Provide at least one field.

{
  "title": "Payment provider outage",
  "severity": "critical",
  "endpoint_ids": [41, 42, 43],
  "metadata": {
    "provider": "ExamplePay",
    "ticket": "PAY-1842"
  }
}

You can update:

  • project_id
  • endpoint_ids
  • title
  • type
  • severity
  • detection_reason
  • metadata
  • first_error_at
  • last_error_at

The response contains the complete updated incident detail in data.

Update incident status

PATCH /api/public/v2/incidents/:incidentID/status
Content-Type: application/json

Provide at least one field:

{
  "status": "Monitoring",
  "resolved": false,
  "auto_resolve": false
}

Use either status_id or status. resolved: true records the resolution time. resolved: false reopens the incident.

The response contains the complete updated incident detail in data.

Merge incidents

POST /api/public/v2/incidents/:incidentID/merge
Idempotency-Key: merge-incident-73-20260823
Content-Type: application/json

The incident in the URL is the target record.

{
  "source_incident_ids": [74, 75]
}

The source incidents must belong to the same team. A source incident cannot also be the target.

Stazus moves affected endpoints, linked checks, comments, checkpoints, and activity to the target. The response contains the complete target incident detail.

Add a comment

POST /api/public/v2/incidents/:incidentID/comments
Idempotency-Key: comment-incident-73-provider-confirmed
Content-Type: application/json
{
  "body": "Provider support confirmed the fault."
}

The body must contain 1 through 10,000 characters. The response status is 201.

Comments are private team notes. Do not use them for public status updates.

Pin or unpin a comment

PATCH /api/public/v2/incidents/:incidentID/comments/:commentID
Content-Type: application/json
{
  "pinned": true
}

The response contains the updated comment in data.

Delete a comment

DELETE /api/public/v2/incidents/:incidentID/comments/:commentID

The request has no payload. A successful response has status 204 and no body.

Add a checkpoint

POST /api/public/v2/incidents/:incidentID/checkpoints
Idempotency-Key: checkpoint-incident-73-provider-fix
Content-Type: application/json
{
  "title": "Provider fix in progress",
  "body": "The provider identified the fault and started recovery work."
}

title must contain 1 through 200 characters. body can contain up to 10,000 characters.

The response status is 201. The response contains the checkpoint in data.

Update a checkpoint

PATCH /api/public/v2/incidents/:incidentID/checkpoints/:checkpointID
Content-Type: application/json

Provide at least one field:

{
  "status_label": "Monitoring",
  "title": "Recovery observed",
  "body": "Error rates returned to their normal range."
}

The response contains the updated checkpoint in data.

Last updated on

Analytics

Query monitoring performance for a team, project, or endpoint.

Errors and limits

Handle API errors, request IDs, pagination, and rate limits.

On this page

List incidentsGet incident detailsList incident statusesCreate an incidentUpdate incident detailsUpdate incident statusMerge incidentsAdd a commentPin or unpin a commentDelete a commentAdd a checkpointUpdate a checkpoint