glitchmap

API

Everything the site shows is available as JSON. No key, no registration, free.

Endpoints

GET /api/v1/snapshot The whole picture at once: every service, the index, counts by status and category.
GET /api/v1/services The service list. Filter with category and status.
GET /api/v1/services/{slug} One service: current state, the reason behind it, checks and the last day of measurements.
GET /api/v1/services/{slug}/history?range=24h Availability and latency over time. The range is one of 24h, 7d, 30d, 90d.
GET /api/v1/incidents Our own incidents. Pass active=1 for the open ones only.
GET /api/v1/health The health index, the same one on the front page, plus the state of our own collection.

Feeds

Atom, for readers and chat bots: everything, or one service.

GET /feed/incidents.xml Every incident we record, newest first.
GET /feed/services/{slug}.xml The same, narrowed to one service.

Caching

Answers carry an ETag and live 15 seconds. Send If-None-Match and a repeat request costs you 304 instead of the whole body.

curl -sI https://glitchmap.com/api/v1/health | grep -i etag
curl -s -H 'If-None-Match: "..."' -o /dev/null -w '%{http_code}\n' https://glitchmap.com/api/v1/health

Rate limit

120 requests a minute per client. Past that the answer is 429 with Retry-After. No key raises it — if you need more, write and say what for.

Using the data

Take it and build on it. A link back is welcome but not demanded. One thing to keep in mind: these are our measurements from one host plus what vendors publish about themselves — not a guarantee and not an SLA.

How the measurements are taken is described on the checking page. About the checks · [email protected]