{"openapi":"3.1.0","info":{"title":"Wallpaper Calculator API","version":"1.0.0","description":"Wallpaper-estimating maths as an API, computed locally and deterministically. The rolls endpoint uses the proper drop method: it works out how many full-height drops come from each roll, floor(roll length ÷ (wall height + pattern repeat)), how many drops the room perimeter needs, ceil(perimeter ÷ roll width), and from those the rolls required — so a larger pattern repeat correctly increases the count. The simple endpoint gives a quick area-based estimate, rolls = ceil(wall area·(1+waste) ÷ roll coverage), handy for plain papers. The cost endpoint totals the project from the rolls and price per roll plus the adhesive, with one tub of paste hanging about five rolls. The standard roll of 10.05 m × 0.53 m is assumed unless you override it. Everything is computed locally and deterministically, so it is instant and private. Ideal for home-decor, renovation and trade app developers, DIY and room-planning tools, and decorator and retailer calculators. Pure local computation — no key, no third-party service, instant. Live, nothing stored. 3 endpoints. This is wallpaper estimation; for wall paint use a paint API and for floor tiles use a flooring API.","contact":{"name":"PremiumApi","url":"https://www.oanor.com/by/premiumapi"}},"servers":[{"url":"https://api.oanor.com/wallpaper-api","description":"oanor gateway"}],"tags":[{"name":"Wallpaper"},{"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/cost":{"get":{"operationId":"get_v1_cost","tags":["Wallpaper"],"summary":"Project cost","description":"","parameters":[{"name":"rolls","in":"query","required":true,"description":"Number of rolls","schema":{"type":"string"},"example":"8"},{"name":"price_per_roll","in":"query","required":true,"description":"Price per roll","schema":{"type":"string"},"example":"25"},{"name":"paste_price","in":"query","required":false,"description":"Price per tub of paste","schema":{"type":"string"},"example":"10"},{"name":"rolls_per_tub","in":"query","required":false,"description":"Rolls per tub (default 5)","schema":{"type":"string"},"example":"5"}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"note":"Total = rolls × price + paste tubs × paste price. One tub of paste hangs ~5 rolls.","inputs":{"rolls":8,"paste_price":10,"rolls_per_tub":5,"price_per_roll":25},"paper_cost":200,"paste_cost":20,"paste_tubs":2,"total_cost":220},"meta":{"timestamp":"2026-06-04T18:38:17.497Z","request_id":"d2d7b2eb-15e2-49fd-8b8d-71b0603a61b7"},"status":"ok","message":"Project cost","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/rolls":{"get":{"operationId":"get_v1_rolls","tags":["Wallpaper"],"summary":"Rolls (drop method)","description":"","parameters":[{"name":"perimeter","in":"query","required":false,"description":"Room perimeter (m)","schema":{"type":"string"},"example":"16"},{"name":"length","in":"query","required":false,"description":"Or room length (m)","schema":{"type":"string"}},{"name":"width","in":"query","required":false,"description":"and room width (m)","schema":{"type":"string"}},{"name":"wall_height","in":"query","required":true,"description":"Wall height (m)","schema":{"type":"string"},"example":"2.4"},{"name":"roll_length","in":"query","required":false,"description":"Roll length (m, default 10.05)","schema":{"type":"string"},"example":"10.05"},{"name":"roll_width","in":"query","required":false,"description":"Roll width (m, default 0.53)","schema":{"type":"string"},"example":"0.53"},{"name":"pattern_repeat","in":"query","required":false,"description":"Pattern repeat (m, default 0)","schema":{"type":"string"},"example":"0"}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"note":"Drop method: drops/roll = floor(roll_length/(height+repeat)); a larger pattern repeat wastes more and needs more rolls.","inputs":{"perimeter":16,"roll_width":0.53,"roll_length":10.05,"wall_height":2.4,"pattern_repeat":0},"total_drops":31,"rolls_needed":8,"drops_per_roll":4},"meta":{"timestamp":"2026-06-04T18:38:17.590Z","request_id":"8539b9a9-4549-4556-962b-3f4280b34bbb"},"status":"ok","message":"Rolls (drop method)","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/simple":{"get":{"operationId":"get_v1_simple","tags":["Wallpaper"],"summary":"Rolls (area method)","description":"","parameters":[{"name":"wall_area","in":"query","required":false,"description":"Wall area (m²)","schema":{"type":"string"},"example":"38.4"},{"name":"perimeter","in":"query","required":false,"description":"Or perimeter (m)","schema":{"type":"string"}},{"name":"wall_height","in":"query","required":false,"description":"and wall height (m)","schema":{"type":"string"}},{"name":"roll_length","in":"query","required":false,"description":"Roll length (m, default 10.05)","schema":{"type":"string"},"example":"10.05"},{"name":"roll_width","in":"query","required":false,"description":"Roll width (m, default 0.53)","schema":{"type":"string"},"example":"0.53"},{"name":"waste_percent","in":"query","required":false,"description":"Waste % (default 15)","schema":{"type":"string"},"example":"15"}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"note":"Area method: rolls = ceil(area·(1+waste) / roll coverage). Patterned papers need ~15 % waste; plain ones less.","inputs":{"wall_area":38.4,"roll_width":0.53,"roll_length":10.05,"waste_percent":15},"rolls_needed":9,"roll_coverage_m2":5.3265},"meta":{"timestamp":"2026-06-04T18:38:17.693Z","request_id":"10175faa-38fb-4ced-bfb1-56d6d350cec7"},"status":"ok","message":"Rolls (area method)","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":"Lengths in m, area in m². Standard roll 10.05 m × 0.53 m. The drop method is more accurate for patterned papers; round up and keep a spare roll.","service":"wallpaper-api","formulae":{"area":"ceil(area·(1+waste) / (roll_length·roll_width))","rolls":"ceil(ceil(perimeter/roll_width) / drops_per_roll)","drops_per_roll":"floor(roll_length / (height + repeat))"},"endpoints":{"GET /v1/cost":"Project cost from rolls, price per roll and adhesive.","GET /v1/meta":"This document.","GET /v1/rolls":"Rolls needed by the drop method, accounting for wall height and pattern repeat.","GET /v1/simple":"Quick area-based roll estimate with a waste allowance."},"description":"Wallpaper estimator: rolls by the drop method (with pattern repeat), a quick area-based estimate, and project cost."},"meta":{"timestamp":"2026-06-04T18:38:17.839Z","request_id":"1acb4915-0434-4222-ac94-86a03d8e6dab"},"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":2000,"rps_limit":2,"hard_limit":true},{"slug":"starter","name":"Starter","price_cents_month":400,"monthly_call_quota":15000,"rps_limit":5,"hard_limit":true},{"slug":"pro","name":"Pro","price_cents_month":1200,"monthly_call_quota":80000,"rps_limit":15,"hard_limit":true},{"slug":"mega","name":"Mega","price_cents_month":3900,"monthly_call_quota":400000,"rps_limit":40,"hard_limit":true}],"x-oanor-marketplace-url":"https://www.oanor.com/api/wallpaper-api"}