{"openapi":"3.1.0","info":{"title":"Aquaculture API","version":"1.0.0","description":"Fish-farming (aquaculture) maths as an API, computed locally and deterministically — the stocking, feed and oxygen numbers a fish farmer or RAS designer runs a system on. The stocking endpoint turns a tank or pond volume and a target biomass density into a fish count: biomass = density × volume, count = biomass ÷ average fish weight — a 10 m³ tank at 30 kg/m³ holds 300 kg, about 1,200 fish at 250 g each, and you stock to the harvest weight, not the fingerling weight, so the tank does not overload as they grow. The feed endpoint gives the daily ration as a percentage of body weight, and the feed to reach a target weight gain through the feed conversion ratio — 300 kg fed at 2 % is 6 kg a day, and growing 100 kg of fish at an FCR of 1.2 takes 120 kg of feed. The oxygen endpoint gives the dissolved-oxygen demand of a stock — biomass × the per-kg consumption rate — so 300 kg at 300 mg O₂/kg/hr needs 90 g of oxygen an hour, the number your aeration must beat. Everything is computed locally and deterministically, so it is instant and private. Ideal for aquaculture and RAS-design apps, fish-farm management tools, hatchery and feed calculators, and ag-tech sites. Pure local computation — no key, no third-party service, instant. Live, nothing stored. 3 compute endpoints. Commercial-planning estimates — species and system vary. For a home aquarium use an aquarium API.","contact":{"name":"PremiumApi","url":"https://www.oanor.com/by/premiumapi"}},"servers":[{"url":"https://api.oanor.com/aquaculture-api","description":"oanor gateway"}],"tags":[{"name":"Aquaculture"},{"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/feed":{"get":{"operationId":"get_v1_feed","tags":["Aquaculture"],"summary":"Daily ration and feed for gain","description":"","parameters":[{"name":"biomass_kg","in":"query","required":true,"description":"Total biomass in kg","schema":{"type":"string"},"example":"300"},{"name":"feed_rate_pct","in":"query","required":false,"description":"Feeding rate % body weight/day (default 2)","schema":{"type":"string"},"example":"2"},{"name":"target_gain_kg","in":"query","required":false,"description":"Target weight gain in kg","schema":{"type":"string"},"example":"100"},{"name":"fcr","in":"query","required":false,"description":"Feed conversion ratio (default 1.2)","schema":{"type":"string"},"example":"1.2"}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"fcr":1.2,"note":"Daily ration = biomass × the feeding rate (% of body weight/day) — smaller, warmer fish eat a higher percentage, large fish less. To reach a target gain, feed = gain × FCR (feed conversion ratio): a good pellet diet runs an FCR around 1.0–1.5, so it takes ~1.2 kg of feed per kg of fish grown. Overfeeding wastes money and fouls the water.","inputs":{"biomass_kg":300,"feed_rate_pct":2},"daily_feed_kg":6,"feed_for_gain_kg":120},"meta":{"timestamp":"2026-06-06T15:30:42.653Z","request_id":"60d5130a-9ddf-442f-82a4-1058724088f4"},"status":"ok","message":"Feed","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/oxygen":{"get":{"operationId":"get_v1_oxygen","tags":["Aquaculture"],"summary":"Dissolved-oxygen demand","description":"","parameters":[{"name":"biomass_kg","in":"query","required":true,"description":"Total biomass in kg","schema":{"type":"string"},"example":"300"},{"name":"consumption_mg_kg_hr","in":"query","required":false,"description":"O₂ use mg/kg/hr (default 300)","schema":{"type":"string"},"example":"300"}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"note":"Oxygen demand = biomass × the per-kg consumption rate, which rises with temperature, feeding and stress (≈200–500 mg O₂ per kg per hour for many farmed fish). Your aeration or oxygenation must meet this plus a margin, and keep dissolved oxygen above ~5–6 mg/L — oxygen, not space, is usually what caps stocking density.","inputs":{"biomass_kg":300,"consumption_mg_kg_hr":300},"o2_demand_g_hr":90,"o2_demand_g_day":2160,"o2_demand_mg_hr":90000},"meta":{"timestamp":"2026-06-06T15:30:42.740Z","request_id":"4fb2f8a0-c8f0-46ef-bbfb-3ef060ab4442"},"status":"ok","message":"Oxygen demand","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/stocking":{"get":{"operationId":"get_v1_stocking","tags":["Aquaculture"],"summary":"Fish count from biomass density","description":"","parameters":[{"name":"volume_m3","in":"query","required":true,"description":"System volume in m³","schema":{"type":"string"},"example":"10"},{"name":"density_kg_m3","in":"query","required":false,"description":"Target biomass density kg/m³ (default 30)","schema":{"type":"string"},"example":"30"},{"name":"avg_weight_g","in":"query","required":true,"description":"Average fish weight in grams","schema":{"type":"string"},"example":"250"}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"note":"Stock count = target biomass ÷ average fish weight, where biomass = density × volume. Safe density depends on species and system — flow-through and pond systems run lighter, a well-oxygenated RAS far heavier (trout 40–80 kg/m³). Stock to the HARVEST weight, not the fingerling weight, or the tank overloads as they grow.","inputs":{"volume_m3":10,"avg_weight_g":250,"density_kg_m3":30},"fish_count":1200,"max_biomass_kg":300},"meta":{"timestamp":"2026-06-06T15:30:42.827Z","request_id":"1f509ebf-6dc2-4894-89f2-2039b8ceb2c3"},"status":"ok","message":"Stocking","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":"SI units (m³, kg, g). biomass = density × volume; ration = biomass × rate%; feed-for-gain = gain × FCR; O₂ demand = biomass × mg/kg/hr. Commercial/RAS planning estimates — species and system vary. For a home aquarium use an aquarium API.","service":"aquaculture-api","endpoints":{"GET /v1/feed":"Daily ration by body weight, and feed for a target gain via FCR.","GET /v1/meta":"This document.","GET /v1/oxygen":"Dissolved-oxygen demand of a stock (mg/hr, g/hr, g/day).","GET /v1/stocking":"Fish count a volume holds at a target biomass density."},"description":"Aquaculture (fish-farming) maths: stocking from biomass density, daily feed by body weight and FCR, and the dissolved-oxygen demand of a stock."},"meta":{"timestamp":"2026-06-06T15:30:42.919Z","request_id":"3dd4f007-29ac-4ee5-a64e-365901669d5a"},"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":300,"rps_limit":2,"hard_limit":true},{"slug":"starter","name":"Starter","price_cents_month":615,"monthly_call_quota":8000,"rps_limit":5,"hard_limit":true},{"slug":"pro","name":"Pro","price_cents_month":1880,"monthly_call_quota":52000,"rps_limit":13,"hard_limit":true},{"slug":"mega","name":"Mega","price_cents_month":5520,"monthly_call_quota":180000,"rps_limit":32,"hard_limit":true}],"x-oanor-marketplace-url":"https://www.oanor.com/api/aquaculture-api"}