New Multi-region uptime checks and custom-domain status pages

REST API Documentation

Programmatic access to normalized provider status, endpoint/community evidence, incidents, and published reliability observations for 2313+ services.

https://servicealert.ai/api/v1/

Quick Start

  1. Public endpoints (services, status, incidents) work without authentication, just make a GET request.
  2. For premium endpoints (SLA, scores, rankings, trends, analytics), create an API key in your dashboard.
  3. Pass your key in the X-API-Key header with every request.
Example
curl -H "X-API-Key: sa_live_your_key_here" \ https://servicealert.ai/api/v1/scores

Authentication

Public endpoints (/services, /status, /incidents) require no authentication. Premium endpoints require an API key.

Pass your API key in the X-API-Key header:

X-API-Key: sa_live_your_key_here

API keys can be created and managed from the API Keys page in your dashboard. Keys are shown only once on creation, store them securely.

Rate Limits

All responses include rate limit headers: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset.

Access LevelRate LimitWindow
No API Key (public)30 requestsPer minute
With API Key120 requestsPer minute

Exceeding the limit returns 429 Too Many Requests with a Retry-After header.

Endpoints

Public Endpoints

GET /api/v1/services Public List all monitored services

Returns the full catalog of monitored services. Use /{feedId} for a single service.

ParameterTypeDescription
category optionalstringFilter by category slug (e.g., cloud-platforms)
Response
{ "success": true, "data": [ { "feedId": "aws", "name": "Amazon Web Services", "url": "https://health.aws.amazon.com/health/status", "canonicalUrl": "https://servicealert.ai/status/aws", "officialStatusUrl": null, "feedType": "healthcheck", "sourceKind": "reachability", "sourceLabel": "Status endpoint", "description": "Cloud computing platform..." } ], "meta": { "total": 2313 } }
GET /api/v1/status Public Normalized public evidence for all services

Returns the latest normalized public evidence for all services. Every row includes the service identity, canonical citation URL, sourceKind, scope-aware display condition, availability observation, and evidence timestamps. Legacy status, provider messages, incidents, and maintenances are returned only for official provider sources; endpoint-only rows instead expose endpointReachabilityStatus. Add ?include=incidents, ?include=maintenances, or ?include=details for additional official-source fields. Use /{feedId}?compact=1 for a lightweight single-service response.

Response
{ "success": true, "data": [ { "feedId": "github", "status": "operational", "name": "GitHub", "canonicalUrl": "https://servicealert.ai/status/github", "officialStatusUrl": "https://www.githubstatus.com/", "sourceKind": "official", "sourceLabel": "Official status source", "displayStatus": "operational", "statusLabel": "Operational", "availabilityStatus": "operational", "availabilityLabel": "Operational", "incidentScope": "none", "incidentScopeLabel": null, "summary": "GitHub is operational.", "verificationState": "verified", "verifiedAt": "2026-08-21T15:59:55+00:00", "activeIncidentCount": 0, "lastChanged": 1710331200, "lastSuccessfulCheck": 1710334795 } ], "meta": { "total": 950, "generated": 1710334800, "age_seconds": 42, "includes": { "incidents": false, "maintenances": false } } }
GET /api/v1/incidents Public Verified provider incidents across all services

Returns active incidents only when the catalog source is official and both the provider check and incident dataset are fresh. Healthcheck, community, delayed-source, malformed-timestamp, and resolved rows are omitted. Use /{feedId} for one service; an empty response is returned when verified provider evidence is unavailable.

Response
{ "success": true, "data": [ { "service": "GitHub", "feedId": "github", "id": "abc123", "title": "Degraded performance for Actions", "status": "investigating", "started": 1710300000, "sourceKind": "official", "verificationState": "verified", "verifiedAt": "2026-08-25T16:00:00+00:00", "officialStatusUrl": "https://www.githubstatus.com/", "canonicalServiceUrl": "https://servicealert.ai/status/github", "updates": [...] } ], "meta": { "total": 3, "services_affected": 2, "sourceKind": "official", "verificationState": "verified" } }

Premium Endpoints (API key required)

GET /api/v1/sla Auth SLA compliance data

Compare vendor uptime against published SLA targets. Use /{feedId} for a single service.

ParameterTypeDescription
month optionalstringHistorical month (e.g., 2026-02)
Response
{ "success": true, "data": { "summary": { "services_tracked": 850, "compliance_rate": 94.2, "services_breaching_sla": 49 }, "services": [ { "feedId": "aws", "name": "Amazon Web Services", "sla_target": 99.99, "uptime_30d": 99.98, "status": "at_risk", "margin": -0.01 } ] } }
GET /api/v1/scores Auth Vendor reliability scores (0-100)

Composite reliability scores based on uptime (40%), incidents (25%), resolution time (20%), and SLA compliance (15%). Use /{feedId} for a single service.

ParameterTypeDescription
month optionalstringHistorical month (e.g., 2026-02)
Response
{ "success": true, "data": { "summary": { "services_scored": 800, "avg_score": 82.4, "top_service": "Cloudflare" }, "scores": [ { "feedId": "cloudflare", "name": "Cloudflare", "score": 97.2, "grade": "A", "tier": "excellent", "components": { "uptime": 98.5, "incidents": 100, "resolution": 90, "sla": 100 } } ] } }
GET /api/v1/rankings Auth Uptime reliability rankings

Services ranked by uptime performance with 30/90-day metrics.

ParameterTypeDescription
month optionalstringHistorical month (e.g., 2026-02)
GET /api/v1/analytics Auth Incident analytics & MTTR

MTTR trends, severity distribution, top affected services, day-of-week patterns, and component analysis.

ParameterTypeDescription
month optionalstringHistorical month (e.g., 2026-02)

Code Examples

# Public endpoint (no auth) curl https://servicealert.ai/api/v1/status/github # Premium endpoint (API key required) curl -H "X-API-Key: sa_live_your_key_here" \ https://servicealert.ai/api/v1/scores/aws # Filter services by category curl https://servicealert.ai/api/v1/services?category=cloud-platforms # Historical SLA data curl -H "X-API-Key: sa_live_your_key_here" \ "https://servicealert.ai/api/v1/sla?month=2026-02"
// Public endpoint const res = await fetch('https://servicealert.ai/api/v1/status/github'); const { data } = await res.json(); console.log(data.status); // "up" // Premium endpoint const scores = await fetch('https://servicealert.ai/api/v1/scores', { headers: { 'X-API-Key': 'sa_live_your_key_here' } }); const { data: scoreData } = await scores.json(); console.log(scoreData.summary.avg_score);
import requests # Public endpoint r = requests.get('https://servicealert.ai/api/v1/status/github') print(r.json()['data']['status']) # "up" # Premium endpoint headers = {'X-API-Key': 'sa_live_your_key_here'} r = requests.get('https://servicealert.ai/api/v1/scores', headers=headers) print(r.json()['data']['summary']['avg_score'])

Error Codes

CodeMeaning
200Success
401Authentication required, missing or invalid API key
403Forbidden, API key lacks required scope
404Resource not found (invalid endpoint or feedId)
405Method not allowed, API is read-only (GET only)
429Rate limit exceeded, wait and retry
500Internal server error
503Data not yet available (service initializing)

All error responses follow the format: { "success": false, "error": "description" }

Ready to integrate? Create your API key and start building.

Get Your API Key