{"openapi":"3.1.0","info":{"title":"Fresnel Zone API","version":"1.0.0","description":"Fresnel-zone and line-of-sight clearance maths for radio-link planning as an API, computed locally and deterministically. The radius endpoint computes the Fresnel-zone radius at any point along a path, rₙ = √(n·λ·d1·d2/(d1+d2)) with λ = c/f, together with the wavelength and the 60 % clearance that a near-free-space link needs. The midpoint endpoint gives the widest radius — the zone is fattest at the path midpoint — and its 60 % clearance, the figure you size antenna heights against. The earthbulge endpoint adds the earth-curvature bulge, h = d1·d2/(12.75·k) with k ≈ 4/3 for a standard atmosphere, and combines it with the Fresnel clearance into a total obstruction clearance for the path. Distances are in kilometres, frequency in gigahertz, radii in metres. Everything is computed locally and deterministically, so it is instant and private. Ideal for wireless, WISP, microwave-backhaul, LoRa and amateur-radio app developers, link-planning and coverage tools, and RF engineering education. Pure local computation — no key, no third-party service, instant. Live, nothing stored. 3 endpoints. This is Fresnel-zone & line-of-sight clearance; for free-space path loss and link budget use a path-loss API and for antenna gain use an antenna API.","contact":{"name":"PremiumApi","url":"https://www.oanor.com/by/premiumapi"}},"servers":[{"url":"https://api.oanor.com/fresnel-api","description":"oanor gateway"}],"tags":[{"name":"Fresnel"},{"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/earthbulge":{"get":{"operationId":"get_v1_earthbulge","tags":["Fresnel"],"summary":"Earth-curvature bulge","description":"","parameters":[{"name":"distance1","in":"query","required":true,"description":"Distance from one end (km)","schema":{"type":"string"},"example":"5"},{"name":"distance2","in":"query","required":true,"description":"Distance from the other end (km)","schema":{"type":"string"},"example":"5"},{"name":"k_factor","in":"query","required":false,"description":"Earth-radius factor k (default 4/3)","schema":{"type":"string"},"example":"1.333"},{"name":"frequency","in":"query","required":false,"description":"Frequency (GHz) for total clearance","schema":{"type":"string"},"example":"2.4"}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"note":"Earth bulge h = d1·d2/(12.75·k), k≈4/3 for standard atmosphere. Total clearance ≈ earth bulge + 60 % of the first Fresnel zone.","inputs":{"k_factor":1.333,"distance1_km":5,"distance2_km":5},"earth_bulge_m":1.47096,"frequency_ghz":2.4,"fresnel_radius_m":17.67155,"total_clearance_m":12.07389},"meta":{"timestamp":"2026-06-04T18:38:10.763Z","request_id":"415532f5-07b9-46cc-99d9-76ecdc720c0b"},"status":"ok","message":"Earth bulge","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/midpoint":{"get":{"operationId":"get_v1_midpoint","tags":["Fresnel"],"summary":"Widest radius & clearance","description":"","parameters":[{"name":"distance","in":"query","required":true,"description":"Total path length (km)","schema":{"type":"string"},"example":"10"},{"name":"frequency","in":"query","required":true,"description":"Frequency (GHz)","schema":{"type":"string"},"example":"2.4"},{"name":"zone","in":"query","required":false,"description":"Fresnel zone number n","schema":{"type":"string"},"example":"1"}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"note":"The Fresnel zone is widest at the midpoint. Plan antenna heights so the line of sight clears obstacles by ≥ 60 % of this radius.","inputs":{"zone":1,"distance_km":10,"frequency_ghz":2.4},"wavelength_m":0.124914,"clearance_60pct_m":10.60293,"max_fresnel_radius_m":17.67155},"meta":{"timestamp":"2026-06-04T18:38:10.851Z","request_id":"fdc99631-6f48-45df-b97f-60a7d6027b13"},"status":"ok","message":"Midpoint clearance","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/radius":{"get":{"operationId":"get_v1_radius","tags":["Fresnel"],"summary":"Fresnel radius at a point","description":"","parameters":[{"name":"distance1","in":"query","required":true,"description":"Distance from one end (km)","schema":{"type":"string"},"example":"5"},{"name":"distance2","in":"query","required":true,"description":"Distance from the other end (km)","schema":{"type":"string"},"example":"5"},{"name":"frequency","in":"query","required":true,"description":"Frequency (GHz)","schema":{"type":"string"},"example":"2.4"},{"name":"zone","in":"query","required":false,"description":"Fresnel zone number n","schema":{"type":"string"},"example":"1"}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"note":"rₙ = √(n·λ·d1·d2/(d1+d2)). Keep at least 60 % of the first zone clear of obstacles for a reliable link.","inputs":{"zone":1,"distance1_km":5,"distance2_km":5,"frequency_ghz":2.4},"wavelength_m":0.124914,"fresnel_radius_m":17.67155,"clearance_60pct_m":10.60293},"meta":{"timestamp":"2026-06-04T18:38:10.986Z","request_id":"32f5b63e-3bd2-4688-a55f-28a50c1bfe81"},"status":"ok","message":"Fresnel radius","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":"Distances in km, frequency in GHz, radii in m. k-factor ≈ 4/3 for a standard atmosphere. Keep ≥ 60 % of the first zone clear for a near-free-space link.","service":"fresnel-api","formulae":{"radius":"rₙ = √(n·λ·d1·d2/(d1+d2))","clearance":"60 % of the first Fresnel zone","earth_bulge":"h = d1·d2/(12.75·k)"},"endpoints":{"GET /v1/meta":"This document.","GET /v1/radius":"Fresnel-zone radius at a point a distance d1/d2 from the ends.","GET /v1/midpoint":"Maximum Fresnel radius at the path midpoint and 60% clearance.","GET /v1/earthbulge":"Earth-curvature bulge and total obstruction clearance for a path."},"description":"Fresnel-zone and line-of-sight calculator for radio links: zone radius at a point, the widest (midpoint) radius with 60% clearance, and earth-curvature bulge."},"meta":{"timestamp":"2026-06-04T18:38:11.094Z","request_id":"ef7e2325-a46e-412c-81a9-ef0b2fdcf194"},"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":5,"hard_limit":true},{"slug":"pro","name":"Pro","price_cents_month":2400,"monthly_call_quota":120000,"rps_limit":15,"hard_limit":true},{"slug":"mega","name":"Mega","price_cents_month":7500,"monthly_call_quota":600000,"rps_limit":40,"hard_limit":true}],"x-oanor-marketplace-url":"https://www.oanor.com/api/fresnel-api"}