{"openapi":"3.1.0","info":{"title":"Dough Calculator API","version":"1.0.0","description":"Pizza and bread dough maths as an API, built on baker's percentages — where the flour is always 100% and every other ingredient is expressed as a percentage of the flour weight. The dough endpoint computes a full recipe in grams (flour, water, salt, yeast, oil and sugar) from a target quantity — either a number of dough balls and a ball weight, a total dough weight, or a flour weight — together with a hydration and salt/yeast percentages, or a built-in style preset (Neapolitan, New York, Detroit, Sicilian, focaccia, ciabatta, baguette, sandwich). The hydration endpoint converts between flour, water and hydration percentage and classifies the dough from stiff to extremely wet. The presets endpoint returns the common dough styles as baker's percentages with typical ball weights. Everything is computed locally and deterministically, so it is instant and private. The yeast figure is instant dry yeast (use roughly three times as much fresh). Ideal for recipe and baking apps, pizzeria and bakery tools, meal-planning and kitchen-scale integrations, and food blogs. Pure local computation — no key, no third-party service, instant. Live, nothing stored. 3 endpoints. This is dough formulation by baker's percentage; for ingredient volume-to-weight and oven-temperature conversion use a cooking API.","contact":{"name":"PremiumApi","url":"https://www.oanor.com/by/premiumapi"}},"servers":[{"url":"https://api.oanor.com/dough-api","description":"oanor gateway"}],"tags":[{"name":"Dough"},{"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/dough":{"get":{"operationId":"get_v1_dough","tags":["Dough"],"summary":"Full dough recipe (grams)","description":"","parameters":[{"name":"balls","in":"query","required":false,"description":"Number of dough balls","schema":{"type":"string"},"example":"4"},{"name":"ball_weight","in":"query","required":false,"description":"Grams per ball","schema":{"type":"string"},"example":"250"},{"name":"total_dough","in":"query","required":false,"description":"Or total dough grams","schema":{"type":"string"}},{"name":"flour","in":"query","required":false,"description":"Or flour grams","schema":{"type":"string"}},{"name":"style","in":"query","required":false,"description":"neapolitan|newyork|detroit|focaccia|…","schema":{"type":"string"},"example":"neapolitan"},{"name":"hydration","in":"query","required":false,"description":"Water % (overrides style)","schema":{"type":"string"},"example":"60"},{"name":"salt","in":"query","required":false,"description":"Salt %","schema":{"type":"string"},"example":"2.5"},{"name":"yeast","in":"query","required":false,"description":"Yeast %","schema":{"type":"string"},"example":"0.3"},{"name":"oil","in":"query","required":false,"description":"Oil %","schema":{"type":"string"}},{"name":"sugar","in":"query","required":false,"description":"Sugar %","schema":{"type":"string"}}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"note":"Baker's percentages: flour = 100%, others relative to flour. Yeast shown is instant dry yeast; use ~3× for fresh.","input":{"style":"neapolitan","percentages":{"oil":0,"salt":2.5,"flour":100,"sugar":0,"water":60,"yeast":0.3}},"ingredients_grams":{"oil":0,"salt":15.4,"flour":614.3,"sugar":0,"water":368.6,"yeast":1.84},"total_dough_grams":1000},"meta":{"timestamp":"2026-06-04T01:59:21.301Z","request_id":"5d3c2ca1-6732-4da9-b188-7c034af544b5"},"status":"ok","message":"Dough recipe","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/hydration":{"get":{"operationId":"get_v1_hydration","tags":["Dough"],"summary":"Flour / water / hydration","description":"","parameters":[{"name":"flour","in":"query","required":false,"description":"Flour grams","schema":{"type":"string"},"example":"1000"},{"name":"water","in":"query","required":false,"description":"Water grams","schema":{"type":"string"},"example":"650"},{"name":"hydration","in":"query","required":false,"description":"Or hydration %","schema":{"type":"string"}}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"note":"Hydration = water ÷ flour × 100 (by weight).","flour_grams":1000,"water_grams":650,"classification":"standard","hydration_percent":65},"meta":{"timestamp":"2026-06-04T01:59:21.387Z","request_id":"a276ab6c-2184-4076-9c26-40586fc011f4"},"status":"ok","message":"Hydration conversion","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/presets":{"get":{"operationId":"get_v1_presets","tags":["Dough"],"summary":"Dough style presets","description":"","parameters":[{"name":"style","in":"query","required":false,"description":"One style, or omit for all","schema":{"type":"string"},"example":"neapolitan"}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"note":"Baker's percentages plus a typical ball weight (grams).","style":"neapolitan","percentages":{"oil":0,"ball":250,"salt":2.8,"flour":100,"sugar":0,"yeast":0.2,"hydration":60}},"meta":{"timestamp":"2026-06-04T01:59:21.479Z","request_id":"52e1a257-b53d-42aa-befe-4f0000206aea"},"status":"ok","message":"Style presets","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":"Baker's percentages: flour is 100%, every other ingredient is a percent of the flour weight.","styles":["neapolitan","newyork","detroit","sicilian","focaccia","ciabatta","baguette","sandwich"],"service":"dough","endpoints":{"/v1/dough":"Flour, water, salt, yeast, oil and sugar (grams) from balls/total dough and hydration or a style preset.","/v1/presets":"Common dough styles (Neapolitan, NY, ciabatta, focaccia…) as baker's percentages.","/v1/hydration":"Convert between flour, water and hydration percent, with a wetness classification."},"description":"Dough maths by baker's percentages: full pizza/bread recipe from a target quantity, hydration conversion, and style presets."},"meta":{"timestamp":"2026-06-04T01:59:21.567Z","request_id":"48f19a40-8d5f-44ed-ba0b-0ef0ba7d9267"},"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":10435,"rps_limit":2,"hard_limit":true},{"slug":"starter","name":"Starter","price_cents_month":1195,"monthly_call_quota":20050,"rps_limit":8,"hard_limit":true},{"slug":"pro","name":"Pro","price_cents_month":3185,"monthly_call_quota":250500,"rps_limit":20,"hard_limit":true},{"slug":"mega","name":"Mega","price_cents_month":6985,"monthly_call_quota":1295000,"rps_limit":50,"hard_limit":true}],"x-oanor-marketplace-url":"https://www.oanor.com/api/dough-api"}