{"api_version":"1.0","attribution":"Flood Sentinel skill metrics. Data sourced from the Australian Bureau of Meteorology. Forecasts generated by ensemble ML models trained on historical observations.","catchments":[{"display_name":"Hawkesbury-Nepean River Catchment","region":"Greater Sydney","slug":"hawkesbury-nepean","stations":[{"active_models":147,"datum":"Local","horizons":{"1":{"cv_r2":null,"mae":0.0037,"model":"LightGBM","r2":0.997,"registered":"2026-04-14T08:09:21.555837","rmse":0.0156},"3":{"cv_r2":null,"mae":0.0067,"model":"XGBoost","r2":0.9909,"registered":"2026-04-19T11:02:01.786061","rmse":0.0273},"6":{"cv_r2":null,"mae":0.0119,"model":"LightGBM","r2":0.9696,"registered":"2026-04-19T11:03:12.910190","rmse":0.05},"12":{"cv_r2":null,"mae":0.028,"model":"XGBoost","r2":0.8183,"registered":"2026-04-14T07:42:50.582586","rmse":0.1221},"24":{"cv_r2":null,"mae":0.3712,"model":"MetaLearner","r2":0.597,"registered":"2026-07-23T00:11:22.969769","rmse":0.9818},"48":{"cv_r2":null,"mae":0.3835,"model":"MetaLearner","r2":0.6343,"registered":"2026-07-22T00:14:26.685890","rmse":1.1231},"72":{"cv_r2":null,"mae":0.3544,"model":"MetaLearner","r2":0.6154,"registered":"2026-04-19T11:07:47.169790","rmse":1.0583},"96":{"cv_r2":null,"mae":0.4648,"model":"MetaLearner","r2":0.4456,"registered":"2026-04-19T11:08:59.952472","rmse":1.3442}},"name":"Camden Weir","river":"Nepean River","station_id":"212216","thresholds":{"major":13.8,"minor":6.8,"moderate":8.3},"tidal":false,"total_models":147},{"active_models":60,"datum":"Local","horizons":{"1":{"cv_r2":null,"mae":0.004,"model":"LightGBM","r2":0.9976,"registered":"2026-04-19T08:00:10.826382","rmse":0.0184},"3":{"cv_r2":null,"mae":0.0072,"model":"XGBoost","r2":0.9863,"registered":"2026-06-16T07:59:40.446752","rmse":0.0406},"6":{"cv_r2":null,"mae":0.0119,"model":"LightGBM","r2":0.9658,"registered":"2026-07-01T03:17:16.929563","rmse":0.0642},"12":{"cv_r2":null,"mae":0.0271,"model":"XGBoost","r2":0.8665,"registered":"2026-06-16T08:18:32.720440","rmse":0.1266},"24":{"cv_r2":null,"mae":0.0494,"model":"XGBoost","r2":0.5824,"registered":"2026-06-16T08:18:32.750711","rmse":0.224},"48":{"cv_r2":null,"mae":0.5358,"model":"MetaLearner","r2":0.4818,"registered":"2026-07-01T03:17:16.924496","rmse":1.2653},"72":{"cv_r2":null,"mae":0.4899,"model":"MetaLearner","r2":0.5643,"registered":"2026-07-01T03:17:16.943117","rmse":1.1038}},"name":"Wallacia Weir","river":"Nepean River","station_id":"212202","thresholds":{"major":11.0,"minor":5.0,"moderate":8.7},"tidal":false,"total_models":60},{"active_models":84,"datum":"Local","horizons":{"1":{"cv_r2":null,"mae":0.0036,"model":"LightGBM","r2":0.9975,"registered":"2026-04-19T07:03:41.085034","rmse":0.0171},"3":{"cv_r2":null,"mae":0.0075,"model":"LightGBM","r2":0.9901,"registered":"2026-04-19T07:04:40.485556","rmse":0.0343},"6":{"cv_r2":null,"mae":0.0112,"model":"LightGBM","r2":0.9797,"registered":"2026-07-22T00:21:55.007378","rmse":0.0401},"12":{"cv_r2":null,"mae":0.0275,"model":"XGBoost","r2":0.9356,"registered":"2026-04-19T07:06:34.496156","rmse":0.0874},"24":{"cv_r2":null,"mae":0.0352,"model":"XGBoost","r2":0.8416,"registered":"2026-07-22T00:25:50.089229","rmse":0.112},"48":{"cv_r2":null,"mae":0.2172,"model":"MetaLearner","r2":0.701,"registered":"2026-04-19T07:09:34.160256","rmse":0.7086},"72":{"cv_r2":null,"mae":0.277,"model":"MetaLearner","r2":0.5561,"registered":"2026-04-19T07:10:41.806147","rmse":0.797}},"name":"Penrith Weir","river":"Nepean River","station_id":"212201","thresholds":{"major":10.4,"minor":3.9,"moderate":7.9},"tidal":false,"total_models":84},{"active_models":61,"datum":"Local","horizons":{"1":{"cv_r2":null,"mae":0.0402,"model":"LightGBM","r2":0.9853,"registered":"2026-04-19T06:54:00.274440","rmse":0.0727},"3":{"cv_r2":null,"mae":0.0904,"model":"LightGBM","r2":0.9499,"registered":"2026-04-19T06:55:01.410725","rmse":0.1342},"6":{"cv_r2":null,"mae":0.1221,"model":"LightGBM","r2":0.8944,"registered":"2026-04-19T06:56:00.965447","rmse":0.1949},"12":{"cv_r2":null,"mae":0.1482,"model":"XGBoost","r2":0.8011,"registered":"2026-07-22T02:23:28.587328","rmse":0.2656},"24":{"cv_r2":null,"mae":0.4279,"model":"MetaLearner","r2":0.7075,"registered":"2026-04-19T06:58:18.337488","rmse":0.9849},"48":{"cv_r2":null,"mae":0.5886,"model":"MetaLearner","r2":0.6082,"registered":"2026-04-19T06:59:14.168117","rmse":1.3158},"72":{"cv_r2":null,"mae":0.7363,"model":"MetaLearner","r2":0.4508,"registered":"2026-04-19T07:00:08.428459","rmse":1.4907}},"name":"North Richmond","river":"Hawkesbury River","station_id":"212200","thresholds":{"major":10.5,"minor":3.8,"moderate":7.9},"tidal":false,"total_models":61},{"active_models":72,"datum":"AHD","horizons":{"1":{"cv_r2":null,"mae":0.0186,"model":"LightGBM","r2":0.9955,"registered":"2026-04-14T06:25:22.707990","rmse":0.0299},"3":{"cv_r2":null,"mae":0.0433,"model":"LightGBM","r2":0.9765,"registered":"2026-04-14T08:00:55.379703","rmse":0.0687},"6":{"cv_r2":null,"mae":0.0765,"model":"LightGBM","r2":0.9304,"registered":"2026-04-14T07:33:35.937448","rmse":0.1181},"12":{"cv_r2":null,"mae":0.0902,"model":"GradientBoosting","r2":0.8282,"registered":"2026-04-14T07:35:36.959592","rmse":0.1855},"24":{"cv_r2":null,"mae":0.25,"model":"MetaLearner","r2":0.7095,"registered":"2026-04-14T08:05:59.646995","rmse":0.6805},"48":{"cv_r2":null,"mae":0.3773,"model":"MetaLearner","r2":0.6329,"registered":"2026-04-14T06:33:31.306257","rmse":0.9184},"72":{"cv_r2":null,"mae":0.4888,"model":"MetaLearner","r2":0.3713,"registered":"2026-04-14T08:08:51.703792","rmse":1.1477}},"name":"Windsor","river":"Hawkesbury River","station_id":"212903","thresholds":{"major":12.2,"minor":5.8,"moderate":7.0},"tidal":false,"total_models":72},{"active_models":47,"datum":"AHD","horizons":{"1":{"cv_r2":null,"mae":0.037,"model":"XGBoost","r2":0.9671,"registered":"2026-06-17T06:51:29.389047","rmse":0.064},"3":{"cv_r2":null,"mae":0.0668,"model":"XGBoost","r2":0.9248,"registered":"2026-06-17T06:51:29.394275","rmse":0.0967},"6":{"cv_r2":null,"mae":0.0832,"model":"XGBoost","r2":0.8901,"registered":"2026-06-17T06:51:29.410286","rmse":0.1169},"12":{"cv_r2":null,"mae":0.1195,"model":"XGBoost","r2":0.7439,"registered":"2026-06-17T06:51:29.409067","rmse":0.1785},"24":{"cv_r2":null,"mae":0.1652,"model":"LightGBM","r2":0.5562,"registered":"2026-07-01T06:17:29.499078","rmse":0.235},"48":{"cv_r2":null,"mae":0.6038,"model":"MetaLearner","r2":0.4587,"registered":"2026-07-22T07:22:56.163681","rmse":1.1345},"72":{"cv_r2":null,"mae":0.2469,"model":"LightGBM","r2":0.1603,"registered":"2026-07-01T06:17:29.510836","rmse":0.3233}},"name":"Sackville","river":"Hawkesbury River","station_id":"212406","thresholds":{"major":9.7,"minor":4.6,"moderate":7.3},"tidal":true,"total_models":47},{"active_models":41,"datum":"AHD","horizons":{"1":{"cv_r2":null,"mae":0.0336,"model":"LightGBM","r2":0.9789,"registered":"2026-07-01T06:17:29.525791","rmse":0.0466},"3":{"cv_r2":null,"mae":0.0724,"model":"LightGBM","r2":0.9041,"registered":"2026-07-01T06:17:29.456758","rmse":0.0994},"6":{"cv_r2":null,"mae":0.3491,"model":"MetaLearner","r2":0.8439,"registered":"2026-07-01T06:17:29.488424","rmse":0.6369},"12":{"cv_r2":null,"mae":0.3748,"model":"MetaLearner","r2":0.8552,"registered":"2026-07-01T06:17:29.503912","rmse":0.6767},"24":{"cv_r2":null,"mae":0.4901,"model":"MetaLearner","r2":0.6908,"registered":"2026-07-01T06:17:29.439134","rmse":0.8886},"48":{"cv_r2":null,"mae":0.5355,"model":"MetaLearner","r2":0.721,"registered":"2026-07-22T04:31:08.537940","rmse":0.9847},"72":{"cv_r2":null,"mae":0.5634,"model":"MetaLearner","r2":0.695,"registered":"2026-07-22T04:32:17.940997","rmse":0.9895}},"name":"Lower Portland","river":"Hawkesbury River","station_id":"212407","thresholds":{"major":7.6,"minor":4.6,"moderate":6.1},"tidal":true,"total_models":41},{"active_models":27,"datum":"AHD","horizons":{"1":{"cv_r2":null,"mae":0.0395,"model":"XGBoost","r2":0.9795,"registered":"2026-06-16T10:21:18.062030","rmse":0.0541},"3":{"cv_r2":null,"mae":0.0731,"model":"XGBoost","r2":0.9298,"registered":"2026-07-22T04:33:15.446714","rmse":0.0931},"6":{"cv_r2":null,"mae":0.1159,"model":"XGBoost","r2":0.8437,"registered":"2026-06-16T10:21:18.064547","rmse":0.1494},"12":{"cv_r2":null,"mae":0.165,"model":"LightGBM","r2":0.682,"registered":"2026-07-22T04:34:26.989238","rmse":0.1981},"24":{"cv_r2":null,"mae":0.221,"model":"XGBoost","r2":0.412,"registered":"2026-07-22T04:34:44.261542","rmse":0.2694},"48":{"cv_r2":null,"mae":0.3077,"model":"MetaLearner","r2":0.0049,"registered":"2026-07-22T04:35:27.298066","rmse":0.3598},"72":{"cv_r2":null,"mae":0.3079,"model":"MetaLearner","r2":0.0044,"registered":"2026-07-22T04:35:49.896781","rmse":0.3603}},"name":"Webbs Creek","river":"Hawkesbury River","station_id":"212408","thresholds":{"major":4.2,"minor":2.5,"moderate":3.5},"tidal":true,"total_models":27}],"summary":{"active_models":539,"avg_r2_168h":null,"avg_r2_1h":0.9873,"avg_r2_24h":0.6371,"avg_r2_6h":0.9147,"avg_r2_72h":0.4272,"station_count":8,"total_models":539}},{"display_name":"Daintree River Catchment","region":"Far North Queensland","slug":"daintree","stations":[{"active_models":28,"datum":"AHD","horizons":{"1":{"cv_r2":null,"mae":0.1269,"model":"XGBoost","r2":0.8448,"registered":"2026-06-16T11:06:10.475250","rmse":0.1636},"3":{"cv_r2":null,"mae":0.1725,"model":"XGBoost","r2":0.7241,"registered":"2026-06-16T11:06:10.511676","rmse":0.2181},"6":{"cv_r2":null,"mae":0.1858,"model":"LightGBM","r2":0.6587,"registered":"2026-07-22T07:25:55.753664","rmse":0.2413},"12":{"cv_r2":null,"mae":0.2005,"model":"XGBoost","r2":0.6077,"registered":"2026-06-16T11:06:10.535393","rmse":0.2605},"24":{"cv_r2":null,"mae":0.2602,"model":"XGBoost","r2":0.3402,"registered":"2026-06-16T11:06:10.496811","rmse":0.3388},"48":{"cv_r2":null,"mae":0.2894,"model":"MetaLearner","r2":0.0602,"registered":"2026-07-22T07:26:41.990582","rmse":0.3564},"72":{"cv_r2":null,"mae":0.297,"model":"LightGBM","r2":0.1499,"registered":"2026-07-22T07:26:55.692049","rmse":0.388}},"name":"Daintree Village","river":"Daintree River","station_id":"531110","thresholds":{"major":9.0,"minor":4.0,"moderate":6.0},"tidal":true,"total_models":28}],"summary":{"active_models":28,"avg_r2_168h":null,"avg_r2_1h":0.8448,"avg_r2_24h":0.3402,"avg_r2_6h":0.6587,"avg_r2_72h":0.1499,"station_count":1,"total_models":28}},{"display_name":"Lismore City Council Catchment","region":"Richmond","slug":"wilsons-river","stations":[{"active_models":47,"datum":"Local","horizons":{"1":{"cv_r2":null,"mae":0.0116,"model":"XGBoost","r2":0.9983,"registered":"2026-06-16T11:06:10.519144","rmse":0.0428},"3":{"cv_r2":null,"mae":0.0309,"model":"LightGBM","r2":0.9905,"registered":"2026-07-23T00:32:53.314718","rmse":0.1025},"6":{"cv_r2":null,"mae":0.077,"model":"XGBoost","r2":0.9577,"registered":"2026-07-23T00:33:41.365459","rmse":0.2161},"12":{"cv_r2":null,"mae":0.1793,"model":"XGBoost","r2":0.8005,"registered":"2026-07-23T00:35:20.640743","rmse":0.4693},"24":{"cv_r2":null,"mae":0.2961,"model":"MetaLearner","r2":0.5751,"registered":"2026-07-14T13:24:15.603492","rmse":0.7032},"48":{"cv_r2":null,"mae":0.4146,"model":"MetaLearner","r2":0.3456,"registered":"2026-07-23T00:38:42.982695","rmse":0.8729},"72":{"cv_r2":null,"mae":0.4749,"model":"MetaLearner","r2":0.2426,"registered":"2026-07-23T00:39:56.838553","rmse":0.9391}},"name":"Lismore (Wilsons River)","river":"Wilsons River","station_id":"203900","thresholds":{"major":7.91,"minor":3.04,"moderate":3.95},"tidal":false,"total_models":47},{"active_models":0,"datum":"Local","horizons":{},"name":"Casino","river":"Richmond River","station_id":"203010","thresholds":{"major":7.66,"minor":4.44,"moderate":5.77},"tidal":false,"total_models":0}],"summary":{"active_models":47,"avg_r2_168h":null,"avg_r2_1h":0.9983,"avg_r2_24h":0.5751,"avg_r2_6h":0.9577,"avg_r2_72h":0.2426,"station_count":2,"total_models":47}},{"display_name":"Brisbane River Catchment","region":"South East Queensland","slug":"brisbane-river","stations":[{"active_models":3,"datum":"AHD","horizons":{"72":{"cv_r2":null,"mae":0.409,"model":"MetaLearner","r2":0.2164,"registered":"2026-07-23T08:15:52.180796","rmse":0.5522}},"name":"Brisbane City Gauge","river":"Brisbane River","station_id":"540198","thresholds":{"major":3.5,"minor":1.7,"moderate":2.6},"tidal":false,"total_models":3}],"summary":{"active_models":3,"avg_r2_168h":null,"avg_r2_1h":null,"avg_r2_24h":null,"avg_r2_6h":null,"avg_r2_72h":0.2164,"station_count":1,"total_models":3}},{"display_name":"Lake Conjola Catchment","region":"South Coast NSW","slug":"lake-conjola","stations":[{"active_models":3,"datum":"AHD","horizons":{"6":{"cv_r2":null,"mae":0.0083,"model":"XGBoost","r2":0.995,"registered":"2026-04-12T05:33:42.346983","rmse":0.0119},"12":{"cv_r2":null,"mae":0.0138,"model":"XGBoost","r2":0.9865,"registered":"2026-04-12T05:34:03.014911","rmse":0.0196},"24":{"cv_r2":null,"mae":0.028,"model":"XGBoost","r2":0.9502,"registered":"2026-04-12T05:34:23.491504","rmse":0.0376}},"name":"Lake Conjola","river":"Lake Conjola","station_id":"216420","thresholds":{"major":2.0,"minor":1.2,"moderate":1.5},"tidal":true,"total_models":3}],"summary":{"active_models":3,"avg_r2_168h":null,"avg_r2_1h":null,"avg_r2_24h":0.9502,"avg_r2_6h":0.995,"avg_r2_72h":null,"station_count":1,"total_models":3}}],"generated_at":"2026-07-25T19:29:24.246785Z","methodology":{"confidence_bands":"Split conformal prediction (90% nominal coverage), regime-stratified per OPEN/CLOSED/FLOOD/TRANSITION/BASELINE. Band inflation from NWP ensemble spread (ECMWF IFS, GFS, ICON, UKMO) and ensemble member disagreement.","horizons_hours":[1,3,6,12,24,48,72,96,120,168],"metrics":["R\u00b2 (coefficient of determination, held-out test set)","CV R\u00b2 (cross-validated R\u00b2, 5-fold TimeSeriesSplit)","MAE (mean absolute error, metres)","RMSE (root mean square error, metres)"],"models":["XGBoost","LightGBM","RandomForest","GradientBoosting","Ridge"],"quality_gates":["Reject if R\u00b2 < 0 (worse than mean)","Reject if CV R\u00b2 < 0 (worse than persistence)","Minimum 100 training rows"],"training_data":"13+ years of hourly observations (2013-2026) for Hawkesbury-Nepean"}}
