{"openapi":"3.1.0","info":{"title":"Snow Load API","version":"1.0.0","description":"Roof snow-load maths as an API, computed locally and deterministically using the ASCE 7 method. The roof endpoint turns a ground snow load into the design roof snow load: the flat-roof load is pf = 0.7 · Ce · Ct · Is · pg, using the exposure, thermal and importance factors, and the sloped-roof load is ps = Cs · pf, where the slope factor Cs follows the warm-roof all-surfaces curve (1.0 up to 30°, falling linearly to 0 at 70°) or a value you supply. It reports every load in kilopascals, pascals, pounds per square foot and kilograms per square metre, and — if you give a roof area — the total load in kilonewtons, kilograms, tonnes and pounds. The depth endpoint converts a measured snow depth and a density (given directly or by snow type, from fresh ~100 to ice ~917 kg/m³) into a load. The convert endpoint converts a snow load between kPa, psf, kg/m², Pa and psi. Depths accept millimetres, centimetres, metres, inches or feet. Everything is computed locally and deterministically, so it is instant and private. An engineering aid, not a code-stamped design — always confirm against the governing local code with a qualified engineer. Ideal for structural and roofing tools, building-code and permitting apps, solar-install and carport planners, and winter-risk calculators. Pure local computation — no key, no third-party service, instant. Live, nothing stored. 3 endpoints. This is roof snow-load engineering; for roof pitch and area geometry use a roofing API and for beam reactions use a beam API.","contact":{"name":"PremiumApi","url":"https://www.oanor.com/by/premiumapi"}},"servers":[{"url":"https://api.oanor.com/snowload-api","description":"oanor gateway"}],"tags":[{"name":"Snow"},{"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/convert":{"get":{"operationId":"get_v1_convert","tags":["Snow"],"summary":"Snow-load unit conversion","description":"","parameters":[{"name":"value","in":"query","required":true,"description":"Load value","schema":{"type":"string"},"example":"35"},{"name":"from","in":"query","required":false,"description":"kpa|psf|kgm2|pa|psi (default psf)","schema":{"type":"string"},"example":"psf"}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"input":{"unit":"psf","value":35},"converted":{"pa":1675.8,"kpa":1.6758,"psf":35,"kg_m2":170.88}},"meta":{"timestamp":"2026-06-04T01:59:09.274Z","request_id":"b6b2c2ff-c05a-48b0-9dc3-d1cbb38c4c69"},"status":"ok","message":"Snow-load unit 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/depth":{"get":{"operationId":"get_v1_depth","tags":["Snow"],"summary":"Snow load from depth","description":"","parameters":[{"name":"depth","in":"query","required":true,"description":"Snow depth","schema":{"type":"string"},"example":"50"},{"name":"depth_unit","in":"query","required":false,"description":"mm|cm|m|in|ft (default cm)","schema":{"type":"string"},"example":"cm"},{"name":"snow_type","in":"query","required":false,"description":"fresh|average|settled|packed|wet|ice","schema":{"type":"string"},"example":"fresh"},{"name":"density","in":"query","required":false,"description":"Or explicit density (kg/m³)","schema":{"type":"string"}}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"load":{"pa":490.3,"kpa":0.4903,"psf":10.2408,"kg_m2":50},"note":"Snow load = depth(m) × density(kg/m³) → kg/m², converted to pressure with g = 9.80665. Densities: fresh ~100, settled ~300, wet ~500, ice ~917 kg/m³.","depth_m":0.5,"density_kg_m3":100,"density_source":"fresh"},"meta":{"timestamp":"2026-06-04T01:59:09.358Z","request_id":"b2a43b1e-9114-40cb-9fc8-5a530feccb34"},"status":"ok","message":"Snow load from depth & density","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/roof":{"get":{"operationId":"get_v1_roof","tags":["Snow"],"summary":"Roof snow load (ASCE 7)","description":"","parameters":[{"name":"ground_snow_load","in":"query","required":true,"description":"Ground snow load (pg)","schema":{"type":"string"},"example":"50"},{"name":"pressure_unit","in":"query","required":false,"description":"psf|kpa|kgm2|pa|psi (default psf)","schema":{"type":"string"},"example":"psf"},{"name":"exposure_factor","in":"query","required":false,"description":"Ce (default 1.0)","schema":{"type":"string"}},{"name":"thermal_factor","in":"query","required":false,"description":"Ct (default 1.0)","schema":{"type":"string"}},{"name":"importance_factor","in":"query","required":false,"description":"Is (default 1.0)","schema":{"type":"string"}},{"name":"slope","in":"query","required":false,"description":"Roof slope (degrees)","schema":{"type":"string"}},{"name":"slope_factor","in":"query","required":false,"description":"Override Cs (0-1)","schema":{"type":"string"}},{"name":"area","in":"query","required":false,"description":"Roof area (for total load)","schema":{"type":"string"}},{"name":"area_unit","in":"query","required":false,"description":"m2|ft2","schema":{"type":"string"},"example":"m2"}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"note":"ASCE 7 method. Slope factor uses the warm-roof all-surfaces approximation (Cs=1 to 30°, linear to 0 at 70°); pass slope_factor to override. Verify against the governing local code with a qualified engineer.","factors":{"slope_Cs":1,"thermal_Ct":1,"exposure_Ce":1,"importance_Is":1},"formula":"pf = 0.7·Ce·Ct·Is·pg ; ps = Cs·pf (ASCE 7).","design_snow_load":{"pa":1675.8,"kpa":1.6758,"psf":35,"kg_m2":170.88},"ground_snow_load":{"pa":2394,"kpa":2.394,"psf":50,"kg_m2":244.12},"flat_roof_snow_load":{"pa":1675.8,"kpa":1.6758,"psf":35,"kg_m2":170.88},"sloped_roof_snow_load":{"pa":1675.8,"kpa":1.6758,"psf":35,"kg_m2":170.88}},"meta":{"timestamp":"2026-06-04T01:59:09.440Z","request_id":"10403f51-7b79-4561-b140-219a6327f2ff"},"status":"ok","message":"Roof snow load from ground snow load","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":{"api":"snowload","note":"Roof snow-load maths (ASCE 7) — computed locally and deterministically, no key, no third-party service. Engineering aid, not a code-stamped design.","endpoints":["/v1/roof","/v1/depth","/v1/convert","/v1/meta"],"snow_types":["fresh","light","new","average","settled","packed","wet","wet_packed","ice"],"pressure_units":["kpa","pa","psf","kgm2","psi"]},"meta":{"timestamp":"2026-06-04T01:59:09.527Z","request_id":"3fcfa1fe-a173-4b23-b23c-3cecc22e7b88"},"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":13535,"rps_limit":2,"hard_limit":true},{"slug":"starter","name":"Starter","price_cents_month":1505,"monthly_call_quota":23250,"rps_limit":8,"hard_limit":true},{"slug":"pro","name":"Pro","price_cents_month":3505,"monthly_call_quota":282500,"rps_limit":20,"hard_limit":true},{"slug":"mega","name":"Mega","price_cents_month":7305,"monthly_call_quota":1455000,"rps_limit":50,"hard_limit":true}],"x-oanor-marketplace-url":"https://www.oanor.com/api/snowload-api"}