River Gauges API

Australia's river gauges are spread across a different portal in every state, each with its own protocol, station numbering, timezone quirks, and update cadence. The gauges endpoints give you all of them through one API, with each gauge's latest level already compared against the Bureau of Meteorology flood classification for that site.

List gauges with live flood status

GET /api/v1/gauges returns stations with their latest reading and a derived floodClass: below_minor, minor, moderate, major, or unclassified for gauges without published thresholds. The floodClass filter uses at-or-above semantics, so floodClass=minor also returns gauges at moderate and major.

Gauges above minor flood level in NSW
curl -H "Authorization: Bearer YOUR_API_KEY" \
  "https://emergencyapi.com/api/v1/gauges?state=nsw&floodClass=minor"

Every station carries its thresholds with provenance, the local government area (the same ABS LGA codes the declarations API uses), and a readingStatus of live or stale. Stations sourced from the Bureau's Water Data Online (Western Australia) are a one to two day archive, not telemetry; their staleness horizon is 72 hours against 24 for telemetry states.

The one-call flood check

GET /api/v1/gauges/summary answers the operational question directly: how many gauges are at or above each classification, grouped by state or LGA, plus the station list. Stale readings are counted in their own bucket and never as a current flood signal.

Flood status for every SA local government area
curl -H "Authorization: Bearer YOUR_API_KEY" \
  "https://emergencyapi.com/api/v1/gauges/summary?state=sa&groupBy=lga"
One gauge, and its history

Gauge ids are stable and readable: {source}-{stationId}, for example hydstra-nsw-410001 (Murrumbidgee at Wagga Wagga). GET /api/v1/gauges/{id} returns the station plus its trailing six hours of raw readings on every plan.

GET /api/v1/gauges/{id}/readings is the paid history surface. Retention is tiered by granularity: raw readings for 30 days, hourly rollups for 90 days, daily rollups forever. Raw readings inside flood events (from when a gauge first crossed minor until it receded, plus a day either side) are kept permanently at full resolution. interval=auto picks the finest granularity available for your window, and above=minorreturns only readings at or above that gauge's threshold.

Every reading above the moderate threshold, last 90 days
curl -H "Authorization: Bearer YOUR_API_KEY" \
  "https://emergencyapi.com/api/v1/gauges/hydstra-nsw-410001/readings?above=moderate&interval=auto&after=2026-04-14T00:00:00Z"

Lookback depth follows your plan, matching the incidents history ladder: Starter one year, Developer and Business five years, Pro and Enterprise unlimited. Free keys get current readings on /gauges and the six hour window on /gauges/{id}.

Units, datums, and honesty

Readings are metres relative to each gauge's local datum, not sea level: 3.0 metres at one gauge and 3.0 metres at another are not the same water. Where the authority publishes a gauge zero or datum, it is on the station record. Flood classes derive from the published classification for that specific gauge, so comparisons across gauges should use floodClass, never raw values. Quality codes pass through in each state's own vocabulary. This is status reporting against published authority levels, not flood prediction, and not a substitute for official warnings. Background: understanding flood classifications.