{"openapi":"3.1.0","info":{"title":"Catenary Cable API","version":"1.0.0","description":"Catenary (hanging-cable) maths as an API, computed locally and deterministically. The sag endpoint solves the exact catenary for a cable hung between two level supports: from the span, the weight per unit length and either the horizontal tension or the sag, it returns the catenary parameter a = H/w, the sag a·(cosh(L/2a) − 1), the cable length 2a·sinh(L/2a), the minimum tension (the horizontal tension at the lowest point) and the maximum tension at the supports (H·cosh(L/2a)), plus the slack over the straight span. The parabolic endpoint gives the shallow-sag parabolic approximation — sag = w·L²/(8·H) — that is standard for overhead utility lines, and converts between sag and tension either way. The length endpoint returns the cable length for a given span and sag, with the parabolic value alongside for comparison. Forces and lengths are unit-agnostic but must be consistent (for example newtons, newtons per metre and metres). Everything is computed locally and deterministically, so it is instant and private. Ideal for power-line and transmission tools, zip-line and rigging apps, suspension and surveying calculators, and physics and engineering education. Pure local computation — no key, no third-party service, instant. Live, nothing stored. 3 endpoints. This is hanging-cable catenary maths; for rigging working load limits use a rigging API and for beam deflection use a beam API.","contact":{"name":"PremiumApi","url":"https://www.oanor.com/by/premiumapi"}},"servers":[{"url":"https://api.oanor.com/catenary-api","description":"oanor gateway"}],"tags":[{"name":"Catenary"},{"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/length":{"get":{"operationId":"get_v1_length","tags":["Catenary"],"summary":"Cable length from span & sag","description":"","parameters":[{"name":"span","in":"query","required":true,"description":"Span L","schema":{"type":"string"},"example":"100"},{"name":"sag","in":"query","required":true,"description":"Sag d","schema":{"type":"string"},"example":"2.5"}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"sag":2.5,"note":"Exact catenary arc length 2a·sinh(L/2a), with the parabolic approximation for comparison.","span":100,"slack":0.16647,"catenary_parameter_a":500.41611,"cable_length_catenary":100.16647,"cable_length_parabolic":100.16667},"meta":{"timestamp":"2026-06-04T01:59:04.054Z","request_id":"a20328f8-5820-4661-865c-82df7d5107b9"},"status":"ok","message":"Cable length from sag","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/parabolic":{"get":{"operationId":"get_v1_parabolic","tags":["Catenary"],"summary":"Parabolic sag approximation","description":"","parameters":[{"name":"span","in":"query","required":true,"description":"Span L","schema":{"type":"string"},"example":"100"},{"name":"weight_per_length","in":"query","required":true,"description":"Weight per length w","schema":{"type":"string"},"example":"10"},{"name":"horizontal_tension","in":"query","required":false,"description":"Horizontal tension H","schema":{"type":"string"},"example":"5000"},{"name":"sag","in":"query","required":false,"description":"Or sag d","schema":{"type":"string"}}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"sag":2.5,"note":"Parabolic approximation — accurate for shallow sag (sag ≲ 10% of span), as used for utility lines.","span":100,"formula":"sag = w·L²/(8·H); length ≈ L + 8·d²/(3·L); Tmax ≈ H + w·d.","max_tension":5025,"cable_length":100.16667,"weight_per_length":10,"horizontal_tension":5000},"meta":{"timestamp":"2026-06-04T01:59:04.154Z","request_id":"81474ecc-1c19-43ee-9407-e0d4103353ab"},"status":"ok","message":"Parabolic sag approximation","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/sag":{"get":{"operationId":"get_v1_sag","tags":["Catenary"],"summary":"Catenary sag, length & tension","description":"","parameters":[{"name":"span","in":"query","required":true,"description":"Horizontal span L","schema":{"type":"string"},"example":"100"},{"name":"weight_per_length","in":"query","required":true,"description":"Weight per unit length w","schema":{"type":"string"},"example":"10"},{"name":"horizontal_tension","in":"query","required":false,"description":"Horizontal tension H (to get sag)","schema":{"type":"string"},"example":"5000"},{"name":"sag","in":"query","required":false,"description":"Or sag d (to get tension)","schema":{"type":"string"}}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"sag":2.50208,"note":"Exact catenary with level supports. Min tension is the horizontal tension at the lowest point; max tension is at the supports.","span":100,"slack":0.16675,"formula":"a = H/w; sag = a(cosh(L/2a) − 1); length = 2a·sinh(L/2a); Tmax = H·cosh(L/2a).","max_tension":5025.0208,"min_tension":5000,"cable_length":100.16675,"weight_per_length":10,"horizontal_tension":5000,"catenary_parameter_a":500,"max_tension_location":"supports"},"meta":{"timestamp":"2026-06-04T01:59:04.226Z","request_id":"db5b29e6-902b-4636-adb6-6ec2688eb743"},"status":"ok","message":"Catenary sag, length & tension","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":"catenary","note":"Catenary (hanging-cable) maths — computed locally and deterministically, no key, no third-party service. Level supports; lengths/forces are unit-agnostic but consistent.","endpoints":["/v1/sag","/v1/parabolic","/v1/length","/v1/meta"]},"meta":{"timestamp":"2026-06-04T01:59:04.310Z","request_id":"c41ad406-ec04-4b14-a25e-f766c9d1f645"},"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":900,"monthly_call_quota":20000,"rps_limit":6,"hard_limit":true},{"slug":"pro","name":"Pro","price_cents_month":2400,"monthly_call_quota":120000,"rps_limit":20,"hard_limit":true},{"slug":"mega","name":"Mega","price_cents_month":7400,"monthly_call_quota":639000,"rps_limit":60,"hard_limit":true}],"x-oanor-marketplace-url":"https://www.oanor.com/api/catenary-api"}