{"openapi":"3.1.0","info":{"title":"Irrigation Design API","version":"1.0.0","description":"Irrigation-design maths as an API, computed locally and deterministically — the sprinkler numbers a landscaper, irrigation tech or gardener sizes a system with. The precip-rate endpoint gives the precipitation rate in inches per hour from the flow and spacing: PR = 96.25 × GPM per head ÷ the area each head waters (head spacing × row spacing in feet), where 96.25 is the in/hr one gallon-per-minute makes over a square foot — three-GPM heads on a 15 × 15 ft grid lay down about 1.28 in/hr. The runtime endpoint turns a target water depth into a run-time: depth ÷ precipitation rate, divided by the system efficiency because no system is perfectly even, so applying a half-inch at 1.28 in/hr takes about 23 minutes at full efficiency, longer with real-world uniformity. The zone endpoint sizes a valve zone: maximum heads = available flow ÷ each head's GPM, rounded down so you never starve the line — 13 GPM drives five 2.6-GPM heads with nothing to spare. Everything is computed locally and deterministically, so it is instant and private. Ideal for irrigation and landscaping apps, sprinkler-design and contractor tools, smart-controller schedulers, and garden-planning sites. Pure local computation — no key, no third-party service, instant. Live, nothing stored. 3 compute endpoints. For evapotranspiration or weather use a weather API; for material volume use a mulch API.","contact":{"name":"PremiumApi","url":"https://www.oanor.com/by/premiumapi"}},"servers":[{"url":"https://api.oanor.com/irrigation-api","description":"oanor gateway"}],"tags":[{"name":"Irrigation"},{"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/precip-rate":{"get":{"operationId":"get_v1_precip_rate","tags":["Irrigation"],"summary":"Sprinkler precipitation rate","description":"","parameters":[{"name":"gpm_per_head","in":"query","required":true,"description":"Flow per head in GPM","schema":{"type":"string"},"example":"3"},{"name":"head_spacing_ft","in":"query","required":true,"description":"Head spacing in feet","schema":{"type":"string"},"example":"15"},{"name":"row_spacing_ft","in":"query","required":false,"description":"Row spacing in feet (default = head spacing)","schema":{"type":"string"},"example":"15"}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"note":"Precipitation rate = 96.25 × GPM per head ÷ the area each head waters (head spacing × row spacing in feet). 96.25 is the in/hr that one gallon-per-minute makes over a square foot. Match precipitation rates within a zone — mixing rates means some areas drown while others go dry.","inputs":{"gpm_per_head":3,"row_spacing_ft":15,"head_spacing_ft":15},"precip_rate_in_hr":1.283,"area_per_head_sqft":225},"meta":{"timestamp":"2026-06-06T15:30:44.136Z","request_id":"7b9c4f96-5e0c-4f27-8208-ff0336eed490"},"status":"ok","message":"Precipitation rate","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/runtime":{"get":{"operationId":"get_v1_runtime","tags":["Irrigation"],"summary":"Run-time to apply a depth","description":"","parameters":[{"name":"water_depth_in","in":"query","required":true,"description":"Target water depth in inches","schema":{"type":"string"},"example":"0.5"},{"name":"precip_rate_in_hr","in":"query","required":true,"description":"Precipitation rate in in/hr","schema":{"type":"string"},"example":"1.28"},{"name":"efficiency_pct","in":"query","required":false,"description":"System efficiency % (default 75)","schema":{"type":"string"},"example":"75"}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"note":"Run-time = depth to apply ÷ precipitation rate, then divided by the system efficiency (distribution uniformity) because no system is perfectly even — 75 % is typical for spray, higher for drip. Split long run-times into cycles (cycle-and-soak) on slopes or clay so water soaks in instead of running off.","inputs":{"efficiency_pct":75,"water_depth_in":0.5,"precip_rate_in_hr":1.28},"base_minutes":23.4,"adjusted_minutes":31.3},"meta":{"timestamp":"2026-06-06T15:30:44.220Z","request_id":"5bede589-9705-4e61-b69c-949ac57532b3"},"status":"ok","message":"Run-time","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/zone":{"get":{"operationId":"get_v1_zone","tags":["Irrigation"],"summary":"Maximum heads per zone","description":"","parameters":[{"name":"available_gpm","in":"query","required":true,"description":"Available flow in GPM","schema":{"type":"string"},"example":"13"},{"name":"gpm_per_head","in":"query","required":true,"description":"Flow per head in GPM","schema":{"type":"string"},"example":"2.6"}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"note":"Max heads per zone = available flow ÷ each head's GPM, rounded down — never exceed the supply or every head loses pressure and throw. Find available GPM from your service pipe size and pressure, and leave a margin. For drip, total emitter GPH must likewise stay under the zone's capacity.","inputs":{"gpm_per_head":2.6,"available_gpm":13},"used_gpm":13,"max_heads":5,"spare_gpm":0},"meta":{"timestamp":"2026-06-06T15:30:44.307Z","request_id":"572b3c5f-9f74-4cf3-9b4f-e3779ce91279"},"status":"ok","message":"Zone heads","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":"US units (GPM, feet, inches). PR = 96.25 × GPM ÷ area; run-time = depth ÷ PR ÷ efficiency; max heads = available GPM ÷ per-head GPM. Estimates — verify pressure and uniformity on site.","service":"irrigation-api","endpoints":{"GET /v1/meta":"This document.","GET /v1/zone":"Maximum sprinkler heads a zone's available flow can drive.","GET /v1/runtime":"Run-time (minutes) to apply a water depth at a precipitation rate.","GET /v1/precip-rate":"Precipitation rate (in/hr) from GPM per head and head/row spacing."},"description":"Irrigation-design maths: sprinkler precipitation rate, run-time to apply a depth, and the maximum heads a zone's flow can drive."},"meta":{"timestamp":"2026-06-06T15:30:44.402Z","request_id":"fe4d28c2-7fd5-4c71-bfef-412363a333da"},"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":500,"rps_limit":2,"hard_limit":true},{"slug":"starter","name":"Starter","price_cents_month":535,"monthly_call_quota":13500,"rps_limit":6,"hard_limit":true},{"slug":"pro","name":"Pro","price_cents_month":1700,"monthly_call_quota":85000,"rps_limit":15,"hard_limit":true},{"slug":"mega","name":"Mega","price_cents_month":5060,"monthly_call_quota":275000,"rps_limit":36,"hard_limit":true}],"x-oanor-marketplace-url":"https://www.oanor.com/api/irrigation-api"}