Public API

Free, read-only JSON endpoints with the current status of every monitored service. No key, no signup.

Endpoints

https://downradar.info/api/v1/vendors
https://downradar.info/api/v1/vendors/{slug}

The first returns every monitored service, around 25 KB for 71 services. The second returns one service with its components, recent status changes and incidents.

Example

curl -s https://downradar.info/api/v1/vendors
{
  "count": 2,
  "vendors": [
    {
      "slug": "elastic",
      "name": "Elastic",
      "url": "https://status.elastic.co",
      "category": "observability",
      "logoUrl": "https://dka575ofm4ao0.cloudfront.net/pages-favicon_logos/original/862/favicon.ico",
      "status": "partial",
      "changedAt": "2026-10-15T10:45:06Z",
      "components": 548,
      "degradedComponents": 7,
      "lastPolledAt": "2026-10-15T11:31:04Z"
    },
    {
      "slug": "strava",
      "name": "Strava",
      "url": "https://status.strava.com",
      "category": "fitness",
      "logoUrl": "https://dka575ofm4ao0.cloudfront.net/pages-favicon_logos/original/8442/qdVJwxWnSKqnbylGekz0",
      "status": "ok",
      "changedAt": "2026-10-15T10:45:04Z",
      "components": 6,
      "degradedComponents": 0,
      "lastPolledAt": "2026-10-15T11:31:03Z"
    }
  ]
}

Fields

FieldTypeDescription
slugstringStable identifier. Use it to build the vendor page URL.
namestringDisplay name of the service.
urlstringThe service's official status page, the source of the data.
categorystringOptional grouping label, curated by hand.
logoUrlstringOptional logo. May be absent.
statusstringOne of the status values listed below.
changedAtstring | nullWhen the status last changed. Not the last check time.
componentsnumberHow many components the status page reports.
degradedComponentsnumberHow many of those are not operational.
lastPolledAtstring | nullWhen this service was last checked.

Status values

ValueMeaning
OperationalFully operational
DegradedSlower or partially affected, still usable
Partial outageSome components are having an outage
Major outageCritical components are down
MaintenancePlanned maintenance
UnknownNo data, or vocabulary we do not recognise

Rate limits

  • 120 requests per minute per IP, with a burst of 30. This is far more than a normal integration needs, and it exists to stop abuse rather than to meter usage.
  • Exceeding it returns 429 Too Many Requests with a Retry-After: 60 header and a small JSON body.
  • Because responses are cacheable for a minute, caching on your side is the easiest way to stay well inside the limit.

Caching and freshness

  • Responses carry Cache-Control: public, max-age=60, stale-while-revalidate=300, so caching for a minute is safe.
  • Each service is polled every 5 minutes while healthy, and every minute while it is having problems. Data can therefore be up to 5 minutes old.
  • changedAt is when the status last changed, which can be much older than lastPolledAt.

Suggesting a service

If a service is missing, the website offers to suggest it. That form posts to POST /api/v1/suggest with { "name": "...", "url": "..." }, where the url is optional, and turns the suggestion into a GitHub issue. It is rate limited much more tightly than the read endpoints.

Terms

Free to use, including commercially. Please cache rather than polling aggressively, and link back to https://downradar.info where it makes sense. The data comes from each service's own status page, so treat it as a convenience rather than a contract.