Classify hardness
API · /hardness-api
Water Hardness API
Water-hardness maths as an API, computed locally and deterministically. The convert endpoint converts a hardness value between all the common units — parts per million / milligrams per litre as calcium carbonate, grains per US gallon, German degrees (°dH), French degrees (°f), English or Clark degrees, and millimoles per litre — passing everything through ppm (1 gpg = 17.118 ppm, 1 °dH = 17.848, 1 °f = 10, 1 °Clark = 14.254), and classifies the result. The classify endpoint labels a value as soft, moderately hard, hard or very hard on the USGS/WHO scale. The softener endpoint sizes a water softener: from the hardness and the household water use it works out the grains of hardness removed per day and the grain capacity needed between regenerations. Everything is computed locally and deterministically, so it is instant and private. Ideal for water-treatment and plumbing tools, aquarium and pool apps, appliance and softener sizing, and home and lab software. Pure local computation — no key, no third-party service, instant. Live, nothing stored. 3 endpoints. This is water-hardness conversion; for general unit conversion use a unit-conversion API and for swimming-pool dosing use a pool API.
API health
healthy- Uptime
- 100.00%
- Server probes · 24h
- Avg latency
- 86 ms
- Server probes · 24h
- Subscribers
- 3,880
- active
- Total calls
- 40
- last 7 days
Pricing
Pick a tier — billed monthly, cancel anytime.
Free
Free
- 12,135 calls / month
- 2 requests / second
- Hard cap (429 above quota, no overage)
- 12,135 calls/month
- 2 req/sec
- Convert + classify + softener
- No credit card
Starter
€13.65 /month
- 21,750 calls / month
- 8 requests / second
- Hard cap (429 above quota, no overage)
- 21.75k calls/month
- 8 req/sec
- ppm/gpg/°dH/°f/Clark/mmol
- Email support
Pro
€33.55 /month
- 267,500 calls / month
- 20 requests / second
- Hard cap (429 above quota, no overage)
- 267.5k calls/month
- 20 req/sec
- Water-treatment pipelines
- Priority support
Mega
€71.55 /month
- 1,380,000 calls / month
- 50 requests / second
- Hard cap (429 above quota, no overage)
- 1.38M calls/month
- 50 req/sec
- Platform scale
- Dedicated SLA
Built by
Related APIs
Other APIs with overlapping tags.
Rainwater Harvesting API
Rainwater-harvesting maths as an API, computed locally and deterministically. The harvest endpoint works out how much water a roof collects from a given rainfall — from the catchment (roof plan) area, the rainfall depth and a runoff coefficient it returns the harvested volume in litres, US and UK gallons and cubic metres, using the identity that 1 mm of rain over 1 m² collects 1 litre before losses. The runoff coefficient can be given directly or looked up from the roof type (smooth metal collects the most at ~0.9, green roofs the least at ~0.3). The demand endpoint sizes a storage tank from a daily demand (given directly or as people × litres per person) and the length of the dry spell you want to cover, and — if you also pass the annual rainfall and roof area — checks whether a year of harvest can meet a year of demand. The firstflush endpoint sizes a first-flush diverter, the volume of dirty initial rain to discard. Areas accept square metres or square feet (or length × width), rainfall accepts millimetres, centimetres or inches. Everything is computed locally and deterministically, so it is instant and private. Ideal for sustainability and off-grid apps, plumbing and landscaping tools, smart-home water systems, and construction planners. Pure local computation — no key, no third-party service, instant. Live, nothing stored. 4 endpoints. This is rainwater catchment maths; for roof pitch and area geometry use a roofing API and for general construction material quantities use a construction API.
api.oanor.com/rainwater-api
Swimming Pool Calculator API
Swimming-pool maths as an API, computed locally and deterministically. The volume endpoint computes the water volume of a rectangular, round or oval pool — in litres, US gallons and cubic metres — from the dimensions and either an average depth or separate shallow and deep depths (it averages them), in feet or metres. The dose endpoint computes how much of a chemical to add to raise a level by a target ppm: give the pool volume and the desired increase, and either the product strength percent or a preset (cal-hypo, dichlor, trichlor, liquid chlorine, bleach), and it returns the amount in grams, kilograms, ounces and pounds. The salt endpoint computes the salt needed to reach a target salinity in a saltwater pool from the current and target ppm, in kilograms and pounds (and 40 lb bags). Everything is computed locally and deterministically, so it is instant and private. Dosing depends on the actual product strength and your test readings — always follow the product label, add in stages and re-test before adding more. Ideal for pool-service and maintenance apps, pool-builder and retailer tools, and smart-pool and home-automation systems. Pure local computation — no key, no third-party service, instant. Live, nothing stored. 3 endpoints. This is pool maths; for general volume or unit conversion use a unit-conversion API.
api.oanor.com/pool-api
USGS Streamflow API
Live river and stream conditions from the USGS Water Services network. The catalogue of 16,900+ active US streamflow gauges is searchable by name, state or coordinate; the live endpoint returns the latest observation for any gauge: streamflow / discharge (in cubic feet per second and m³/s) and gauge height (in feet and metres), with the station name, observation time and coordinates. Find the gauges nearest any lat/lon. Ideal for flood monitoring, hydrology, whitewater/fishing & recreation apps, drought tracking and environmental dashboards.
api.oanor.com/streamflow-api
Septic System API
Septic-system sizing as an API, computed locally and deterministically with the typical US onsite-wastewater rules of thumb. The flow endpoint estimates the design wastewater flow for a home from its number of bedrooms (assuming two people per bedroom) or an explicit occupancy, at a default 60 gallons per person per day, returning the daily flow in US gallons and litres. The tank endpoint recommends a septic tank size as the larger of a retention-based size (flow × retention days, default two days) and the typical bedroom-based code minimum (≤3 bedrooms 1,000, 4 bedrooms 1,200, 5 bedrooms 1,500, 6 bedrooms 2,000 US gallons), and tells you which one governs. The drainfield endpoint sizes the soil absorption (leach) field: it divides the daily flow by a soil loading rate — given directly or looked up from a percolation rate in minutes per inch — to get the absorption area, then divides by the trench width to get the trench length, in both imperial and metric. Everything is computed locally and deterministically, so it is instant and private. An estimating aid, not a code-stamped design — always confirm with your local health authority. Ideal for plumbing and septic-installer tools, rural real-estate and land apps, home-building and permitting calculators, and inspection software. Pure local computation — no key, no third-party service, instant. Live, nothing stored. 3 endpoints. This is septic / onsite-wastewater sizing; for storage-tank volume and fill level use a tank API.
api.oanor.com/septic-api
Frequently asked questions
Quick answers about pricing, quotas, and integration.
How do I get an API key for Water Hardness API?
What's the rate limit for Water Hardness API?
How much does Water Hardness API cost?
Can I cancel my subscription anytime?
Is Water Hardness API GDPR-compliant?
Pick an endpoint from the list on the left to see its details and try it.
Code snippets
Sign up to get an API key, then call any path under your slug.
curl https://api.oanor.com/hardness-api/SOME_PATH \
-H "x-oanor-key: oanor_test_..."
const res = await fetch("https://api.oanor.com/hardness-api/SOME_PATH", {
headers: { "x-oanor-key": "oanor_test_..." }
});
const data = await res.json();
$ch = curl_init("https://api.oanor.com/hardness-api/SOME_PATH");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, ["x-oanor-key: oanor_test_..."]);
$response = curl_exec($ch);
import requests
r = requests.get(
"https://api.oanor.com/hardness-api/SOME_PATH",
headers={"x-oanor-key": "oanor_test_..."},
)
print(r.json())
Ratings
Sign in to rate.
No reviews yet.
Discussion
Ask questions, share usage tips, get answers from the provider and other developers. Public — anyone can read.
Sign in to start a thread or reply.
Sign inNew thread
·
-
Provider answer
🔒 This thread is locked — no new replies.
-
·
- No threads yet — start the discussion.
Support
Private 1:1 support with the provider — billing questions, integration issues, account problems. Only you and the provider team can see these threads.
Sign in to open a support ticket.
Sign inOpen new ticket
Describe what you need help with. The provider team gets an email and replies on the ticket page.
-
·
Urgent - No tickets yet for this API.