Developer API
v1FreePublic JSON API for real-time service status. No API key required. CORS enabled.
Base URL
https://isitdownstatus.com/api/v1Multi-signal status. Every status field reflects both crowdsourced user reports and the service's official status page (where available). If an official incident is active, it overrides or upgrades the user-report status automatically. The raw official page value is exposed separately as official_indicator.
/api/v1/status/:slug
Returns the current status for a single service. Replace :slug with the service identifier (e.g. discord, netflix).
Example request
curl https://isitdownstatus.com/api/v1/status/discordExample response
{
"ok": true,
"data": {
"slug": "discord",
"name": "Discord",
"category": "social",
"logo_url": "https://...",
"status": "operational",
"official_indicator": null,
"report_count_1h": 2,
"report_count_24h": 18,
"status_page_url": "https://isitdownstatus.com/en/status/discord",
"updated_at": "2026-04-26T12:00:00.000Z"
}
}| Field | Type | Description |
|---|---|---|
| slug | string | Unique service identifier |
| name | string | Display name |
| category | string | Category slug (see categories below) |
| status | string | "operational" | "degraded" | "down" — combined signal |
| official_indicator | string | null | Raw official page value: "none" | "minor" | "major" | "critical", or null if unavailable |
| report_count_1h | number | Problem reports in the last hour |
| report_count_24h | number | Problem reports in the last 24 hours |
| status_page_url | string | Full URL to the DownStatus page for this service |
| updated_at | string | ISO 8601 timestamp of this response |
/api/v1/services
Returns all monitored services with their current combined status.
Query parameters
| Param | Values | Default |
|---|---|---|
| category | telecom · cloud · gaming · social · finance · streaming · other · email · internet | all |
| status | operational · degraded · down | all |
| limit | 1–500 | 100 |
Examples
# All services
curl https://isitdownstatus.com/api/v1/services
# Only streaming services
curl "https://isitdownstatus.com/api/v1/services?category=streaming"
# Services currently experiencing issues
curl "https://isitdownstatus.com/api/v1/services?status=down"
# Top 10 most reported in last hour
curl "https://isitdownstatus.com/api/v1/services?limit=10"Example response
{
"ok": true,
"meta": {
"total": 7,
"filters": { "category": "streaming", "status": null, "limit": 100 },
"updated_at": "2026-04-26T12:00:00.000Z"
},
"data": [
{
"slug": "netflix",
"name": "Netflix",
"category": "streaming",
"status": "operational",
"official_indicator": null,
"report_count_1h": 0,
"report_count_24h": 5,
"status_page_url": "https://isitdownstatus.com/en/status/netflix"
},
...
]
}/api/v1/outages
Returns detected outages from the last 7 days. Outages are sourced from user-report spikes and official status pages.
Query parameters
| Param | Values | Default |
|---|---|---|
| status | ongoing · resolved | all |
| slug | any service slug | all services |
| limit | 1–100 | 20 |
Examples
# All recent outages
curl https://isitdownstatus.com/api/v1/outages
# Currently ongoing outages only
curl "https://isitdownstatus.com/api/v1/outages?status=ongoing"
# Outage history for a specific service
curl "https://isitdownstatus.com/api/v1/outages?slug=cloudflare"Example response
{
"ok": true,
"meta": {
"total": 2,
"filters": { "status": "ongoing", "slug": null, "limit": 20 },
"updated_at": "2026-04-26T12:00:00.000Z"
},
"data": [
{
"id": "abc123",
"service": {
"slug": "cloudflare",
"name": "Cloudflare",
"category": "cloud",
"logo_url": "https://...",
"status_page_url": "https://isitdownstatus.com/en/status/cloudflare"
},
"started_at": "2026-04-26T10:00:00.000Z",
"resolved_at": null,
"duration_minutes": null,
"status": "ongoing",
"peak_reports": 42,
"description": "Minor incident",
"source": "official_status_page"
}
]
}| Field | Type | Description |
|---|---|---|
| id | string | Outage record identifier |
| service | object | Service info: slug, name, category, logo_url, status_page_url |
| started_at | string | ISO 8601 — when the outage was detected |
| resolved_at | string | null | ISO 8601 — when resolved, or null if still ongoing |
| duration_minutes | number | null | Total duration in minutes once resolved |
| status | string | "ongoing" | "resolved" |
| peak_reports | number | Maximum user reports recorded during this outage |
| description | string | null | Description from official status page, if available |
| source | string | "user_reports" | "official_status_page" |
Status values
operationalReport volume within normal range. No official incident active.
degradedElevated report volume or a minor official incident. Some users may be affected.
downSignificantly elevated reports or a major/critical official incident. Widespread impact likely.
Rate limits & caching
Responses are cached for 30 seconds at the CDN level. There is no hard rate limit for read endpoints, but please be reasonable — avoid polling more than once per 30 seconds. If you need real-time data at high frequency, consider implementing your own caching layer.
JavaScript example
async function checkStatus(slug) {
const res = await fetch(
`https://isitdownstatus.com/api/v1/status/${slug}`
);
const { ok, data } = await res.json();
if (!ok) throw new Error('Service not found');
return data;
// { slug, name, status, official_indicator, report_count_1h, ... }
}
// Check a single service
const discord = await checkStatus('discord');
console.log(discord.status); // "operational"
console.log(discord.official_indicator); // null or "minor" / "major" / "critical"
// Get all ongoing outages
const res = await fetch('https://isitdownstatus.com/api/v1/outages?status=ongoing');
const { data: outages } = await res.json();
console.log(outages.length); // number of active outagesPython example
import requests
def check_status(slug):
r = requests.get(f"https://isitdownstatus.com/api/v1/status/{slug}")
r.raise_for_status()
return r.json()["data"]
def get_ongoing_outages():
r = requests.get("https://isitdownstatus.com/api/v1/outages", params={"status": "ongoing"})
r.raise_for_status()
return r.json()["data"]
discord = check_status("discord")
print(discord["status"]) # "operational"
print(discord["official_indicator"]) # None or "minor" / "major" / "critical"
outages = get_ongoing_outages()
for o in outages:
print(o["service"]["name"], "—", o["status"])This API is free and provided as-is. If you build something with it, we'd love to hear about it — get in touch.