{"openapi":"3.1.0","info":{"title":"Arch Geometry API","version":"1.0.0","description":"Circular-segment arch geometry as an API, computed locally and deterministically — the radius, arc-length and set-out numbers a mason, joiner, stonemason or CAD user lays a segmental arch out with. A segmental arch is an arc of a circle struck through the two springings and the crown: the from-span-rise endpoint takes the span and the rise (the height of the crown above the springing line) and returns the radius = (span²/4 + rise²) ÷ (2·rise), the central angle it subtends, the arc length along the curve, and the segment area of the void below it — flatter arches with a small rise have surprisingly huge radii. The from-radius-angle endpoint inverts it, returning the chord (span), the rise (sagitta), the arc length and the area from a known radius and central angle, the way a curve struck with a trammel or a router on a pivot is described. The setout-ordinates endpoint gives the practical numbers to mark a template: the rise of the arc above a straight base line at equally spaced stations across the span (y = √(R² − x²) − (R − rise)), so you can plot the heights, connect them and cut a plywood former or bend a batten without a giant compass — the ends come out zero at the springings and the middle equals the rise at the crown. Everything is computed locally and deterministically, so it is instant and private. Ideal for masonry and joinery layout tools, stair and window-head design, and CAD and woodworking calculators. Pure local computation — no key, no third-party service, instant. Segmental (up to a semicircle) arcs. 3 compute endpoints. For road curves use a horizontal- or vertical-curve API; for plain shape areas a geometry API.","contact":{"name":"PremiumApi","url":"https://www.oanor.com/by/premiumapi"}},"servers":[{"url":"https://api.oanor.com/arch-api","description":"oanor gateway"}],"tags":[{"name":"Arch"},{"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/from-radius-angle":{"get":{"operationId":"get_v1_from_radius_angle","tags":["Arch"],"summary":"Chord and rise from radius and angle","description":"","parameters":[{"name":"radius_m","in":"query","required":true,"description":"Arc radius (m)","schema":{"type":"string"},"example":"1.25"},{"name":"central_angle_deg","in":"query","required":true,"description":"Central angle subtended (degrees)","schema":{"type":"string"},"example":"106.2602"}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"note":"From a radius and the central angle it subtends: the chord (the span) = 2·R·sin(angle/2), the rise (sagitta) = R·(1 − cos(angle/2)), the arc length = R·angle, and the segment area below the chord. This is the inverse of span-and-rise — useful when the curve is struck from a known radius, as with a trammel or a router on a pivot.","inputs":{"radius_m":1.25,"central_angle_deg":106.2602},"rise_m":0.5,"arc_length_m":2.3182,"chord_span_m":2,"segment_area_m2":0.6989},"meta":{"timestamp":"2026-06-07T08:17:54.914Z","request_id":"9271bc2b-5185-44f5-843a-30ade1117437"},"status":"ok","message":"From radius and 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/from-span-rise":{"get":{"operationId":"get_v1_from_span_rise","tags":["Arch"],"summary":"Radius and arc from span and rise","description":"","parameters":[{"name":"span_m","in":"query","required":true,"description":"Span between springings (m)","schema":{"type":"string"},"example":"2.0"},{"name":"rise_m","in":"query","required":true,"description":"Rise of the crown above springing line (m)","schema":{"type":"string"},"example":"0.5"}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"note":"A segmental arch is an arc of a circle through the two springings and the crown. The radius = (span²/4 + rise²) ÷ (2·rise) — flatter arches (small rise) have huge radii. The central angle subtends the span, the arc length is the curve a mason or joiner works to, and the segment area is the void below the arc. A rise of exactly half the span is a semicircle; beyond that it is more than a semicircle and a different set-out.","inputs":{"rise_m":0.5,"span_m":2},"radius_m":1.25,"arc_length_m":2.3182,"segment_area_m2":0.6989,"central_angle_deg":106.2602},"meta":{"timestamp":"2026-06-07T08:17:55.012Z","request_id":"785dbfb8-88af-4ee0-a5ae-b6a80486b6fc"},"status":"ok","message":"From span and rise","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/setout-ordinates":{"get":{"operationId":"get_v1_setout_ordinates","tags":["Arch"],"summary":"Set-out ordinates for a template","description":"","parameters":[{"name":"span_m","in":"query","required":true,"description":"Span between springings (m)","schema":{"type":"string"},"example":"2.0"},{"name":"rise_m","in":"query","required":true,"description":"Rise of the crown (m)","schema":{"type":"string"},"example":"0.5"},{"name":"divisions","in":"query","required":false,"description":"Number of equal stations (default 8)","schema":{"type":"string"},"example":"4"}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"note":"The set-out ordinates are the height of the arc above the springing line at equally spaced stations across the span: y = √(R² − x²) − (R − rise), with x measured from the centre. Mark these heights up from a straight base line, connect them, and you have the curve to cut a template or bend a batten — the classic way to lay out an arch without a giant compass. The ends are zero (the springings) and the middle equals the rise (the crown).","inputs":{"rise_m":0.5,"span_m":2,"divisions":4},"radius_m":1.25,"ordinates":[{"x_m":-1,"rise_m":0},{"x_m":-0.5,"rise_m":0.3956},{"x_m":0,"rise_m":0.5},{"x_m":0.5,"rise_m":0.3956},{"x_m":1,"rise_m":0}],"station_spacing_m":0.5},"meta":{"timestamp":"2026-06-07T08:17:55.107Z","request_id":"16b58897-9b3e-426a-b70f-c255c140201f"},"status":"ok","message":"Set-out ordinates","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":"Metres, degrees. R = (s²/4 + h²)/(2h); chord = 2R·sin(θ/2); rise = R(1−cos(θ/2)); ordinate y = √(R²−x²) − (R−rise). Rise ≤ half-span (semicircle limit). For road curves use a horizontal/vertical-curve API; for plain shape areas a geometry API.","service":"arch-api","endpoints":{"GET /v1/meta":"This document.","GET /v1/from-span-rise":"Radius, central angle, arc length and segment area from span and rise.","GET /v1/setout-ordinates":"Rise heights at equal stations across the span to mark a template.","GET /v1/from-radius-angle":"Chord, rise, arc length and segment area from radius and central angle."},"description":"Circular-segment arch geometry: radius/arc/area from span and rise, from radius and angle, and set-out ordinates for a template."},"meta":{"timestamp":"2026-06-07T08:17:55.191Z","request_id":"0257159d-5d4c-43c7-8f85-1055ad4d70b0"},"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":7100,"rps_limit":2,"hard_limit":true},{"slug":"starter","name":"Starter","price_cents_month":720,"monthly_call_quota":64000,"rps_limit":6,"hard_limit":true},{"slug":"pro","name":"Pro","price_cents_month":2520,"monthly_call_quota":265000,"rps_limit":15,"hard_limit":true},{"slug":"mega","name":"Mega","price_cents_month":7800,"monthly_call_quota":1240000,"rps_limit":40,"hard_limit":true}],"x-oanor-marketplace-url":"https://www.oanor.com/api/arch-api"}