{"openapi":"3.1.0","info":{"title":"Stormwater Runoff API","version":"1.0.0","description":"Stormwater-runoff civil-engineering maths as an API, computed locally and deterministically. The rational endpoint computes the peak runoff from a catchment with the Rational Method, Q = C·i·A — in metric form Q(m³/s) = C·i·A/360 with rainfall intensity i in mm/h and area A in hectares, or in US form Q(cfs) = C·i·A with intensity in in/h and area in acres — where the runoff coefficient C is the fraction of rain that runs off (about 0.9 for paving and 0.2 for lawns). The time-of-concentration endpoint computes how long water takes to flow from the most remote point of the catchment to the outlet with the Kirpich formula, tc = 0.0195·L^0.77·S^(−0.385) minutes, from the flow-path length and slope; this sets the design-storm duration. The detention endpoint gives a first-order estimate of the detention-pond storage needed to throttle a peak inflow down to an allowable outflow over a storm duration, (Q_in − Q_out)·duration. Coefficients are dimensionless, intensities in mm/h or in/h, areas in ha or acres, lengths in m and flows in m³/s. Everything is computed locally and deterministically, so it is instant and private. Ideal for civil-engineering, drainage, urban-planning, landscape and flood-risk app developers, sewer-sizing and detention tools, and hydrology education. Pure local computation — no key, no third-party service, instant. Live, nothing stored. 3 endpoints. This is stormwater runoff; for open-channel flow use a Manning API and for pipe friction a Darcy API.","contact":{"name":"PremiumApi","url":"https://www.oanor.com/by/premiumapi"}},"servers":[{"url":"https://api.oanor.com/runoff-api","description":"oanor gateway"}],"tags":[{"name":"Runoff"},{"name":"Meta"}],"components":{"securitySchemes":{"oanorKey":{"type":"apiKey","in":"header","name":"x-oanor-key","description":"Get your key at https://www.oanor.com/developer/keys"}}},"security":[{"oanorKey":[]}],"paths":{"/v1/detention":{"get":{"operationId":"get_v1_detention","tags":["Runoff"],"summary":"Detention storage","description":"","parameters":[{"name":"inflow_peak","in":"query","required":true,"description":"Peak inflow (m³/s)","schema":{"type":"string"},"example":"0.5"},{"name":"allowable_outflow","in":"query","required":true,"description":"Allowable outflow (m³/s)","schema":{"type":"string"},"example":"0.2"},{"name":"duration","in":"query","required":true,"description":"Storm duration (min)","schema":{"type":"string"},"example":"30"}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"note":"First-order detention storage = (Q_in − Q_out) × duration, treating the excess as a constant rate over the storm. Use a routed hydrograph for design; this is a quick upper-bound estimate.","inputs":{"duration_min":30,"inflow_peak_m3s":0.5,"allowable_outflow_m3s":0.2},"required_storage_m3":540,"required_storage_liters":540000},"meta":{"timestamp":"2026-06-05T11:30:26.137Z","request_id":"29362af1-0a48-467c-a6d3-2e41ba644439"},"status":"ok","message":"Detention storage","success":true}}}},"401":{"description":"Missing or invalid x-oanor-key header"},"402":{"description":"Active subscription required"},"429":{"description":"Rate-limit or monthly quota reached"},"502":{"description":"Upstream did not respond"}}}},"/v1/rational":{"get":{"operationId":"get_v1_rational","tags":["Runoff"],"summary":"Rational method","description":"","parameters":[{"name":"runoff_coefficient","in":"query","required":true,"description":"Runoff coefficient C (0–1)","schema":{"type":"string"},"example":"0.5"},{"name":"intensity","in":"query","required":true,"description":"Rainfall intensity (mm/h or in/h)","schema":{"type":"string"},"example":"50"},{"name":"area","in":"query","required":true,"description":"Catchment area (ha or acres)","schema":{"type":"string"},"example":"2"},{"name":"units","in":"query","required":false,"description":"metric or us","schema":{"type":"string"},"example":"metric"}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"note":"Metric Rational Method: Q(m³/s) = C·i·A / 360, with rainfall intensity i in mm/h and catchment area A in hectares. C is the impervious-fraction runoff coefficient.","inputs":{"units":"metric","area_ha":2,"intensity_mm_h":50,"runoff_coefficient":0.5},"peak_flow_l_s":138.88889,"peak_flow_m3s":0.13888889},"meta":{"timestamp":"2026-06-05T11:30:26.261Z","request_id":"32fca715-a80d-46a3-9b43-c5f39be5b464"},"status":"ok","message":"Rational method","success":true}}}},"401":{"description":"Missing or invalid x-oanor-key header"},"402":{"description":"Active subscription required"},"429":{"description":"Rate-limit or monthly quota reached"},"502":{"description":"Upstream did not respond"}}}},"/v1/time-of-concentration":{"get":{"operationId":"get_v1_time_of_concentration","tags":["Runoff"],"summary":"Time of concentration","description":"","parameters":[{"name":"length","in":"query","required":true,"description":"Flow-path length (m)","schema":{"type":"string"},"example":"300"},{"name":"slope","in":"query","required":true,"description":"Slope (m/m)","schema":{"type":"string"},"example":"0.02"}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"note":"Kirpich (1940): tc = 0.0195·L^0.77·S^(−0.385) minutes (L in m, S the channel slope). The time of concentration sets the design-storm duration in the Rational Method.","inputs":{"slope":0.02,"length_m":300},"time_of_concentration_s":426.26,"time_of_concentration_min":7.1043},"meta":{"timestamp":"2026-06-05T11:30:26.347Z","request_id":"7cc0bee9-b352-4c15-b194-cf3b47319949"},"status":"ok","message":"Time of concentration","success":true}}}},"401":{"description":"Missing or invalid x-oanor-key header"},"402":{"description":"Active subscription required"},"429":{"description":"Rate-limit or monthly quota reached"},"502":{"description":"Upstream did not respond"}}}},"/v1/meta":{"get":{"operationId":"get_v1_meta","tags":["Meta"],"summary":"Spec","description":"","parameters":[],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"notes":"Runoff coefficient C is 0–1 (0.9 paved, 0.2 lawns). units: metric (mm/h, ha) or us (in/h, acres). Slope is m/m, length m, flows m³/s.","service":"runoff-api","formulae":{"kirpich":"tc(min) = 0.0195·L^0.77·S^(−0.385)","rational_us":"Q(cfs) = C·i·A (i in/h, A acres)","rational_metric":"Q(m³/s) = C·i·A/360 (i mm/h, A ha)"},"endpoints":{"GET /v1/meta":"This document.","GET /v1/rational":"Peak runoff Q = C·i·A (metric or US units).","GET /v1/detention":"Required detention storage from inflow peak, allowable outflow and duration.","GET /v1/time-of-concentration":"Kirpich time of concentration from flow-path length and slope."},"description":"Stormwater-runoff calculator: peak runoff by the Rational Method, the time of concentration (Kirpich) and a first-order detention-storage estimate."},"meta":{"timestamp":"2026-06-05T11:30:26.447Z","request_id":"e01ccc92-afa7-4748-9296-9b5dabab140a"},"status":"ok","message":"Meta","success":true}}}},"401":{"description":"Missing or invalid x-oanor-key header"},"402":{"description":"Active subscription required"},"429":{"description":"Rate-limit or monthly quota reached"},"502":{"description":"Upstream did not respond"}}}}},"x-oanor-pricing":[{"slug":"free","name":"Free","price_cents_month":0,"monthly_call_quota":2480,"rps_limit":2,"hard_limit":true},{"slug":"starter","name":"Starter","price_cents_month":900,"monthly_call_quota":38000,"rps_limit":6,"hard_limit":true},{"slug":"pro","name":"Pro","price_cents_month":2400,"monthly_call_quota":244000,"rps_limit":15,"hard_limit":true},{"slug":"mega","name":"Mega","price_cents_month":7300,"monthly_call_quota":1650000,"rps_limit":40,"hard_limit":true}],"x-oanor-marketplace-url":"https://www.oanor.com/api/runoff-api"}