{"openapi":"3.1.0","info":{"title":"Aquarium Calculator API","version":"1.0.0","description":"Aquarium maths as an API, computed locally and deterministically. The volume endpoint computes a tank's water volume — in US and UK gallons and litres — for a rectangular, cube, cylinder, hexagonal or bow-front tank from its dimensions (inches by default, or centimetres, millimetres and metres), and applies a fill factor (default 0.9) for substrate, decoration and freeboard to give a realistic net volume. The stocking endpoint gives a rough stocking load from the tank volume and the total length of fish using the classic inch-per-gallon guideline, reporting the maximum recommended inches and how heavily stocked the tank is. The waterchange endpoint computes the water-change volume for a percentage, with an optional dechlorinator dose. Everything is computed locally and deterministically, so it is instant and private. Stocking is a rough beginner guideline only — real stocking depends on the species, filtration and bioload. Ideal for aquarium and fishkeeping apps, pet-shop and hobbyist tools, and tank-setup planners. Pure local computation — no key, no third-party service, instant. Live, nothing stored. 3 endpoints. This is aquarium maths; for swimming-pool volume and chemical dosing use a pool API and for storage-tank gauging use a tank API.","contact":{"name":"PremiumApi","url":"https://www.oanor.com/by/premiumapi"}},"servers":[{"url":"https://api.oanor.com/aquarium-api","description":"oanor gateway"}],"tags":[{"name":"Aquarium"},{"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/stocking":{"get":{"operationId":"get_v1_stocking","tags":["Aquarium"],"summary":"Stocking estimate","description":"","parameters":[{"name":"us_gallons","in":"query","required":false,"description":"Tank US gallons","schema":{"type":"string"},"example":"20"},{"name":"litres","in":"query","required":false,"description":"Or litres","schema":{"type":"string"}},{"name":"fish_inches","in":"query","required":true,"description":"Total fish length (in)","schema":{"type":"string"},"example":"15"},{"name":"inches_per_gallon","in":"query","required":false,"description":"Rule (default 1)","schema":{"type":"string"},"example":"1"}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"note":"Inch-per-gallon is a rough beginner guideline (use adult length, excluding the tail). Heavily bioloaded or large fish need much more.","input":{"us_gallons":20,"fish_inches":15,"inches_per_gallon":1},"status":"understocked","load_percent":75,"max_fish_inches":20,"current_fish_inches":15},"meta":{"timestamp":"2026-06-04T01:59:12.770Z","request_id":"03305938-3b64-4c6a-9194-8decfcf6cbca"},"status":"ok","message":"Stocking estimate","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/volume":{"get":{"operationId":"get_v1_volume","tags":["Aquarium"],"summary":"Tank water volume","description":"","parameters":[{"name":"shape","in":"query","required":true,"description":"rectangular|cube|cylinder|hexagonal|bowfront","schema":{"type":"string"},"example":"rectangular"},{"name":"length","in":"query","required":false,"description":"Length","schema":{"type":"string"},"example":"24"},{"name":"width","in":"query","required":false,"description":"Width","schema":{"type":"string"},"example":"12"},{"name":"height","in":"query","required":false,"description":"Height","schema":{"type":"string"},"example":"16"},{"name":"diameter","in":"query","required":false,"description":"Diameter (cylinder)","schema":{"type":"string"}},{"name":"side","in":"query","required":false,"description":"Side (cube/hexagonal)","schema":{"type":"string"}},{"name":"unit","in":"query","required":false,"description":"in|cm|mm|m (default in)","schema":{"type":"string"},"example":"in"},{"name":"fill_factor","in":"query","required":false,"description":"Net factor (default 0.9)","schema":{"type":"string"},"example":"0.9"}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"net":{"litres":67.96,"uk_gallons":14.949,"us_gallons":17.953,"cubic_inches":4147.2},"note":"Net volume applies a fill factor (default 0.9) for substrate, decor and freeboard. Gross is the full geometric volume.","gross":{"litres":75.51,"uk_gallons":16.61,"us_gallons":19.948,"cubic_inches":4608},"input":{"unit":"in","shape":"rectangular","width":12,"height":16,"length":24,"fill_factor":0.9}},"meta":{"timestamp":"2026-06-04T01:59:12.861Z","request_id":"9d68ada2-04e5-45c0-8e15-f3a3b44fac64"},"status":"ok","message":"Tank volume","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/waterchange":{"get":{"operationId":"get_v1_waterchange","tags":["Aquarium"],"summary":"Water change volume","description":"","parameters":[{"name":"us_gallons","in":"query","required":false,"description":"Tank US gallons","schema":{"type":"string"},"example":"20"},{"name":"litres","in":"query","required":false,"description":"Or litres","schema":{"type":"string"}},{"name":"percent","in":"query","required":false,"description":"Change % (default 25)","schema":{"type":"string"},"example":"25"},{"name":"dechlorinator_ml_per_gallon","in":"query","required":false,"description":"Conditioner dose","schema":{"type":"string"}}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"note":"Change volume = tank volume × percent. Treat the new water with conditioner before adding.","input":{"percent":25,"us_gallons":20},"change_litres":18.93,"change_us_gallons":5,"remaining_us_gallons":15},"meta":{"timestamp":"2026-06-04T01:59:12.950Z","request_id":"410ea21f-0e6f-4e93-a93f-39af3f803e20"},"status":"ok","message":"Water change volume","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":{"note":"Dimensions in inches by default (accepts cm/mm/m). Stocking is a rough guideline only.","shapes":["rectangular","cube","cylinder","hexagonal","bowfront"],"service":"aquarium","endpoints":{"/v1/volume":"Water volume (US/UK gallons, litres) for a rectangular, cube, cylinder, hexagonal or bow-front tank.","/v1/stocking":"Stocking load from tank volume and total fish inches (inch-per-gallon guideline).","/v1/waterchange":"Water-change volume for a percentage, with optional dechlorinator dose."},"description":"Aquarium maths: tank water volume by shape, a stocking estimate (inch-per-gallon) and water-change volume."},"meta":{"timestamp":"2026-06-04T01:59:13.041Z","request_id":"a4c37b41-b82b-47ee-9001-f412186a2d47"},"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":12635,"rps_limit":2,"hard_limit":true},{"slug":"starter","name":"Starter","price_cents_month":1415,"monthly_call_quota":22250,"rps_limit":8,"hard_limit":true},{"slug":"pro","name":"Pro","price_cents_month":3405,"monthly_call_quota":272500,"rps_limit":20,"hard_limit":true},{"slug":"mega","name":"Mega","price_cents_month":7205,"monthly_call_quota":1405000,"rps_limit":50,"hard_limit":true}],"x-oanor-marketplace-url":"https://www.oanor.com/api/aquarium-api"}