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
| Method | Endpoint | Description |
|---|---|---|
| GET | /api/stats | High-level case counts (total / confirmed / suspected / deaths / locations). |
| GET | /api/cases | GeoJSON 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/news | Latest news. Filters: ?limit, ?lang, ?country. |
| GET | /api/who-don | WHO Disease Outbreak News mentioning hantavirus. Optional ?country=. |
| GET | /api/sources | Live freshness and counts for every upstream source. |
| GET | /api/timeseries | Daily series. Params: ?iso=, ?days=, ?series=cases|cfr. |
| GET | /api/briefing | AI-written daily briefing. ?locale=en|es|fr|de|pt|zh|ja|ko|ru|ar. |
| GET | /api/dataset/cases.geojson | Public GeoJSON download (CORS *). |
| GET | /api/dataset/cases.csv | Public CSV download (CORS *). |
| GET | /api/dataset/news.json | JSON dump of recent news (CORS *). |
| GET | /feed.xml | RSS 2.0 feed. ?lang= localizes the channel title. |
| GET | /sitemap.xml | Standard sitemap. |
| GET | /sitemap-news.xml | Google 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.geojsonAdmin 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.
| Method | Endpoint | Description |
|---|---|---|
| POST | /api/admin/login | Authenticate with admin token. Sets HttpOnly cookie. |
| POST | /api/admin/logout | Clear cookie. |
| GET / POST | /api/admin/cases | List or create manual cases. |
| PATCH / DELETE | /api/admin/cases/{id} | Patch or delete. |
| POST | /api/admin/news | Insert news (origin=manual). |
| DELETE | /api/admin/news/{id} | Delete news row by id. |
| GET / POST | /api/admin/sources | List or create RSS sources. |
| PATCH / DELETE | /api/admin/sources/{id} | Patch (e.g. enabled) or delete a source. |
| POST | /api/admin/sources/{id}/pull | Pull this RSS source now. |
| POST | /api/admin/sources/pull-all | Pull every enabled source. |
| POST | /api/admin/translate | Translate text via Workers AI m2m100. |
| POST | /api/admin/refresh | Re-run the full ingest pipeline (WHO + GDELT + ProMED + ArcGIS). |
| POST | /api/admin/enrich | Classify relevance of unscored news rows. |
| POST | /api/admin/changelog | Add 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
429only 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.