{"openapi":"3.1.0","info":{"title":"Climbing Fall API","version":"1.0.0","description":"Rock-climbing fall maths as an API, computed locally and deterministically — the safety numbers behind a lead fall, from the harshness of the catch to whether you hit the deck. The fall-factor endpoint gives the fall factor, distance fallen ÷ rope paid out, from 0 to a maximum of 2: it, not the absolute distance, decides how hard the catch is, so 4 metres on 2 metres of rope is a brutal factor-2 onto the anchor while the same fall on 10 metres of rope is a mild 0.4. The impact-force endpoint gives the peak force the rope transmits from the spring model F = mg + √((mg)² + 2·mg·k·f), where k is the rope modulus (~20 kN for a dynamic single rope) and f the fall factor — so an 80 kg climber on a factor-1 fall feels about 6.4 kN, and the top runner sees roughly 1.66× that from the pulley effect. The ground-fall endpoint adds it up: total drop = twice the height above the last piece, plus slack, plus the rope's stretch, and tells you whether that clears the ground or a ledge. Everything is computed locally and deterministically, so it is instant and private. Ideal for climbing apps, gym and guiding tools, route-planning and education sites, and gear calculators. Pure local computation — no key, no third-party service, instant. Live, nothing stored. 3 compute endpoints. Educational estimates — not a substitute for instruction and judgement.","contact":{"name":"PremiumApi","url":"https://www.oanor.com/by/premiumapi"}},"servers":[{"url":"https://api.oanor.com/climbing-api","description":"oanor gateway"}],"tags":[{"name":"Climbing"},{"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/fall-factor":{"get":{"operationId":"get_v1_fall_factor","tags":["Climbing"],"summary":"Fall factor and severity","description":"","parameters":[{"name":"fall_distance_m","in":"query","required":true,"description":"Distance fallen in metres","schema":{"type":"string"},"example":"4"},{"name":"rope_out_m","in":"query","required":true,"description":"Rope paid out in metres","schema":{"type":"string"},"example":"2"}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"note":"Fall factor = distance fallen ÷ rope paid out, from 0 to a maximum of 2 (a fall straight onto the belay with no rope to absorb it). It — not the absolute distance — drives how harsh the catch is: more rope out cushions the same length of fall. Keep slack down and get the first piece in early to avoid a factor-2 onto the anchor.","inputs":{"rope_out_m":2,"fall_distance_m":4},"severity":"severe — near the factor-2 maximum","fall_factor":2},"meta":{"timestamp":"2026-06-06T15:30:43.023Z","request_id":"9836621a-bd67-4363-a591-ebab7ff789b3"},"status":"ok","message":"Fall factor","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/ground-fall":{"get":{"operationId":"get_v1_ground_fall","tags":["Climbing"],"summary":"Ground / ledge fall check","description":"","parameters":[{"name":"above_pro_m","in":"query","required":true,"description":"Distance above last protection in metres","schema":{"type":"string"},"example":"2"},{"name":"slack_m","in":"query","required":false,"description":"Slack in metres (default 0)","schema":{"type":"string"},"example":"0.5"},{"name":"rope_out_m","in":"query","required":true,"description":"Rope out in metres","schema":{"type":"string"},"example":"12"},{"name":"stretch_pct","in":"query","required":false,"description":"Rope stretch % under load (default 10)","schema":{"type":"string"},"example":"10"},{"name":"clearance_m","in":"query","required":true,"description":"Clearance to ground/ledge in metres","schema":{"type":"string"},"example":"7"}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"note":"Total drop = twice the distance above the last piece, plus slack, plus the rope's stretch (≈10 % of rope out under a hard catch). If that exceeds the clearance to the ground or a ledge, you deck. Low first clips, minimal slack and an attentive belay are what keep the margin positive — count the stretch in, especially near the deck.","decks":false,"inputs":{"slack_m":0.5,"rope_out_m":12,"above_pro_m":2,"clearance_m":7,"stretch_pct":10},"margin_m":1.3,"free_fall_m":4.5,"total_drop_m":5.7,"rope_stretch_m":1.2},"meta":{"timestamp":"2026-06-06T15:30:43.106Z","request_id":"a0aaf160-d7d1-465f-a67e-56a244f753aa"},"status":"ok","message":"Ground fall","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/impact-force":{"get":{"operationId":"get_v1_impact_force","tags":["Climbing"],"summary":"Peak impact force","description":"","parameters":[{"name":"climber_mass_kg","in":"query","required":true,"description":"Climber mass in kg","schema":{"type":"string"},"example":"80"},{"name":"fall_factor","in":"query","required":true,"description":"Fall factor 0-2","schema":{"type":"string"},"example":"1"},{"name":"rope_modulus_kn","in":"query","required":false,"description":"Rope modulus in kN (default 20)","schema":{"type":"string"},"example":"20"}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"note":"Peak impact force from the rope's spring model: F = mg + √((mg)² + 2·mg·k·f), with k the rope modulus (~20 kN for a dynamic single rope) and f the fall factor — so it depends on the fall factor, not the rope length. The top runner sees roughly 1.66× this from the pulley effect at the carabiner. A softer (lower-modulus) rope catches gentler.","inputs":{"fall_factor":1,"climber_mass_kg":80,"rope_modulus_kn":20},"peak_force_n":6441,"peak_force_kn":6.44,"force_on_top_piece_kn":10.69},"meta":{"timestamp":"2026-06-06T15:30:43.193Z","request_id":"6cd878cc-f168-4ae6-b2af-7486852be439"},"status":"ok","message":"Impact force","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":"SI units (m, kg, kN). FF = fall ÷ rope out (max 2); F = mg + √((mg)²+2·mg·k·f) with k≈20 kN; total drop = 2·above-pro + slack + stretch. Educational estimates — not a substitute for proper instruction and judgement.","service":"climbing-api","endpoints":{"GET /v1/meta":"This document.","GET /v1/fall-factor":"Fall factor = fall distance ÷ rope paid out, with severity.","GET /v1/ground-fall":"Whether a fall decks, including slack and rope stretch.","GET /v1/impact-force":"Peak impact force from mass, fall factor and rope modulus."},"description":"Rock-climbing fall maths: the fall factor, the peak impact force a dynamic rope transmits, and whether a fall reaches the ground/ledge."},"meta":{"timestamp":"2026-06-06T15:30:43.278Z","request_id":"53ddd6fb-64b8-460f-9a7a-a4643010ae11"},"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":600,"rps_limit":2,"hard_limit":true},{"slug":"starter","name":"Starter","price_cents_month":495,"monthly_call_quota":14500,"rps_limit":6,"hard_limit":true},{"slug":"pro","name":"Pro","price_cents_month":1640,"monthly_call_quota":90000,"rps_limit":15,"hard_limit":true},{"slug":"mega","name":"Mega","price_cents_month":4940,"monthly_call_quota":300000,"rps_limit":36,"hard_limit":true}],"x-oanor-marketplace-url":"https://www.oanor.com/api/climbing-api"}