{"openapi":"3.1.0","info":{"title":"Health Calculator API","version":"1.0.0","description":"A complete health & fitness calculator suite in one API: Body Mass Index with category and healthy-weight range, Basal Metabolic Rate (Mifflin-St Jeor and Harris-Benedict), Total Daily Energy Expenditure with weight-loss/gain calorie targets, macronutrient splits (balanced, low-carb, high-protein, keto, endurance) with fibre, U.S. Navy body-fat percentage, ideal body weight across four classic formulas (Devine, Robinson, Miller, Hamwi), and daily water intake. Every endpoint accepts GET query parameters or a JSON POST body and works in both metric and imperial units. All computation is done locally with established public-domain equations, so responses are instant and the service is always available. Ideal for fitness trackers, nutrition apps, telehealth and wellness dashboards.","contact":{"name":"PremiumApi","url":"https://www.oanor.com/by/premiumapi"}},"servers":[{"url":"https://api.oanor.com/healthcalc-api","description":"oanor gateway"}],"tags":[{"name":"Health"}],"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/bmi":{"get":{"operationId":"get_v1_bmi","tags":["Health"],"summary":"Body Mass Index + category","description":"","parameters":[{"name":"weight","in":"query","required":true,"description":"Weight (kg, or lbs if imperial)","schema":{"type":"string"},"example":"80"},{"name":"height","in":"query","required":true,"description":"Height (cm, or inches if imperial)","schema":{"type":"string"},"example":"180"},{"name":"unit","in":"query","required":false,"description":"metric (default) or imperial","schema":{"type":"string"},"example":"metric"}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"bmi":24.7,"category":"Normal","height_cm":180,"weight_kg":80,"healthy_weight_range_kg":{"max":80.7,"min":59.9}},"meta":{"timestamp":"2026-05-30T14:35:19.394Z","request_id":"b3e5bb26-a20d-47b6-971f-d10c2eb0d1ef"},"status":"ok","message":"OK","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/bmr":{"get":{"operationId":"get_v1_bmr","tags":["Health"],"summary":"Basal Metabolic Rate","description":"","parameters":[{"name":"weight","in":"query","required":true,"description":"Weight","schema":{"type":"string"},"example":"80"},{"name":"height","in":"query","required":true,"description":"Height","schema":{"type":"string"},"example":"180"},{"name":"age","in":"query","required":true,"description":"Age in years","schema":{"type":"string"},"example":"30"},{"name":"gender","in":"query","required":true,"description":"male or female","schema":{"type":"string"},"example":"male"},{"name":"unit","in":"query","required":false,"description":"metric (default) or imperial","schema":{"type":"string"},"example":"metric"}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"bmr":1780,"unit":"kcal/day","inputs":{"age":30,"gender":"male","height_cm":180,"weight_kg":80},"formulas":{"harris_benedict":1854,"mifflin_st_jeor":1780}},"meta":{"timestamp":"2026-05-30T14:35:19.549Z","request_id":"47dc0e3a-c014-4610-9378-4c72de932ae0"},"status":"ok","message":"OK","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/body-fat":{"get":{"operationId":"get_v1_body_fat","tags":["Health"],"summary":"Body-fat % (U.S. Navy)","description":"","parameters":[{"name":"gender","in":"query","required":true,"description":"male or female","schema":{"type":"string"},"example":"male"},{"name":"height","in":"query","required":true,"description":"Height","schema":{"type":"string"},"example":"180"},{"name":"neck","in":"query","required":true,"description":"Neck circumference (cm/in)","schema":{"type":"string"},"example":"38"},{"name":"waist","in":"query","required":true,"description":"Waist circumference (cm/in)","schema":{"type":"string"},"example":"85"},{"name":"hip","in":"query","required":false,"description":"Hip circumference (required for female)","schema":{"type":"string"},"example":"95"},{"name":"unit","in":"query","required":false,"description":"metric (default) or imperial","schema":{"type":"string"},"example":"metric"}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"gender":"male","method":"U.S. Navy","category":"Fitness","body_fat_percent":16.1},"meta":{"timestamp":"2026-05-30T14:35:19.623Z","request_id":"922889b3-f7a2-4764-a480-2af3856b2e45"},"status":"ok","message":"OK","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/ideal-weight":{"get":{"operationId":"get_v1_ideal_weight","tags":["Health"],"summary":"Ideal body weight (4 formulas)","description":"","parameters":[{"name":"gender","in":"query","required":true,"description":"male or female","schema":{"type":"string"},"example":"male"},{"name":"height","in":"query","required":true,"description":"Height","schema":{"type":"string"},"example":"180"},{"name":"unit","in":"query","required":false,"description":"metric (default) or imperial","schema":{"type":"string"},"example":"metric"}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"gender":"male","height_cm":180,"ideal_weight_kg":{"hamwi":77.3,"devine":75,"miller":71.5,"robinson":72.6},"healthy_bmi_range_kg":{"max":80.7,"min":59.9}},"meta":{"timestamp":"2026-05-30T14:35:19.703Z","request_id":"e07fff32-0167-4c30-999d-e690de1310d6"},"status":"ok","message":"OK","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/macros":{"get":{"operationId":"get_v1_macros","tags":["Health"],"summary":"Macronutrient split","description":"","parameters":[{"name":"calories","in":"query","required":false,"description":"Target calories (else derived from TDEE inputs)","schema":{"type":"string"},"example":"2500"},{"name":"goal","in":"query","required":false,"description":"balanced|low_carb|high_protein|keto|endurance","schema":{"type":"string"},"example":"balanced"},{"name":"weight","in":"query","required":false,"description":"Weight (if no calories)","schema":{"type":"string"},"example":"80"},{"name":"height","in":"query","required":false,"description":"Height (if no calories)","schema":{"type":"string"},"example":"180"},{"name":"age","in":"query","required":false,"description":"Age (if no calories)","schema":{"type":"string"},"example":"30"},{"name":"gender","in":"query","required":false,"description":"Gender (if no calories)","schema":{"type":"string"},"example":"male"},{"name":"activity","in":"query","required":false,"description":"Activity (if no calories)","schema":{"type":"string"},"example":"moderate"},{"name":"unit","in":"query","required":false,"description":"metric (default) or imperial","schema":{"type":"string"},"example":"metric"}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"goal":"balanced","macros":{"fat_g":83,"carbs_g":250,"fiber_g":35,"protein_g":188},"calories":2500,"calories_from":{"fat":747,"carbs":1000,"protein":752},"split_percent":{"fat":30,"carbs":40,"protein":30}},"meta":{"timestamp":"2026-05-30T14:35:19.755Z","request_id":"56ed4514-6811-417c-830f-48791b49b2a7"},"status":"ok","message":"OK","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/tdee":{"get":{"operationId":"get_v1_tdee","tags":["Health"],"summary":"Total Daily Energy Expenditure + goals","description":"","parameters":[{"name":"weight","in":"query","required":true,"description":"Weight","schema":{"type":"string"},"example":"80"},{"name":"height","in":"query","required":true,"description":"Height","schema":{"type":"string"},"example":"180"},{"name":"age","in":"query","required":true,"description":"Age in years","schema":{"type":"string"},"example":"30"},{"name":"gender","in":"query","required":true,"description":"male or female","schema":{"type":"string"},"example":"male"},{"name":"activity","in":"query","required":false,"description":"sedentary|light|moderate|active|very_active","schema":{"type":"string"},"example":"moderate"},{"name":"unit","in":"query","required":false,"description":"metric (default) or imperial","schema":{"type":"string"},"example":"metric"}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"bmr":1780,"unit":"kcal/day","goals":{"weight_gain":3309,"weight_loss":2209,"mild_weight_gain":3034,"mild_weight_loss":2484,"extreme_weight_loss":1659},"activity_level":"moderate","activity_factor":1.55,"maintenance_calories":2759},"meta":{"timestamp":"2026-05-30T14:35:19.836Z","request_id":"fd1b0d63-8521-4e72-9209-602cad50ca53"},"status":"ok","message":"OK","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/water":{"get":{"operationId":"get_v1_water","tags":["Health"],"summary":"Daily water intake","description":"","parameters":[{"name":"weight","in":"query","required":true,"description":"Weight","schema":{"type":"string"},"example":"80"},{"name":"activity","in":"query","required":false,"description":"Activity level","schema":{"type":"string"},"example":"moderate"},{"name":"unit","in":"query","required":false,"description":"metric (default) or imperial","schema":{"type":"string"},"example":"metric"}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"water_ml":2975,"weight_kg":80,"water_liters":2.98,"activity_level":"moderate"},"meta":{"timestamp":"2026-05-30T14:35:19.908Z","request_id":"460250e0-dca6-49c6-9fcd-66309b9f4036"},"status":"ok","message":"OK","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":"basic","name":"Basic","price_cents_month":400,"monthly_call_quota":30000,"rps_limit":5,"hard_limit":true},{"slug":"pro","name":"Pro","price_cents_month":1200,"monthly_call_quota":250000,"rps_limit":15,"hard_limit":true},{"slug":"mega","name":"Mega","price_cents_month":3500,"monthly_call_quota":2000000,"rps_limit":40,"hard_limit":true}],"x-oanor-marketplace-url":"https://www.oanor.com/api/healthcalc-api"}