API for developers
Everything shown on this site is available as JSON: the current status of a site, its uptime, confirmed outages, and a check on demand from all our locations.
Access
Requests need a key, sent as a Bearer token. Keys are issued by the operator of DownVerdict. Each key has a limit of requests per minute; a check on demand counts as five.
curl -H "Authorization: Bearer YOUR_KEY" \ https://downverdict.com/api/v1/status/github.com
Errors come as JSON with an error field: 401 without a valid key, 429 when the limit is reached (with a Retry-After header), 404 for a site that is not tracked.
Endpoints
GET/api/v1/status/{domain}
Stored status of a tracked site. Fast, and does not start a new check.
{
"domain": "github.com",
"name": "GitHub",
"status": "up", // up | down | unconfirmed | unavailable
"blocked": false, // reachable, but refused the automated check
"partial": false, // reachable from some locations only
"response_ms": 84,
"checked_at": "2026-10-09T08:12:41.000Z",
"uptime_percent": { "day": 100, "week": 99.97, "month": 99.91 },
"last_outage": { "started_at": "...", "ended_at": "..." },
"url": "https://downverdict.com/github.com"
}POST/api/v1/check
Checks a domain now from every location and returns what each of them saw. Works for sites we do not track yet. A result from the last minute is reused.
curl -X POST -H "Authorization: Bearer YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"domain":"example.com"}' https://downverdict.com/api/v1/check{
"domain": "example.com",
"status": "up",
"locations_answered": 3,
"locations_total": 3,
"response_ms": 61,
"cached": false,
"locations": [
{ "location": "Berlin 1, Germany", "status": "up", "http_code": 200, "response_ms": 58, "error": null }
]
}A site counts as down only when at least two locations fail to reach it. With one answer the status is unconfirmed.
GET/api/v1/outages
Confirmed outages, newest first. Optional query parameters: domain, ongoing=1, limit (up to 200).
{
"outages": [
{ "domain": "example.com", "name": "Example", "started_at": "...", "ended_at": null, "duration_seconds": 540 }
]
}Without a key
The status badge needs no key and can be embedded anywhere: https://downverdict.com/api/badge/github.com. Every site page has the embed code ready to copy.