Overview
A familiar alerts interface
The API is a read-only view of currently active, non-practice ZASNet products. Responses use GeoJSON and include CAP-style status, urgency, severity, certainty, event text, geocodes, timing, instructions, and geometry.
This is an unofficial ZASNet service. For life-safety decisions, follow official warnings and local emergency instructions.
- Base URL
- Authentication
- None
- Response format
- GeoJSON / JSON
- CORS
- Allowed from all origins
- Cache lifetime
- 15 seconds
- Maximum page size
- 500 alerts
Reference
Endpoints
/api/public/alerts/activeList active alerts. Apply query parameters to filter the collection.
/api/public/alerts/active/area/{state}Active alerts for a two-letter state or territory code.
/api/public/alerts/active/zone/{zone}Active alerts for a UGC county or forecast-zone identifier.
/api/public/alerts/active/countSmall JSON summary grouped by event name.
/api/public/alerts/{id}Retrieve one active alert by its internal ID or product ID.
/api/public/alerts/{id}.txtRetrieve the complete plain-text warning bulletin.
Query parameters
Filter active alerts
| Parameter | Value | Description |
|---|---|---|
area | TN | Two-letter state or territory. Comma-separated values are accepted. |
zone | TN006 | UGC county or forecast-zone identifier. |
point | 36.16,-86.78 | Latitude and longitude. Returns alerts whose geometry contains the point. |
event | Tornado Warning | Exact event name, case-insensitive. |
code | TOR | ZASNet/AWIPS product code. |
severity | Severe | Extreme, Severe, Moderate, Minor, or Unknown. |
urgency | Immediate | Immediate, Expected, Future, Past, or Unknown. |
certainty | Observed | Observed, Likely, Possible, Unlikely, or Unknown. |
limit | 100 | Results per page, from 1 through 500. |
cursor | 100 | Result offset supplied by pagination.next. |
Repeat a parameter or use comma-separated values to request multiple matches. Different filters are combined with AND.
Recipes
Example requests
curl "/api/public/alerts/active?event=Tornado%20Warning&area=TN"const url = new URL("/api/public/alerts/active");
url.searchParams.set("point", "36.16,-86.78");
const response = await fetch(url);
if (!response.ok) throw new Error(`API ${response.status}`);
const alerts = await response.json();
console.log(alerts.features);import requests
response = requests.get(
"/api/public/alerts/active",
params={"area": "TN", "severity": "Severe"},
timeout=20,
)
response.raise_for_status()
alerts = response.json()["features"]Data model
Alert feature
Every collection member is a GeoJSON Feature. Polygon or MultiPolygon geometry describes the alert area; geometry may be null when no usable area is available.
idCanonical URL for this alert.
geometryGeoJSON Polygon or MultiPolygon.
properties.idStable ZASNet alert identifier.
properties.eventHuman-readable hazard name.
properties.areaDescPlain-language affected area.
properties.geocodeSAME/FIPS and UGC identifiers.
properties.sent / effective / onset / expires / endsISO 8601 lifecycle times.
properties.statusCAP status; public products are Actual.
properties.severity / urgency / certaintyCAP-style hazard classification.
properties.headline / description / instructionHuman-readable alert content.
properties.sender / senderNameIssuing office identity.
properties.parametersProduct code, product ID, and state metadata.
For exact types and enumerations, use the OpenAPI 3.1 document.
Collections
Pagination
Set limit to control page size. When more results exist, the response contains a complete URL in pagination.next. Follow that URL as provided. A null value means the final page has been reached.
{
"pagination": {
"next": "/api/public/alerts/active?limit=100&cursor=100"
}
}Operations
Errors, caching, and use
- 200 — request succeeded, including an empty collection.
- 404 — an individual alert does not exist or is no longer active.
- 5xx — service-side failure; retry with exponential backoff.
Collection responses advertise Cache-Control: public, max-age=15. Clients should honor that cache window and avoid aggressive polling. Cross-origin GET, HEAD, and OPTIONS requests are supported without credentials.
Compatibility
Existing response formats
Clients built for the original ZASNet API can continue using these routes:
/api/public/alerts— compact ZASNet JSON/api/public/alerts?format=geojson— map-oriented GeoJSON/api/public/alerts?format=catalog— lightweight product catalog/api/public/summary— active product summary
