Developer API
The StatusEagle API lets you access your monitors and incidents programmatically. Build dashboards, integrate with third-party tools, or display real-time uptime data inside your own applications.
Introduction
All API endpoints are served over HTTPS. Requests and responses use JSON.
Every successful response contains a success: true key
and a data key holding the payload.
You can generate your API key from app.statuseagle.com/api-key.
Authentication
Pass your API key as a Bearer token in the Authorization header on every request.
Base URL
All endpoints below are relative to this base URL.
Errors
Errors return a standard HTTP status code and a JSON body with success: false and a message.
| Code | Meaning |
|---|---|
| 401 | Missing or invalid API key |
| 403 | Insufficient permissions |
| 404 | Resource not found |
| 422 | Validation error |
| 500 | Internal server error |
Monitors
/monitors
List Monitors
Returns a paginated list of all monitors for the authenticated account, including current status, last check time, and response time.
Query Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
| page | integer | 1 | Page number |
| size | integer | 10 | Results per page |
| status | string | — | Filter by status: up, down, paused |
| type | string | — | Filter by monitor type: website, ping, port, keyword, etc. |
| search | string | — | Search by monitor name or URL |
Example Request
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json"
Response
{
"success": true,
"data": {
"monitors": [
{
"id": "mon_abc123",
"name": "My Website",
"type": "website",
"url": "https://example.com",
"status": "up",
"last_checked_at": "2026-03-04T10:30:00+00:00",
"last_checked": "2 minutes ago",
"response_time": 243,
"duration": "Up for 3 days",
"notifications_paused": false,
"created_at": "2026-01-15T08:00:00+00:00"
}
],
"pagination": {
"current_page": 1,
"per_page": 10,
"total": 42,
"last_page": 5,
"from": 1,
"to": 10
}
}
}
Response Fields
| Field | Description |
|---|---|
| id | Unique monitor identifier |
| name | Monitor display name |
| type | Monitor type (website, ping, port, keyword, dns, cron, resource) |
| url | Monitored URL or hostname |
| status | Current status: up, down, partial, paused, coming_soon |
| last_checked_at | ISO 8601 timestamp of the last check |
| last_checked | Human-readable time since last check (e.g. "2 minutes ago") |
| response_time | Response time in milliseconds |
| duration | How long the monitor has been in its current status (e.g. "Up for 3 days") |
| notifications_paused | Whether alert notifications are paused for this monitor |
/monitors/overview
Monitors Overview
Returns a summary of all monitors grouped by status. Useful for building dashboard widgets or status badges.
Example Request
-H "Authorization: Bearer YOUR_API_KEY"
Response
{
"success": true,
"data": {
"total_monitors": 42,
"healthy": 38,
"critical": 2,
"down": 1,
"partial": 1,
"forbidden": 0,
"coming_soon": 1,
"maintenance": 0,
"paused": 1,
"uptime_percentage": 97.6
}
}
Response Fields
| Field | Description |
|---|---|
| total_monitors | Total number of monitors |
| healthy | Monitors currently up |
| critical | Down + partial monitors combined |
| down | Monitors that are fully down |
| partial | Monitors with degraded performance |
| paused | Monitors with monitoring paused |
| maintenance | Monitors in a maintenance window |
| uptime_percentage | Global uptime percentage across all active monitors |
Incidents
/incidents/ongoing
Ongoing Incidents
Returns all currently open or investigating incidents for the authenticated account. Incidents are sorted newest first. Use this endpoint to display active outages inside your own applications or dashboards.
Query Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
| page | integer | 1 | Page number |
| limit | integer | 25 | Results per page (max 100) |
| monitor_id | string | — | Filter incidents to a specific monitor |
Example Request
-H "Authorization: Bearer YOUR_API_KEY"
Response
{
"success": true,
"data": [
{
"id": "65f1a2b3c4d5e6f7a8b9c0d1",
"monitor_id": "mon_abc123",
"monitor_name": "My Website",
"monitor_type": "website",
"favicon": "https://example.com/favicon.ico",
"cause": "Connection refused",
"status": "open",
"started_at": "2026-03-04T08:15:00+00:00",
"duration": "2 hours"
}
],
"pagination": {
"current_page": 1,
"per_page": 25,
"total": 1,
"last_page": 1
}
}
Response Fields
| Field | Description |
|---|---|
| id | Unique incident identifier |
| monitor_id | ID of the affected monitor |
| monitor_name | Name of the affected monitor |
| monitor_type | Type of the affected monitor |
| favicon | Monitor favicon URL, if available |
| cause | Root cause / error message detected |
| status | open or investigating |
| started_at | ISO 8601 timestamp when the incident began |
| duration | Human-readable duration since the incident started (e.g. "2 hours") |
Status values
open— incident detected, not yet acknowledgedinvestigating— incident acknowledged and under investigation
Need help or want to request new endpoints? Contact us or visit your API key page to get started.