Skip to content
GET /v1/sag

Catenary sag, length & tension

Try it live

10 free calls per day — no sign-up, no API key. Goes through the oanor gateway.

Custom headers (optional)
api.oanor.com/catenary-api

It works. Grab an API key and use it in your project.

Get an API key

Code snippets

curl "https://api.oanor.com/catenary-api/v1/sag" \
  -H "x-oanor-key: oanor_test_..."
await fetch("https://api.oanor.com/catenary-api/v1/sag", {
  headers: { "x-oanor-key": "oanor_test_..." }
});
$ch = curl_init("https://api.oanor.com/catenary-api/v1/sag");
curl_setopt($ch, CURLOPT_HTTPHEADER, ["x-oanor-key: oanor_test_..."]);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$out = curl_exec($ch);
import requests
requests.get(
    "https://api.oanor.com/catenary-api/v1/sag",
    headers={"x-oanor-key": "oanor_test_..."}
)

Example response

A real response from this endpoint, captured by the latest health check.

{
    "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
}