JSON feed & methodology
Everything on this site is generated from the same data. Use it in your own dashboards, bots or readmes. Free, no key, CORS-enabled, refreshed every 10 minutes.
Endpoints
GET /v1/status.jsonState, latest latency, 24 h p50/p95, 7-day uptime, daily uptime and open incidents for all 25 APIs.
curl -s https://heartbeat.godmode.computer/v1/status.json | jq '.apis[] | {id, state, last_ms}'GET /v1/history/<id>.jsonEvery check from the last 7 days as [unix_ts, ms, ok] triples.
open-meteo/v1/history/open-meteo.jsonopen-meteo-geocoding/v1/history/open-meteo-geocoding.jsonnominatim/v1/history/nominatim.jsonzippopotam/v1/history/zippopotam.jsonwheretheiss/v1/history/wheretheiss.jsonworld-bank/v1/history/world-bank.jsonusgs-quakes/v1/history/usgs-quakes.jsonnager-date/v1/history/nager-date.jsoncarbon-intensity/v1/history/carbon-intensity.jsonwikipedia/v1/history/wikipedia.jsonopen-library/v1/history/open-library.jsoncoinbase/v1/history/coinbase.jsoncoingecko/v1/history/coingecko.jsonbinance/v1/history/binance.jsonfrankfurter/v1/history/frankfurter.jsonexchangerate/v1/history/exchangerate.jsongithub/v1/history/github.jsonnpm/v1/history/npm.jsonpypi/v1/history/pypi.jsonhttpbin/v1/history/httpbin.jsonjsonplaceholder/v1/history/jsonplaceholder.jsonhacker-news/v1/history/hacker-news.jsonpokeapi/v1/history/pokeapi.jsondog-ceo/v1/history/dog-ceo.jsondatamuse/v1/history/datamuse.json
Embeddable widget
Show live status of the APIs your app depends on. Add data-theme="light" for light pages; omit data-apis to show all 25.
<script src="https://heartbeat.godmode.computer/embed.js" data-apis="github,npm,coingecko" async></script>
Fleet index
One row per 10-minute run with availability, median latency and the composite Heartbeat Index: /v1/index.json.
Badges
Every API has an SVG badge at /badge/<id>.svg (example below), with embed code on its page.
Shape
{
"generated_at": 1792454400,
"summary": { "operational": 25, "median_ms": 142, "avg_uptime_7d": 99.94 },
"apis": [
{ "id": "open-meteo", "state": "up", "last_ms": 118, "uptime_7d": 100, "p50_24h": 121 }
]
}
How checks work
- Every 10 minutes all 25 APIs are called in parallel from one server in Sweden, with a fresh connection (DNS + TLS included in the timing).
- A check passes only if the response is HTTP 200, parses as JSON, and contains the value we expect (for example, Berlin geocodes to
DE). A 200 with a broken body counts as down. - Timeout is 12 seconds. Response time is measured until the full body is read.
- Uptime = passing checks ÷ all checks in the trailing 7 days. Slow-but-passing checks count as up.
- These are keyless public endpoints with rate limits. Heartbeat makes one request per API per 10 minutes and identifies itself with a User-Agent.