{"openapi":"3.1.0","info":{"title":"Ladder Safety API","version":"1.0.0","description":"Ladder-safety maths as an API, computed locally and deterministically — the angle, reach and load numbers that keep a ladder from sliding out or buckling. The angle endpoint applies the 4:1 rule: the base goes out one foot for every four feet of working length, which lands the ladder at about 75.5° — a 24-foot ladder sits 6 feet from the wall and reaches roughly 23 feet up, steep enough not to tip back and shallow enough not to slide. The extension endpoint gives the usable length and reach of a two-section extension ladder, which loses the overlap the sections share (3 feet up to 36, 4 to 48, 5 beyond), and the working height at the safe angle — remembering the ladder must extend 3 feet above a roof edge you step onto. The duty-rating endpoint turns a total load — your weight plus tools and materials, not just bodyweight — into the right duty class, from Type III household (200 lb) through I industrial (250) to IAA professional (375). Everything is computed locally and deterministically, so it is instant and private. Ideal for construction-safety and trades apps, jobsite and rental tools, OSHA training aids, and home-improvement sites. Pure local computation — no key, no third-party service, instant. Live, nothing stored. 3 compute endpoints. Educational — always follow the manufacturer's labels and OSHA/ANSI rules.","contact":{"name":"PremiumApi","url":"https://www.oanor.com/by/premiumapi"}},"servers":[{"url":"https://api.oanor.com/ladder-api","description":"oanor gateway"}],"tags":[{"name":"Ladder"},{"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/angle":{"get":{"operationId":"get_v1_angle","tags":["Ladder"],"summary":"4:1 setup angle and reach","description":"","parameters":[{"name":"ladder_length_ft","in":"query","required":true,"description":"Working length in feet","schema":{"type":"string"},"example":"24"}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"note":"The 4:1 rule sets the base out one foot for every four feet of working length, which lands the ladder at about 75.5° — steep enough not to tip back, shallow enough not to slide out. A 24-foot ladder sits 6 feet from the wall and reaches ~23 feet up. An easy check: stand at the base, arms straight out, and your palms should just touch a rung.","inputs":{"ladder_length_ft":24},"angle_deg":75.5,"base_distance_ft":6,"vertical_height_ft":23.24},"meta":{"timestamp":"2026-06-06T23:53:59.880Z","request_id":"eab647c6-44d9-4e08-9274-d7ffa7bf10b0"},"status":"ok","message":"Setup angle","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/duty-rating":{"get":{"operationId":"get_v1_duty_rating","tags":["Ladder"],"summary":"Duty-rating class for a load","description":"","parameters":[{"name":"total_load_lb","in":"query","required":true,"description":"Total load (person + tools) in lb","schema":{"type":"string"},"example":"280"}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"note":"Duty rating is the TOTAL load — your weight plus tools and materials, not just bodyweight. Type III (200 lb) is household, II (225) light commercial, I (250) industrial, IA (300) extra-heavy and IAA (375) professional. Add up everything you carry up and pick the rating above it; never exceed it.","inputs":{"total_load_lb":280},"duty_use":"extra heavy duty","duty_type":"IA","rated_capacity_lb":300},"meta":{"timestamp":"2026-06-06T23:53:59.960Z","request_id":"c635a569-9e02-4738-9b63-e2bd1b53b3e0"},"status":"ok","message":"Duty rating","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/extension":{"get":{"operationId":"get_v1_extension","tags":["Ladder"],"summary":"Extension ladder reach","description":"","parameters":[{"name":"base_section_ft","in":"query","required":true,"description":"Base section length in feet","schema":{"type":"string"},"example":"13"},{"name":"fly_section_ft","in":"query","required":true,"description":"Fly section length in feet","schema":{"type":"string"},"example":"13"}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"note":"A two-section extension ladder loses the overlap the sections share: usable length = both sections − the required overlap (3 ft up to 36 ft, 4 ft to 48, 5 ft beyond). Set at the 4:1 angle that gives the working height shown, and the ladder must extend at least 3 feet above a roof edge you step onto.","inputs":{"fly_section_ft":13,"base_section_ft":13},"required_overlap_ft":3,"max_extended_length_ft":23,"approx_working_height_ft":22.3},"meta":{"timestamp":"2026-06-06T23:54:00.055Z","request_id":"2067386e-68ea-4235-a8e9-b5818c6a010c"},"status":"ok","message":"Extension reach","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":"US units (feet, lb). 4:1 rule → base = length/4, ~75.5°; extension overlap 3/4/5 ft by length; duty types III–IAA (200–375 lb). Educational — follow the manufacturer's labels and OSHA/ANSI.","service":"ladder-api","endpoints":{"GET /v1/meta":"This document.","GET /v1/angle":"Base distance, height and angle from the 4:1 rule.","GET /v1/extension":"Extended length, required overlap and working height of an extension ladder.","GET /v1/duty-rating":"Duty-rating class for a total load."},"description":"Ladder-safety maths: the 4:1 setup angle and reach, extension-ladder overlap and reach, and the duty-rating class for a load."},"meta":{"timestamp":"2026-06-06T23:54:00.129Z","request_id":"27bb4ec9-ba1d-4e61-8adb-a8a1e12a3e36"},"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":650,"rps_limit":2,"hard_limit":true},{"slug":"starter","name":"Starter","price_cents_month":415,"monthly_call_quota":16000,"rps_limit":8,"hard_limit":true},{"slug":"pro","name":"Pro","price_cents_month":1490,"monthly_call_quota":96000,"rps_limit":20,"hard_limit":true},{"slug":"mega","name":"Mega","price_cents_month":4620,"monthly_call_quota":320000,"rps_limit":48,"hard_limit":true}],"x-oanor-marketplace-url":"https://www.oanor.com/api/ladder-api"}