Takes one or more district metered areas, each with a flow series and optionally a pressur
Takes one or more district metered areas, each with a flow series and optionally a pressure series, a metered consumption figure and a service connection count, and returns three independent leak indicators per area plus a ranking across all of them. The first is minimum night flow: the lowest flow inside the night window is taken for every night in the record, the median of those nightly minima is reported, and where a connection count is given the legitimate night consumption is subtracted so…
5000 (raw units)
price
1
calls / 30d
1
unique payers
2026-08-20
updated
Provider
natur.halowerk.com · discovered, not yet claimed by its owner
Payment (x402 accepts[])
[
{
"scheme": "exact",
"network": "eip155:8453",
"payTo": "0x2880EdfFF13100677Bf97A3CBdF3Bc34771C4E5E",
"asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
"amount": "5000",
"maxTimeoutSeconds": 300
}
]Output schema
{
"bazaar": {
"info": {
"input": {
"body": {
"min_nights": 3,
"utc_offset_minutes": 0,
"zones": [
{
"flow_series": [
{
"flow_m3_h": 19.9,
"timestamp": "2026-08-15T02:00:00Z"
},
{
"flow_m3_h": 72.5,
"timestamp": "2026-08-15T06:00:00Z"
},
{
"flow_m3_h": 96,
"timestamp": "2026-08-15T10:00:00Z"
},
{
"flow_m3_h": 85,
"timestamp": "2026-08-15T14:00:00Z"
},
{
"flow_m3_h": 97.5,
"timestamp": "2026-08-15T18:00:00Z"
},
{
"flow_m3_h": 53,
"timestamp": "2026-08-15T22:00:00Z"
},
{
"flow_m3_h": 20.4,
"timestamp": "2026-08-16T02:00:00Z"
},
{
"flow_m3_h": 74,
"timestamp": "2026-08-16T06:00:00Z"
},
{
"flow_m3_h": 95.2,
"timestamp": "2026-08-16T10:00:00Z"
},
{
"flow_m3_h": 86.4,
"timestamp": "2026-08-16T14:00:00Z"
},
{
"flow_m3_h": 99,
"timestamp": "2026-08-16T18:00:00Z"
},
{
"flow_m3_h": 55.5,
"timestamp": "2026-08-16T22:00:00Z"
},
{
"flow_m3_h": 21,
"timestamp": "2026-08-17T02:00:00Z"
}
],
"metered_consumption_m3": 2920,
"pressure_series": [
{
"pressure_bar": 4.62,
"timestamp": "2026-08-15T02:00:00Z"
},
{
"pressure_bar": 4.48,
"timestamp": "2026-08-16T02:00:00Z"
},
{
"pressure_bar": 4.31,
"timestamp": "2026-08-17T02:00:00Z"
}
],
"service_connections": 5600,
"zone_id": "DMA-North"
}
]
},
"bodyType": "json",
"method": "POST",
"type": "http"
}
},
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"input": {
"additionalProperties": false,
"properties": {
"body": {
"additionalProperties": false,
"properties": {
"min_nights": {
"default": 2,
"description": "Nights with a night-window sample required before a zone is scored. Below three, no trend.",
"maximum": 30,
"minimum": 1,
"type": "integer"
},
"night_use_l_per_connection_h": {
"default": 1.7,
"description": "Assumed legitimate night use per connection. The default is a planning value, not your network.",
"maximum": 50,
"minimum": 0,
"type": "number"
},
"night_window_end_hour": {
"default": 4,
"description": "Local time, exclusive.",
"maximum": 24,
"minimum": 0,
"type": "number"
},
"night_window_start_hour": {
"default": 2,
"description": "Local time. A window wrapping past midnight is allowed.",
"maximum": 24,
"minimum": 0,
"type": "number"
},
"utc_offset_minutes": {
"default": 0,
"description": "Fixed offset used to place the night window. No daylight saving rule is applied.",
"maximum": 840,
"minimum": -840,
"type": "integer"
},
"zones": {
"description": "The areas to assess. Unknown field names inside a zone are named back to you, never ignored.",
"items": {
"properties": {
"flow_series": {
"description": "Inlet flow. Needs a sample inside the night window on at least min_nights nights.",
"items": {
"properties": {
"flow_m3_h": {
"maximum": 100000,
"minimum": 0,
"type": "number"
},
"timestamp": {
"description": "ISO 8601 with an explicit time zone.",
"type": "string"
}
},
"required": [
"timestamp",
"flow_m3_h"
],
"type": "object"
},
"maxItems": 4032,
"minItems": 4,
"type": "array"
},
"metered_consumption_m3": {
"description": "Optional. Must cover exactly the window spanned by flow_series. Without it there is no volume balance.",
"maximum": 10000000,
"minimum": 0,
"type": "number"
},
"night_use_l_per_connection_h": {
"description": "Optional per-zone override of the assumed legitimate night use.",
"maximum": 50,
"minimum": 0,
"type": "number"
},
"pressure_series": {
"description": "Optional. Used for the night pressure trend only.",
"items": {
"properties": {
"pressure_bar": {
"maximum": 25,
"minimum": 0,
"type": "number"
},
"timestamp": {
"type": "string"
}
},
"required": [
"timestamp",
"pressure_bar"
],
"type": "object"
},
"maxItems": 4032,
"minItems": 3,
"type": "array"
},
"service_connections": {
"description": "Optional. Without it the legitimate share of the night flow cannot be separated out.",
"maximum": 1000000,
"minimum": 1,
"type": "integer"
},
"zone_id": {
"description": "Your own identifier. Returned unchanged; also the tie-break in the ranking.",
"maxLength": 40,
"minLength": 1,
"type": "string"
}
},
"required": [
"zone_id",
"flow_series"
],
"type": "object"
},
"maxItems": 40,
"minItems": 1,
"type": "array"
}
},
"required": [
"zones"
],
"type": "object"
},
"bodyType": {
"enum": [
"json",
"form-data",
"text"
],
"type": "string"
},
"method": {
"enum": [
"POST",
"PUT",
"PATCH"
],
"type": "string"
},
"type": {
"const": "http",
"type": "string"
}
},
"required": [
"type",
"method",
"bodyType",
"body"
],
"type": "object"
}
},
"required": [
"input"
],
"type": "object"
}
}
}Use it
curl
curl "https://natur.halowerk.com/v1/leak-indicator" # -> 402 Payment Required, accepts[] lists how to pay # retry with a PAYMENT-SIGNATURE (or PAYMENT header) once paid
JavaScript
const res = await fetch("https://natur.halowerk.com/v1/leak-indicator");
if (res.status === 402) {
const { accepts } = await res.json();
// pay one of accepts[] via an x402 client, then retry with the payment header
}Python
import httpx
res = httpx.get("https://natur.halowerk.com/v1/leak-indicator")
if res.status_code == 402:
accepts = res.json()["accepts"]
# pay one of accepts[] via an x402 client, then retry with the payment headerMachine-readable
Everything on this page is also available as clean JSON at /resources/15304.json, and this resource appears in /discovery/resources and /discovery/search.