hntavirus.com API

Public, read-only HTTP API for hantavirus surveillance data. Cases, news, WHO Disease Outbreak News, AI-written daily briefings and raw datasets. Free for research and journalism — please credit the site and upstream sources.

Base URL
https://hntavirus.com
Auth
none (read), token (admin)
Format
JSON · GeoJSON · CSV · XML

Public endpoints

MethodEndpointDescription
GET/api/statsHigh-level case counts (total / confirmed / suspected / deaths / locations).
GET/api/casesGeoJSON of all current cases. Optional ?fresh=1 to bypass cache.
GET/api/cases/by-country/{iso}Cases filtered by ISO-2 country.
GET/api/country/{iso}One-shot dashboard for a country: stats, cases, news, WHO DON, aggregate.
GET/api/newsLatest news. Filters: ?limit, ?lang, ?country.
GET/api/who-donWHO Disease Outbreak News mentioning hantavirus. Optional ?country=.
GET/api/sourcesLive freshness and counts for every upstream source.
GET/api/timeseriesDaily series. Params: ?iso=, ?days=, ?series=cases|cfr.
GET/api/briefingAI-written daily briefing. ?locale=en|es|fr|de|pt|zh|ja|ko|ru|ar.
GET/api/dataset/cases.geojsonPublic GeoJSON download (CORS *).
GET/api/dataset/cases.csvPublic CSV download (CORS *).
GET/api/dataset/news.jsonJSON dump of recent news (CORS *).
GET/feed.xmlRSS 2.0 feed. ?lang= localizes the channel title.
GET/sitemap.xmlStandard sitemap.
GET/sitemap-news.xmlGoogle News sitemap.

Quick examples

# Stats
curl https://hntavirus.com/api/stats

# Latest 5 Spanish news titles
curl 'https://hntavirus.com/api/news?lang=es&limit=5'

# Country dashboard
curl https://hntavirus.com/api/country/CH

# Daily AI briefing in German
curl 'https://hntavirus.com/api/briefing?locale=de'

# Raw dataset download
curl -o cases.geojson https://hntavirus.com/api/dataset/cases.geojson

Admin endpoints

All admin endpoints require an x-admin-token header or the hanta_admin cookie set by POST /api/admin/login. Unauthenticated requests get 404 Not Found with no hint.

MethodEndpointDescription
POST/api/admin/loginAuthenticate with admin token. Sets HttpOnly cookie.
POST/api/admin/logoutClear cookie.
GET / POST/api/admin/casesList or create manual cases.
PATCH / DELETE/api/admin/cases/{id}Patch or delete.
POST/api/admin/newsInsert news (origin=manual).
DELETE/api/admin/news/{id}Delete news row by id.
GET / POST/api/admin/sourcesList or create RSS sources.
PATCH / DELETE/api/admin/sources/{id}Patch (e.g. enabled) or delete a source.
POST/api/admin/sources/{id}/pullPull this RSS source now.
POST/api/admin/sources/pull-allPull every enabled source.
POST/api/admin/translateTranslate text via Workers AI m2m100.
POST/api/admin/refreshRe-run the full ingest pipeline (WHO + GDELT + ProMED + ArcGIS).
POST/api/admin/enrichClassify relevance of unscored news rows.
POST/api/admin/changelogAdd a changelog entry.

Versioning, rate limits & attribution

  • Current version: v1 (implicit). Breaking changes will move to /api/v2/* with a deprecation period.
  • Rate limits are soft, enforced by Cloudflare. Expect 429 only under abuse.
  • If you use the data publicly, please link back to hntavirus.com and credit upstream sources (ArcGIS / WHO DON / GDELT / ProMED / r/ContagionCuriosity).

Full reference

A complete markdown reference with curl, JavaScript and Python examples lives in the repo at docs/API.md.