Integrate monitoring into your applications
All API requests (except public endpoints) require a Bearer token in the Authorization header.
Use the login endpoint to obtain a JWT token. Include it in all subsequent requests.
Authenticate and receive a JWT token.
| Parameter | Type | Description |
|---|---|---|
email required | string | Your account email |
password required | string | Your password |
curl -X POST https://portal.statuscore.io/api/auth/login \
-H "Content-Type: application/json" \
-d '{"email": "you@example.com", "password": "yourpassword"}'
{
"user": {
"id": 1,
"email": "you@example.com",
"fullName": "Your Name",
"subscriptionTier": "pro"
},
"token": "eyJhbGciOiJIUzI1NiIs..."
}
Get current user information.
curl https://portal.statuscore.io/api/auth/me \
-H "Authorization: Bearer YOUR_TOKEN"
List all your monitors with current status, uptime, and location data.
[
{
"id": 1,
"name": "Website",
"type": "https",
"target": "https://example.com",
"status": "up",
"response_time": 145,
"last_check": "2024-01-15T10:30:00Z",
"uptime_percentage": "99.95",
"location_status": {
"us-east-bca": "up",
"us-west-oregon": "up",
"eu-frankfurt": "up"
}
}
]
Create a new monitor.
| Parameter | Type | Description |
|---|---|---|
name required | string | Display name for the monitor |
type required | string | One of: http, https, ping, tcp, sip, domain, heartbeat |
target | string | URL, hostname, or IP to monitor |
port | integer | Port number (for TCP monitors) |
ssl_check | boolean | Enable SSL certificate monitoring |
check_locations | array | Locations to check from: ["all"] or specific locations |
curl -X POST https://portal.statuscore.io/api/monitors \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "Production API",
"type": "https",
"target": "https://api.example.com/health",
"ssl_check": true
}'
Update an existing monitor.
| Parameter | Type | Description |
|---|---|---|
name | string | Display name |
target | string | Target URL/hostname |
port | integer | Port number |
ssl_check | boolean | SSL monitoring |
Delete a monitor and all its history.
Enable or disable a monitor.
| Parameter | Type | Description |
|---|---|---|
is_active required | boolean | true to enable, false to disable |
Toggle whether a monitor appears on your public status page.
| Parameter | Type | Description |
|---|---|---|
public_status required | boolean | true to show on status page |
Get check history for a monitor.
| Parameter | Type | Description |
|---|---|---|
hours | integer | Number of hours of history (default: 24) |
{
"monitor": { "id": 1, "name": "Website", ... },
"history": [
{ "checked_at": "2024-01-15T10:00:00Z", "status": "up", "response_time": 142 },
{ "checked_at": "2024-01-15T10:01:00Z", "status": "up", "response_time": 138 }
],
"stats": {
"avg": 140,
"min": 120,
"max": 180,
"uptime": "99.9"
}
}
Get detailed statistics for a monitor.
| Parameter | Type | Description |
|---|---|---|
days | integer | Number of days (default: 30) |
Get recent incidents and anomalies for a monitor.
Get all unacknowledged anomalies across all monitors.
Acknowledge an anomaly to dismiss it.
Run an MTR (traceroute) to the monitor's target. Premium feature.
Perform a WHOIS lookup on a domain or IP.
Get public status page data. No authentication required.
curl https://portal.statuscore.io/api/public/status/your-company
{
"company_name": "Your Company",
"monitors": [
{
"id": 1,
"name": "Website",
"type": "https",
"status": "up",
"uptime_percentage": "99.95",
"history": [...]
}
],
"incidents": [
{
"id": 5,
"monitor_name": "Website",
"started_at": "2024-01-14T08:00:00Z",
"resolved_at": "2024-01-14T08:15:00Z",
"status": "resolved"
}
]
}
Configure webhooks in your Dashboard Settings to receive real-time notifications when monitors go up or down.
When a monitor status changes, StatusCore sends a POST request to your webhook URL:
{
"event": "monitor.down",
"monitor": {
"id": 1,
"name": "Production API",
"type": "https",
"target": "https://api.example.com",
"status": "down"
},
"timestamp": "2024-01-15T10:30:00.000Z",
"details": {
"locations": "US-East (Virginia), US-West (Oregon)"
}
}
Slack webhooks receive rich formatted messages with attachments and blocks.
Discord webhooks receive embeds with colored status indicators.
API requests are limited to 100 requests per minute per user. Exceeding this limit will result in a 429 error.
Need help? Contact support@statuscore.io