{"openapi":"3.1.0","info":{"title":"Homebrewing API","version":"1.0.0","description":"Homebrewing maths as an API, computed locally and deterministically. The abv endpoint computes the alcohol by volume from the original and final gravity — both the simple (OG − FG)·131.25 estimate and a more accurate high-gravity formula — along with the apparent and real attenuation and the calories per 12 oz serving. The gravity endpoint converts freely between specific gravity, degrees Plato and Brix (the three ways brewers and winemakers measure dissolved sugar) and reports the gravity points. The ibu endpoint computes hop bitterness in International Bitterness Units by the Tinseth formula from the hop alpha-acid percentage, the weight, the boil time, the batch volume and the wort gravity, returning the utilization and the alpha-acid concentration too. Gravities are specific gravity such as 1.050, hop weight in grams, boil time in minutes and volume in litres. Everything is computed locally and deterministically, so it is instant and private. Ideal for homebrew, craft-beer, cidery and winemaking app developers, recipe and batch tools, and brewing education. Pure local computation — no key, no third-party service, instant. Live, nothing stored. 3 endpoints. This is brewing maths; for a brewery directory use a beer API and for coffee brew ratios a coffee API.","contact":{"name":"PremiumApi","url":"https://www.oanor.com/by/premiumapi"}},"servers":[{"url":"https://api.oanor.com/brewing-api","description":"oanor gateway"}],"tags":[{"name":"Brewing"},{"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/abv":{"get":{"operationId":"get_v1_abv","tags":["Brewing"],"summary":"ABV & attenuation","description":"","parameters":[{"name":"og","in":"query","required":true,"description":"Original gravity","schema":{"type":"string"},"example":"1.050"},{"name":"fg","in":"query","required":true,"description":"Final gravity","schema":{"type":"string"},"example":"1.010"}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"note":"ABV ≈ (OG − FG)·131.25; apparent attenuation = (OG−FG)/(OG−1). The alt formula is more accurate at high gravity.","inputs":{"fg":1.01,"og":1.05},"abv_percent":5.25,"abv_percent_alt":5.3394,"calories_per_12oz":165.18,"real_attenuation_percent":64.8,"apparent_attenuation_percent":80},"meta":{"timestamp":"2026-06-05T03:09:01.739Z","request_id":"64e07008-90b9-44e8-a937-addb899a48fa"},"status":"ok","message":"ABV & attenuation","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/gravity":{"get":{"operationId":"get_v1_gravity","tags":["Brewing"],"summary":"Gravity conversion","description":"","parameters":[{"name":"sg","in":"query","required":false,"description":"Specific gravity","schema":{"type":"string"},"example":"1.050"},{"name":"plato","in":"query","required":false,"description":"Or degrees Plato","schema":{"type":"string"}},{"name":"brix","in":"query","required":false,"description":"Or Brix","schema":{"type":"string"}}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"brix":12.387,"note":"Specific gravity, degrees Plato and Brix all measure dissolved sugar. Gravity points = (SG − 1)·1000.","plato":12.3876,"inputs":{"specific_gravity":1.05},"gravity_points":50,"specific_gravity":1.05},"meta":{"timestamp":"2026-06-05T03:09:01.841Z","request_id":"970bff69-adf9-4d89-9ad5-a3e444107886"},"status":"ok","message":"Gravity convert","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/ibu":{"get":{"operationId":"get_v1_ibu","tags":["Brewing"],"summary":"Hop bitterness (IBU)","description":"","parameters":[{"name":"alpha_acid","in":"query","required":true,"description":"Alpha-acid (%)","schema":{"type":"string"},"example":"5"},{"name":"weight","in":"query","required":true,"description":"Hop weight (g)","schema":{"type":"string"},"example":"28"},{"name":"boil_time","in":"query","required":true,"description":"Boil time (min)","schema":{"type":"string"},"example":"60"},{"name":"volume","in":"query","required":true,"description":"Batch volume (L)","schema":{"type":"string"},"example":"20"},{"name":"og","in":"query","required":false,"description":"Wort gravity","schema":{"type":"string"},"example":"1.050"}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"ibu":16.1465,"note":"Tinseth IBU = (alpha-acid mg/L) × utilization, where utilization rises with boil time and falls with wort gravity.","inputs":{"og":1.05,"volume_l":20,"weight_g":28,"boil_time_min":60,"alpha_acid_pct":5},"utilization":0.230664,"alpha_acid_mg_l":70},"meta":{"timestamp":"2026-06-05T03:09:01.942Z","request_id":"67ef10d9-5abd-4548-8695-913f2768194f"},"status":"ok","message":"IBU bitterness","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":"Gravities are specific gravity (e.g. 1.050); alpha acid in %, hop weight in grams, boil time in minutes, volume in litres.","service":"brewing-api","formulae":{"abv":"(OG − FG)·131.25","ibu":"alpha mg/L × (1.65·0.000125^(OG−1)) × (1 − e^(−0.04·t))/4.15","attenuation":"(OG − FG)/(OG − 1)"},"endpoints":{"GET /v1/abv":"ABV, attenuation and calories from original and final gravity.","GET /v1/ibu":"Hop bitterness (IBU) by the Tinseth formula.","GET /v1/meta":"This document.","GET /v1/gravity":"Convert between specific gravity, degrees Plato and Brix."},"description":"Homebrewing calculator: alcohol by volume and attenuation from gravities, specific-gravity/Plato/Brix conversion, and hop bitterness in IBU by the Tinseth formula."},"meta":{"timestamp":"2026-06-05T03:09:02.018Z","request_id":"4b4a399f-3265-4333-adb7-733ad9da2268"},"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":3000,"rps_limit":2,"hard_limit":true},{"slug":"starter","name":"Starter","price_cents_month":400,"monthly_call_quota":40000,"rps_limit":5,"hard_limit":true},{"slug":"pro","name":"Pro","price_cents_month":1100,"monthly_call_quota":250000,"rps_limit":15,"hard_limit":true},{"slug":"mega","name":"Mega","price_cents_month":3900,"monthly_call_quota":1508000,"rps_limit":40,"hard_limit":true}],"x-oanor-marketplace-url":"https://www.oanor.com/api/brewing-api"}