{"openapi":"3.1.0","info":{"title":"Construction Calculator API","version":"1.0.0","description":"Construction and material estimating as an API — the everyday \"how much do I need to buy\" maths for building and renovation jobs, computed locally and deterministically from standard geometry and trade rules of thumb. The paint endpoint works out the litres and number of cans for a surface, allowing for the number of coats and the paint's coverage and deducting doors and windows. The tile endpoint computes how many tiles (and full boxes) a floor or wall area needs from the tile dimensions and a wastage allowance. The concrete endpoint gives the concrete volume in cubic metres, cubic yards and litres — and the number of pre-mix bags — for a slab, footing, wall or round column, with an optional batch quantity. The bricks endpoint computes how many bricks a wall needs from the brick size and mortar joint (default 215×65 mm brick with a 10 mm joint ≈ 60 bricks per square metre). Everything is computed locally and deterministically, so it is instant and private. Ideal for builders' merchants and trade apps, DIY and home-improvement tools, quoting and estimating software, and project planners. Pure local computation — no key, no third-party service, instant. Live, nothing stored. Estimates are guidance — allow for site conditions and follow the manufacturer's stated figures. 4 endpoints. This is materials estimating; for plain unit conversion use a unit-conversion API and for tyre or drivetrain maths use a tyre API.","contact":{"name":"PremiumApi","url":"https://www.oanor.com/by/premiumapi"}},"servers":[{"url":"https://api.oanor.com/buildcalc-api","description":"oanor gateway"}],"tags":[{"name":"Build"},{"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/bricks":{"get":{"operationId":"get_v1_bricks","tags":["Build"],"summary":"Bricks needed","description":"","parameters":[{"name":"area","in":"query","required":false,"description":"wall m² (or length+height)","schema":{"type":"string"},"example":"10"},{"name":"brick_length","in":"query","required":false,"description":"default 215","schema":{"type":"string"},"example":"215"},{"name":"brick_height","in":"query","required":false,"description":"default 65","schema":{"type":"string"},"example":"65"},{"name":"mortar_joint","in":"query","required":false,"description":"default 10","schema":{"type":"string"},"example":"10"},{"name":"unit","in":"query","required":false,"description":"mm|cm|in (default mm)","schema":{"type":"string"},"example":"mm"}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"note":"Single-leaf (half-brick) wall, stretcher bond. Default 215×65 mm brick with a 10 mm joint ≈ 60 bricks/m². Double the count for a one-brick wall.","inputs":{"unit":"mm","area_m2":10,"brick_height":65,"brick_length":215,"mortar_joint":10,"waste_percent":5},"bricks_needed":623,"bricks_per_m2":59.26},"meta":{"timestamp":"2026-06-03T17:42:00.680Z","request_id":"374bf229-1811-46ec-be0d-9006f158ed02"},"status":"ok","message":"Brick estimator","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/concrete":{"get":{"operationId":"get_v1_concrete","tags":["Build"],"summary":"Concrete volume & bags","description":"","parameters":[{"name":"shape","in":"query","required":false,"description":"slab|footing|wall|column","schema":{"type":"string"},"example":"slab"},{"name":"length","in":"query","required":false,"description":"m","schema":{"type":"string"},"example":"5"},{"name":"width","in":"query","required":false,"description":"m","schema":{"type":"string"},"example":"4"},{"name":"thickness","in":"query","required":false,"description":"m (slab/wall)","schema":{"type":"string"},"example":"0.1"},{"name":"diameter","in":"query","required":false,"description":"m (column)","schema":{"type":"string"}},{"name":"height","in":"query","required":false,"description":"m (column)","schema":{"type":"string"}},{"name":"bag_yield_m3","in":"query","required":false,"description":"default 0.011","schema":{"type":"string"}}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"note":"Bag count assumes a ~0.011 m³ yield per 20 kg pre-mix bag; adjust bag_yield_m3 for your product.","inputs":{"shape":"slab","width_m":4,"length_m":5,"quantity":1,"thickness_m":0.1,"bag_yield_m3":0.011,"waste_percent":5},"volume_m3":2,"volume_yd3":2.747,"bags_needed":191,"volume_litres":2100,"volume_with_waste_m3":2.1},"meta":{"timestamp":"2026-06-03T17:42:00.791Z","request_id":"bbe7ac9f-4d18-469e-add8-cec473d83280"},"status":"ok","message":"Concrete estimator","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/paint":{"get":{"operationId":"get_v1_paint","tags":["Build"],"summary":"Paint litres & cans","description":"","parameters":[{"name":"area","in":"query","required":false,"description":"m² (or length+height)","schema":{"type":"string"},"example":"40"},{"name":"coats","in":"query","required":false,"description":"default 2","schema":{"type":"string"},"example":"2"},{"name":"coverage","in":"query","required":false,"description":"m²/litre per coat (default 11)","schema":{"type":"string"},"example":"11"},{"name":"doors","in":"query","required":false,"description":"count","schema":{"type":"string"},"example":"0"},{"name":"windows","in":"query","required":false,"description":"count","schema":{"type":"string"},"example":"0"}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"note":"Doors deducted at 1.8 m² and windows at 1.5 m² each. Coverage is per coat; check the tin's stated spread rate.","inputs":{"area":40,"coats":2,"doors":0,"windows":0,"can_size_litres":2.5,"coverage_m2_per_litre":11},"cans_needed":3,"litres_needed":7.27,"litres_rounded":7.300000000000001,"paintable_area_m2":40},"meta":{"timestamp":"2026-06-03T17:42:00.892Z","request_id":"1f5ccfc1-ef04-45be-b6f9-7e54967b14df"},"status":"ok","message":"Paint estimator","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/tile":{"get":{"operationId":"get_v1_tile","tags":["Build"],"summary":"Tiles & boxes needed","description":"","parameters":[{"name":"area","in":"query","required":false,"description":"m² (or length+width)","schema":{"type":"string"},"example":"12"},{"name":"tile_width","in":"query","required":true,"description":"tile width","schema":{"type":"string"},"example":"30"},{"name":"tile_length","in":"query","required":true,"description":"tile length","schema":{"type":"string"},"example":"30"},{"name":"tile_unit","in":"query","required":false,"description":"mm|cm|m|in (default cm)","schema":{"type":"string"},"example":"cm"},{"name":"waste_percent","in":"query","required":false,"description":"default 10","schema":{"type":"string"},"example":"10"},{"name":"tiles_per_box","in":"query","required":false,"description":"for box count","schema":{"type":"string"}}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"note":"Includes wastage allowance; round up to full boxes when ordering.","inputs":{"area_m2":12,"tile_unit":"cm","tile_width":30,"tile_length":30,"waste_percent":10},"tile_area_m2":0.09,"tiles_needed":147,"tiles_per_m2":11.11,"area_with_waste_m2":13.2},"meta":{"timestamp":"2026-06-03T17:42:01.013Z","request_id":"d54e4aaf-cdfb-4da3-88c7-6bdca19e5a4c"},"status":"ok","message":"Tile estimator","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":"Estimates are guidance — allow for site conditions and follow the manufacturer's stated figures.","service":"buildcalc","endpoints":{"/v1/tile":"Number of tiles (and boxes) for a floor/wall area, including wastage.","/v1/paint":"Litres and cans of paint for a surface area (deducts doors/windows, accounts for coats and coverage).","/v1/bricks":"Number of bricks for a wall area given brick size and mortar joint.","/v1/concrete":"Concrete volume (m³, yd³, litres) and pre-mix bags for a slab, footing, wall or round column."},"description":"Construction & materials estimators: paint, tiles, concrete and bricks, computed locally from standard geometry and trade rules."},"meta":{"timestamp":"2026-06-03T17:42:01.101Z","request_id":"dd4a2fa9-2f76-413d-a1c7-f74201cf427d"},"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":9135,"rps_limit":2,"hard_limit":true},{"slug":"starter","name":"Starter","price_cents_month":1065,"monthly_call_quota":18750,"rps_limit":8,"hard_limit":true},{"slug":"pro","name":"Pro","price_cents_month":3055,"monthly_call_quota":237500,"rps_limit":20,"hard_limit":true},{"slug":"mega","name":"Mega","price_cents_month":6855,"monthly_call_quota":1230000,"rps_limit":50,"hard_limit":true}],"x-oanor-marketplace-url":"https://www.oanor.com/api/buildcalc-api"}