Customer API

Flood Sentinel Customer API — Australia-wide rain & river data + forecasts, one REST call

A partner-facing REST API over the Flood Sentinel data store: station metadata, live readings, history, flood thresholds and ML forecasts. JSON in, JSON out, BoM attribution included.

What the API gives you

All data endpoints live under /bom/v1 and require a Bearer token (role api_customer or admin).

Stations

GET /bom/v1/stations — filter by state, type or bbox. GET /bom/v1/stations/{id} for detail and /parameters for what each gauge measures.

Readings & latest

GET /bom/v1/stations/{id}/readings for time series, /latest for the most recent value per parameter.

History range

Query readings?from=&to= for historical water level and rainfall — date range depth scales with your plan (90 days → unlimited).

Catchments & routing

GET /bom/v1/routing/network returns the routing graph and /stations/{id}/upstream the tributary topology.

Forecast

GET /bom/v1/forecast/{id} — ML-based flood forecast where the station is modelled, plus /thresholds and /validation skill metrics.

Alerts & webhooks

GET /bom/v1/alerts for active flood alerts; POST /bom/v1/webhooks to get pushed updates.

Authenticate, then pull data

JWT auth: register, log in for an access token, then send it as Authorization: Bearer <token>.

1. Log in & pull readings

# Login → access_token TOKEN=$(curl -s -X POST \ https://api.floodsentinel.com.au/api/auth/login \ -H 'Content-Type: application/json' \ -d '{"email":"you@example.com", "password":"••••••••"}' \ | jq -r .access_token) # Time series for a station curl -H "Authorization: Bearer $TOKEN" \ "https://api.floodsentinel.com.au/bom/v1/stations/212903/readings?from=2026-05-01&to=2026-05-15" # Latest value per parameter curl -H "Authorization: Bearer $TOKEN" \ "https://api.floodsentinel.com.au/bom/v1/stations/212903/latest"

2. Sample JSON (latest)

{ "api_version": "1.0", "station_id": "212903", "latest": [ { "parameter": "GAUGE_HEIGHT", "value": 2.41, "timestamp": "2026-05-15T03:00:00+00:00" } ], "attribution": "Data sourced from the Bureau of Meteorology © Commonwealth of Australia (CC-BY 4.0)." }

Every response carries X-RateLimit-* headers, an attribution field and api_version. Errors return {"error", "status"} with the matching HTTP code.

Included in every paid plan. Free tier: 100 calls/day, 90-day date range, 1,000 rows/request.

Build on Australian flood data

Sign up for a free API account, or read the full reference for every endpoint, parameter and rate limit.