Public API
Free JSON endpoints, rate limited to 10 requests per minute.
Weather Report
GET /api/v1/weather?zip=94110Returns the current COVID risk level, trend direction, experimental prevalence estimate and model range, plus the selected sewershed or county wastewater geography for a US ZIP code.
{
"zip": "94110",
"status": "ok",
"riskLevel": "Low",
"riskLevelKey": "low",
"description": "Low activity. Routine precautions.",
"trend": "falling",
"trendPercent": -15,
"prevalencePerMillion": 820,
"prevalenceRangePerMillion": {
"lower": 610,
"upper": 1100
},
"latestDate": "2026-03-20",
"dataAgeDays": 4,
"plant": {
"uid": "e9e87e61",
"name": "Southeast San Francisco",
"city": "San Francisco",
"state": "California",
"distanceKm": 2.8,
"geography": "sewershed",
"countyFips": null
},
"model": {
"source": "WastewaterSCAN",
"geography": "sewershed",
"model": "MohringEmpirical2024",
"modelVersion": "R/gamma-1x",
"experimental": true
}
}LocalRisk prefers a current WastewaterSCAN sewershed serving the ZIP's county. A response may instead report "geography": "county" and "source": "CDC NWSS" when the strictly filtered county fallback is used.
Risk Calculator
GET /api/v1/risk?level=moderateGET /api/v1/risk?prevalence=2000Returns 5 preset activity scenarios with original and mitigated µCoV costs for a given risk level or raw prevalence (per million).
{
"riskLevel": "Moderate",
"prevalencePerMillion": 2000,
"scenarios": [
{
"name": "Doctor Visit",
"originalMicrocovids": 166,
"mitigatedMicrocovids": 28,
"mitigation": "With N95"
},
...
]
}Shareable Image
Share a COVID risk card in group chats, newsletters, or community sites. The image is auto-generated and always shows the current risk level.
Share link (generates rich preview): https://localrisk.org/share?zip=94110 Direct image (1200x630 PNG): https://localrisk.org/api/og?zip=94110 Download: visit /share?zip=94110 and click "Download image"
Share links generate rich previews in iMessage, Signal, Slack, and Discord. If current wastewater is unusable, the card explicitly identifies its Moderate manual fallback.
CORS & Rate Limits
All v1 endpoints allow cross-origin requests (CORS: *).
Rate limit: 10 requests per minute per IP.
Responses are cached for 5 minutes (Cache-Control: public, max-age=300).
No API key required. No authentication needed.