Statusbeat
FeaturesDocsChangelogStatusSupport
Sign inStart monitoring
FeaturesDocsChangelogStatusSupport
  • Getting started
  • Websites and APIs
  • Discord bots
  • Discord bot alerts
  • Webhooks
  • Status pages and embeds
  • API reference

Stuck on something?

Ask in our support server and we’ll help you out.

Get help on Discord
Statusbeat

Free uptime monitoring and status pages for websites, APIs, and Discord bots.

Get help on Discord

Product

  • Features
  • Docs
  • API reference
  • Changelog
  • Status

Company

  • About
  • Contact
  • Security
  • Our monitoring requests
  • Report abuse
  • Support server

Legal

  • Terms
  • Privacy
  • Acceptable use
  • Cookies

API reference

Create a key under Account, API keys. Send it as a Bearer token. Every key works on one project, read only or read and write. Responses put results under data; errors have a stable code and a readable message. Limit: 120 requests a minute per key.

Shell
curl https://statusbeat.app/api/v1/monitors \
  -H "Authorization: Bearer $STATUSBEAT_API_KEY"

Machine-readable: OpenAPI 3.1 spec.

GET/api/v1/status/{slug}

Public status of a status page. No key.

No key needed. Safe to call from browsers on any site. Cached for 30 seconds.

GET/api/v1/projects

List the key's project. Read key.

GET/api/v1/projects/{id}

Get a project. Read key.

GET/api/v1/monitors

List monitors. Read key.

POST/api/v1/monitors

Create a monitor. Read and write key.

For bot monitors, the response includes heartbeatToken. It is shown once.

Request body schema
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "type": {
          "type": "string",
          "const": "http"
        },
        "intervalSec": {
          "default": 300,
          "type": "integer",
          "minimum": -9007199254740991,
          "maximum": 9007199254740991
        },
        "http": {
          "type": "object",
          "properties": {
            "url": {
              "type": "string",
              "maxLength": 2048
            },
            "method": {
              "default": "GET",
              "type": "string",
              "enum": [
                "GET",
                "HEAD"
              ]
            },
            "expectedStatus": {
              "default": [
                200
              ],
              "minItems": 1,
              "maxItems": 20,
              "type": "array",
              "items": {
                "type": "integer",
                "minimum": 100,
                "maximum": 599
              }
            },
            "timeoutMs": {
              "default": 10000,
              "type": "integer",
              "minimum": 1000,
              "maximum": 30000
            },
            "keyword": {
              "type": "string",
              "minLength": 1,
              "maxLength": 200
            },
            "headers": {
              "default": [],
              "maxItems": 10,
              "type": "array",
              "items": {
                "type": "object",
                "properties": {
                  "name": {
                    "type": "string",
                    "pattern": "^[A-Za-z0-9!#$%&'*+.^_`|~-]{1,64}$"
                  },
                  "value": {
                    "type": "string",
                    "maxLength": 1024
                  }
                },
                "required": [
                  "name",
                  "value"
                ],
                "additionalProperties": false
              }
            }
          },
          "required": [
            "url"
          ],
          "additionalProperties": false
        },
        "name": {
          "type": "string",
          "minLength": 1,
          "maxLength": 80
        },
        "failureThreshold": {
          "default": 2,
          "type": "integer",
          "minimum": 1,
          "maximum": 5
        },
        "notifyOnRecovery": {
          "default": true,
          "type": "boolean"
        }
      },
      "required": [
        "type",
        "http",
        "name"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "type": {
          "type": "string",
          "const": "heartbeat"
        },
        "heartbeat": {
          "type": "object",
          "properties": {
            "intervalSec": {
              "default": 45,
              "type": "integer",
              "minimum": 30,
              "maximum": 300
            },
            "graceSec": {
              "type": "integer",
              "minimum": 60,
              "maximum": 900
            }
          },
          "additionalProperties": false
        },
        "name": {
          "type": "string",
          "minLength": 1,
          "maxLength": 80
        },
        "failureThreshold": {
          "default": 2,
          "type": "integer",
          "minimum": 1,
          "maximum": 5
        },
        "notifyOnRecovery": {
          "default": true,
          "type": "boolean"
        }
      },
      "required": [
        "type",
        "heartbeat",
        "name"
      ],
      "additionalProperties": false
    }
  ]
}

GET/api/v1/monitors/{id}

Get a monitor. Read key.

PATCH/api/v1/monitors/{id}

Update a monitor. Read and write key.

Request body schema
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 80
    },
    "intervalSec": {
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991
    },
    "http": {
      "type": "object",
      "properties": {
        "url": {
          "type": "string",
          "maxLength": 2048
        },
        "method": {
          "type": "string",
          "enum": [
            "GET",
            "HEAD"
          ]
        },
        "expectedStatus": {
          "minItems": 1,
          "maxItems": 20,
          "type": "array",
          "items": {
            "type": "integer",
            "minimum": 100,
            "maximum": 599
          }
        },
        "timeoutMs": {
          "type": "integer",
          "minimum": 1000,
          "maximum": 30000
        },
        "keyword": {
          "anyOf": [
            {
              "type": "string",
              "minLength": 1,
              "maxLength": 200
            },
            {
              "type": "null"
            }
          ]
        },
        "headers": {
          "maxItems": 10,
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "name": {
                "type": "string",
                "pattern": "^[A-Za-z0-9!#$%&'*+.^_`|~-]{1,64}$"
              },
              "value": {
                "type": "string",
                "maxLength": 1024
              }
            },
            "required": [
              "name",
              "value"
            ],
            "additionalProperties": false
          }
        }
      },
      "additionalProperties": false
    },
    "heartbeat": {
      "type": "object",
      "properties": {
        "intervalSec": {
          "type": "integer",
          "minimum": 30,
          "maximum": 300
        },
        "graceSec": {
          "anyOf": [
            {
              "type": "integer",
              "minimum": 60,
              "maximum": 900
            },
            {
              "type": "null"
            }
          ]
        },
        "showShards": {
          "type": "boolean"
        }
      },
      "additionalProperties": false
    },
    "failureThreshold": {
      "type": "integer",
      "minimum": 1,
      "maximum": 5
    },
    "notifyOnRecovery": {
      "type": "boolean"
    }
  },
  "additionalProperties": false
}

DELETE/api/v1/monitors/{id}

Delete a monitor. Read and write key.

POST/api/v1/monitors/{id}/pause

Pause checks and alerts. Read and write key.

POST/api/v1/monitors/{id}/resume

Resume a paused monitor. Read and write key.

GET/api/v1/monitors/{id}/checks

Recent check results. Read key.

?limit= 1 to 500, default 100.

GET/api/v1/monitors/{id}/uptime

Uptime over 24 hours, 7, 30, and 90 days. Read key.

GET/api/v1/incidents

List incidents. Read key.

?status= active for open incidents only.

POST/api/v1/incidents

Post an incident. Read and write key.

Request body schema
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "title": {
      "type": "string",
      "minLength": 3,
      "maxLength": 120
    },
    "impact": {
      "type": "string",
      "enum": [
        "degraded",
        "partial_outage",
        "major_outage"
      ]
    },
    "stage": {
      "type": "string",
      "enum": [
        "investigating",
        "identified",
        "monitoring"
      ]
    },
    "body": {
      "type": "string",
      "minLength": 1,
      "maxLength": 5000
    },
    "monitorIds": {
      "maxItems": 100,
      "type": "array",
      "items": {
        "type": "string",
        "maxLength": 40
      }
    },
    "notify": {
      "type": "boolean"
    }
  },
  "required": [
    "title",
    "impact",
    "stage",
    "body",
    "monitorIds",
    "notify"
  ],
  "additionalProperties": false
}

GET/api/v1/incidents/{id}

Get an incident. Read key.

POST/api/v1/incidents/{id}/updates

Post an incident update. Read and write key.

Set stage to resolved to resolve the incident.

Request body schema
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "stage": {
      "type": "string",
      "enum": [
        "investigating",
        "identified",
        "monitoring",
        "resolved"
      ]
    },
    "body": {
      "type": "string",
      "minLength": 1,
      "maxLength": 5000
    },
    "impact": {
      "type": "string",
      "enum": [
        "degraded",
        "partial_outage",
        "major_outage"
      ]
    },
    "notify": {
      "type": "boolean"
    }
  },
  "required": [
    "stage",
    "body",
    "notify"
  ],
  "additionalProperties": false
}

GET/api/v1/maintenance

List maintenance windows. Read key.

POST/api/v1/maintenance

Schedule maintenance. Read and write key.

Request body schema
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "title": {
      "type": "string",
      "minLength": 3,
      "maxLength": 120
    },
    "body": {
      "default": "",
      "type": "string",
      "maxLength": 5000
    },
    "startsAt": {
      "type": "string",
      "format": "date-time",
      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
    },
    "endsAt": {
      "type": "string",
      "format": "date-time",
      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
    },
    "monitorIds": {
      "minItems": 1,
      "maxItems": 100,
      "type": "array",
      "items": {
        "type": "string",
        "maxLength": 40
      }
    },
    "notify": {
      "type": "boolean"
    }
  },
  "required": [
    "title",
    "startsAt",
    "endsAt",
    "monitorIds",
    "notify"
  ],
  "additionalProperties": false
}

GET/api/v1/maintenance/{id}

Get a maintenance window. Read key.

PATCH/api/v1/maintenance/{id}

Replace a window that has not started. Read and write key.

Request body schema
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "title": {
      "type": "string",
      "minLength": 3,
      "maxLength": 120
    },
    "body": {
      "default": "",
      "type": "string",
      "maxLength": 5000
    },
    "startsAt": {
      "type": "string",
      "format": "date-time",
      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
    },
    "endsAt": {
      "type": "string",
      "format": "date-time",
      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
    },
    "monitorIds": {
      "minItems": 1,
      "maxItems": 100,
      "type": "array",
      "items": {
        "type": "string",
        "maxLength": 40
      }
    },
    "notify": {
      "type": "boolean"
    }
  },
  "required": [
    "title",
    "startsAt",
    "endsAt",
    "monitorIds",
    "notify"
  ],
  "additionalProperties": false
}

DELETE/api/v1/maintenance/{id}

Cancel, or end a running window now. Read and write key.