Developer documentation

Weather alerts,
built for software.

Query active ZASNet watches, warnings, and advisories as GeoJSON. No API key is required.

Quick start
curl "/api/public/alerts/active?area=TN"

Returns a GeoJSON FeatureCollection containing active alerts in Tennessee.

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.

Important

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

GET/api/public/alerts/active

List active alerts. Apply query parameters to filter the collection.

GET/api/public/alerts/active/area/{state}

Active alerts for a two-letter state or territory code.

GET/api/public/alerts/active/zone/{zone}

Active alerts for a UGC county or forecast-zone identifier.

GET/api/public/alerts/active/count

Small JSON summary grouped by event name.

GET/api/public/alerts/{id}

Retrieve one active alert by its internal ID or product ID.

GET/api/public/alerts/{id}.txt

Retrieve the complete plain-text warning bulletin.

Query parameters

Filter active alerts

ParameterValueDescription
areaTNTwo-letter state or territory. Comma-separated values are accepted.
zoneTN006UGC county or forecast-zone identifier.
point36.16,-86.78Latitude and longitude. Returns alerts whose geometry contains the point.
eventTornado WarningExact event name, case-insensitive.
codeTORZASNet/AWIPS product code.
severitySevereExtreme, Severe, Moderate, Minor, or Unknown.
urgencyImmediateImmediate, Expected, Future, Past, or Unknown.
certaintyObservedObserved, Likely, Possible, Unlikely, or Unknown.
limit100Results per page, from 1 through 500.
cursor100Result 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.

id

Canonical URL for this alert.

geometry

GeoJSON Polygon or MultiPolygon.

properties.id

Stable ZASNet alert identifier.

properties.event

Human-readable hazard name.

properties.areaDesc

Plain-language affected area.

properties.geocode

SAME/FIPS and UGC identifiers.

properties.sent / effective / onset / expires / ends

ISO 8601 lifecycle times.

properties.status

CAP status; public products are Actual.

properties.severity / urgency / certainty

CAP-style hazard classification.

properties.headline / description / instruction

Human-readable alert content.

properties.sender / senderName

Issuing office identity.

properties.parameters

Product code, product ID, and state metadata.

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