Embed Status API
The Embed Status API returns your status page data as JSON. Use it to build custom status displays, dashboards, or integrations.
Endpoint
GET https://statuspage.me/api/embed/status
Required Parameters
| Parameter | Type | Description |
|---|---|---|
slug | string | Your status page slug (required) |
Optional Parameters
| Parameter | Type | Description |
|---|---|---|
inc | 1 | Include active incidents in response |
rtm | 1-240 | Include response time sparkline (minutes) |
upd | 1-30 | Include uptime sparkline (days) |
Example Request
Basic Status
curl "https://statuspage.me/api/embed/status?slug=your-slug"
Full Data
curl "https://statuspage.me/api/embed/status?slug=your-slug&inc=1&rtm=60&upd=7"
Response
Basic Response
{
"page": "your-slug",
"page_url": "https://your-slug.statuspage.me",
"overall": "operational",
"updated": "2025-12-09T12:00:00Z",
"incidents": []
}
Full Response (with sparklines)
{
"page": "your-slug",
"page_url": "https://your-slug.statuspage.me",
"overall": "operational",
"updated": "2025-12-09T12:00:00Z",
"incidents": [
{
"id": "abc123",
"title": "API Latency Issues",
"state": "monitoring",
"started": "2025-12-09T11:30:00Z",
"component": "API"
}
],
"rtm": [120, 115, 118, 125, 110, 122, 119, 116],
"upd": [99.95, 100, 100, 99.80, 100, 100, 100]
}
Response Fields
| Field | Type | Description |
|---|---|---|
page | string | Status page slug |
page_url | string | Full URL to the status page |
overall | string | Current overall status |
updated | string | Last update timestamp (ISO 8601) |
incidents | array | Active incidents (if inc=1) |
rtm | array | Response time values in milliseconds |
upd | array | Daily uptime percentages |
dns_only | boolean | True if all monitors are DNS type |
Overall Status Values
| Value | Meaning |
|---|---|
operational | All systems operational |
degraded_performance | Performance issues |
partial_outage | Some systems down |
major_outage | Major system failure |
under_maintenance | Scheduled maintenance |
JavaScript Example
async function getStatus(slug) {
const url = `https://statuspage.me/api/embed/status?slug=${slug}&inc=1`;
const response = await fetch(url);
const data = await response.json();
console.log('Status:', data.overall);
console.log('Active incidents:', data.incidents.length);
// Update your UI
updateStatusIndicator(data.overall);
return data;
}
// Poll every 30 seconds
setInterval(() => getStatus('your-slug'), 30000);
Response Time Sparklines (rtm)
When you include rtm=N, you get an array of N values representing average response times (in milliseconds) for the last N minutes.
// Get last 60 minutes of response times
const url = '.../api/embed/status?slug=myapp&rtm=60';
// Response includes:
// "rtm": [120, 118, 125, 115, 122, ...] // 60 values
Use this to draw sparkline charts showing recent performance.
Uptime Sparklines (upd)
When you include upd=N, you get an array of N values representing daily uptime percentages for the last N days.
// Get last 7 days of uptime
const url = '.../api/embed/status?slug=myapp&upd=7';
// Response includes:
// "upd": [99.95, 100, 100, 99.80, 100, 100, 100] // 7 values
Use this to draw uptime history charts.
Error Responses
| Status | Error | Cause |
|---|---|---|
| 400 | missing slug | No slug parameter provided |
| 404 | not found | Status page doesn’t exist |
| 403 | embeds not available in your plan | Plan doesn’t include embed access |
Caching
- Responses are cached for ~15 seconds
- Include
Cache-Controlheader in response - Safe to cache on your end for short periods
Plan Requirements
Note: JSON API features (rtm, upd, inc) require Growth, Business, OSS Hero, or Enterprise plan.
Basic embed access is available on Pro plans and above.
What’s Next?
- SVG Badge API for simple status badges
- Incidents API for incident history
- Live Widget for zero-code embedding