{"openapi":"3.1.0","info":{"title":"Meat Curing API","version":"1.0.0","description":"Meat-curing and charcuterie maths as an API, computed locally and deterministically — the cure, salt and nitrite numbers a home charcutier or butcher works to, with the safety check that matters most. The cure endpoint plans an equilibrium dry cure from the meat weight: cure grams = target ppm × meat ÷ (0.0625 × 1,000,000), so about 2.5 g of Cure #1 per kilogram lands on the classic 156 ppm of nitrite (well under the 200 ppm ingoing limit), plus the salt and sugar as a configurable percentage of the meat, the salt the cure blend itself carries, and — with Cure #2 — the added nitrate for long-aged salami. The brine endpoint sizes a wet brine: salt = water × salinity %, with the salometer degrees (a saturated 26.45 % brine is 100°), and an optional cure dose returning the nitrite ppm spread over the meat and brine for an equilibrium brine. Cure #1 is 6.25 % sodium nitrite; Cure #2 adds 4 % nitrate. Everything is computed locally and deterministically, so it is instant and private. Ideal for charcuterie, butchery, smoking, sausage-making and food-craft app developers, cure-calculator and recipe tools, and culinary training. Pure local computation — no key, no third-party service, instant. Metric: grams, millilitres, percent. Live, nothing stored. 2 compute endpoints. THIS IS A CALCULATION AID — always follow a tested, approved curing recipe; nitrite is toxic in excess.","contact":{"name":"PremiumApi","url":"https://www.oanor.com/by/premiumapi"}},"servers":[{"url":"https://api.oanor.com/curing-api","description":"oanor gateway"}],"tags":[{"name":"Curing"},{"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/brine":{"get":{"operationId":"get_v1_brine","tags":["Curing"],"summary":"Wet brine","description":"","parameters":[{"name":"water","in":"query","required":true,"description":"Water (ml ≈ g)","schema":{"type":"string"},"example":"4000"},{"name":"salinity_percent","in":"query","required":true,"description":"Salt % of water","schema":{"type":"string"},"example":"5"},{"name":"cure_grams","in":"query","required":false,"description":"Cure added (for ppm)","schema":{"type":"string"}},{"name":"meat_weight","in":"query","required":false,"description":"Meat weight (equilibrium ppm)","schema":{"type":"string"}},{"name":"cure_type","in":"query","required":false,"description":"Cure type 1 or 2","schema":{"type":"string"},"example":"1"}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"note":"Wet brine: salt = water × salinity%. A 100° (saturated) brine is 26.45% salt by weight; salometer ° ≈ salinity% / 0.2645.","inputs":{"water":4000,"salinity_percent":5},"salt_grams":200,"brine_salometer_degrees":18.9},"meta":{"timestamp":"2026-06-05T22:57:24.865Z","request_id":"c6f2097f-ad0b-4c3a-b083-328a8450b2a5"},"status":"ok","message":"Wet brine","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/cure":{"get":{"operationId":"get_v1_cure","tags":["Curing"],"summary":"Equilibrium dry cure","description":"","parameters":[{"name":"meat_weight","in":"query","required":true,"description":"Meat weight (g)","schema":{"type":"string"},"example":"1000"},{"name":"target_ppm","in":"query","required":false,"description":"Target nitrite ppm (default 156, max 200)","schema":{"type":"string"},"example":"156"},{"name":"salt_percent","in":"query","required":false,"description":"Salt % of meat (default 2.5)","schema":{"type":"string"},"example":"2.5"},{"name":"sugar_percent","in":"query","required":false,"description":"Sugar % of meat","schema":{"type":"string"},"example":"1"},{"name":"cure_type","in":"query","required":false,"description":"Cure type 1 (nitrite) or 2 (+nitrate)","schema":{"type":"string"},"example":"1"}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"note":"Equilibrium dry cure: cure grams = target ppm × meat / (0.0625 × 1e6) — about 2.5 g of Cure #1 per kg gives 156 ppm. Salt and sugar are a % of the meat weight; the cure blend's own salt is subtracted.","inputs":{"cure_type":"Cure #1","target_ppm":156,"meat_weight":1000,"salt_percent":2.5,"sugar_percent":1},"cure_grams":2.496,"nitrate_ppm":0,"nitrite_ppm":156,"sugar_grams":10,"added_salt_grams":22.66,"total_salt_grams":25,"within_safe_limit":true},"meta":{"timestamp":"2026-06-05T22:57:24.956Z","request_id":"a837b032-356b-4c19-b301-b500bc691fd0"},"status":"ok","message":"Dry cure","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":"Metric: grams, millilitres, percent. Cure #1 is 6.25% sodium nitrite; the US ingoing limit is 200 ppm and a common target is 156. THIS IS A CALCULATION AID — always follow a tested, approved curing recipe; nitrite is toxic in excess.","service":"curing-api","endpoints":{"GET /v1/cure":"Cure #1/#2, salt and sugar grams for an equilibrium dry cure to a target nitrite ppm.","GET /v1/meta":"This document.","GET /v1/brine":"Salt (and optional cure) for a wet brine at a target salinity, with salometer degrees."},"description":"Meat-curing / charcuterie maths: equilibrium dry cure and wet brine with cure (nitrite/nitrate) and salt doses, and the resulting nitrite ppm vs the safe limit."},"meta":{"timestamp":"2026-06-05T22:57:25.041Z","request_id":"b5ff79e8-a5ec-471c-bb25-46e330137ef8"},"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":5650,"rps_limit":2,"hard_limit":true},{"slug":"starter","name":"Starter","price_cents_month":365,"monthly_call_quota":56000,"rps_limit":6,"hard_limit":true},{"slug":"pro","name":"Pro","price_cents_month":1020,"monthly_call_quota":234000,"rps_limit":15,"hard_limit":true},{"slug":"mega","name":"Mega","price_cents_month":3300,"monthly_call_quota":1340000,"rps_limit":40,"hard_limit":true}],"x-oanor-marketplace-url":"https://www.oanor.com/api/curing-api"}