| Endpoint | Returns |
|---|---|
| GET /api/v1 | self-describing endpoint index |
| GET /api/v1/domain/example.dk | latest scan record set (add ?scan_id=N for a past scan) |
| GET /api/v1/domain/example.dk/history | scan history for the domain |
| GET /api/v1/reverse/ns/ns1.gratisdns.dk | reverse lookup — by ns|mx|asn|ip|ip6|cidr|isp|country|city|ptr|rname|nsip|nsptr|spf|srv|srvtarget|registrar|autodiscover|autoconfig |
| GET /api/v1/leaderboard/asns | top asns|ns|mx|countries|ips|srv|autodiscover|autoconfig|halloffame|dangling |
| GET /api/v1/changes/asn?view=net | migrations — kind asn|ns|reg, view net|gaining|losing|recent (net = asn only) |
| GET /api/v1/zone/newcomers?days=14 | zone churn — newcomers|expired|changed|revisions |
| GET /api/v1/nameserver/ns1.gratisdns.dk | zone-transfer / glue / CHAOS-version profile |
| GET /api/v1/stats | full dashboard aggregate cache |
Every response is {data, meta}; errors are {error:{code,message}} with the matching HTTP status. List endpoints accept page and per_page (≤500).
{
"data": [ … ],
"meta": { "count": 123, "page": 1, "per_page": 50, "pages": 3, "as_of": "…Z" }
}