{"openapi":"3.1.0","info":{"title":"Geo Distance API","version":"1.0.0","description":"Great-circle (as-the-crow-flies) navigation maths between latitude/longitude points. The distance endpoint returns the straight-line distance in metres, kilometres, miles and nautical miles, plus the initial and final compass bearing and the nearest 16-point compass direction. The destination endpoint computes where you end up from a start point, a bearing and a distance, and the midpoint endpoint finds the great-circle midpoint between two points. Perfect for proximity and radius search, geofencing, flight and shipping estimates, \"distance from me\" features and mapping. Pure local computation — no key, no third-party service, instant. These are straight-line distances on a spherical earth, not road routes. Live, nothing stored. 4 endpoints. Distinct from road routing, GeoJSON geometry measurement and coordinate-format conversion.","contact":{"name":"PremiumApi","url":"https://www.oanor.com/by/premiumapi"}},"servers":[{"url":"https://api.oanor.com/geodistance-api","description":"oanor gateway"}],"tags":[{"name":"Geo"},{"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/destination":{"get":{"operationId":"get_v1_destination","tags":["Geo"],"summary":"Destination from start + bearing","description":"","parameters":[{"name":"lat","in":"query","required":true,"description":"Start latitude","schema":{"type":"string"},"example":"51.5074"},{"name":"lng","in":"query","required":true,"description":"Start longitude","schema":{"type":"string"},"example":"-0.1278"},{"name":"bearing","in":"query","required":true,"description":"Bearing in degrees","schema":{"type":"string"},"example":"148"},{"name":"distance","in":"query","required":true,"description":"Distance","schema":{"type":"string"},"example":"343.5"},{"name":"unit","in":"query","required":false,"description":"m|km|mi|nm (default km)","schema":{"type":"string"},"example":"km"}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"lat":48.860159,"lng":2.360012,"unit":"km","bearing":148,"distance":343.5},"meta":{"timestamp":"2026-06-03T01:09:45.010Z","request_id":"3a8b5d56-60f7-44ae-9ce4-377439047b4e"},"status":"ok","message":"Destination point","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/distance":{"get":{"operationId":"get_v1_distance","tags":["Geo"],"summary":"Distance + bearing between points","description":"","parameters":[{"name":"lat1","in":"query","required":true,"description":"Start latitude","schema":{"type":"string"},"example":"51.5074"},{"name":"lng1","in":"query","required":true,"description":"Start longitude","schema":{"type":"string"},"example":"-0.1278"},{"name":"lat2","in":"query","required":true,"description":"End latitude","schema":{"type":"string"},"example":"48.8566"},{"name":"lng2","in":"query","required":true,"description":"End longitude","schema":{"type":"string"},"example":"2.3522"}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"miles":213.476134,"meters":343556.535,"compass":"SSE","kilometers":343.556535,"final_bearing":150.0211,"nautical_miles":185.505688,"initial_bearing":148.1156},"meta":{"timestamp":"2026-06-03T01:09:45.113Z","request_id":"926aa176-4c42-4444-b0b2-a2b83c945d1f"},"status":"ok","message":"Distance + bearing","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":["Geo"],"summary":"Midpoint between two points","description":"","parameters":[{"name":"lat1","in":"query","required":true,"description":"Latitude 1","schema":{"type":"string"},"example":"51.5074"},{"name":"lng1","in":"query","required":true,"description":"Longitude 1","schema":{"type":"string"},"example":"-0.1278"},{"name":"lat2","in":"query","required":true,"description":"Latitude 2","schema":{"type":"string"},"example":"48.8566"},{"name":"lng2","in":"query","required":true,"description":"Longitude 2","schema":{"type":"string"},"example":"2.3522"}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"lat":50.188595,"lng":1.146618},"meta":{"timestamp":"2026-06-03T01:09:45.194Z","request_id":"116d6845-751d-419f-ab8c-1f5323a37f86"},"status":"ok","message":"Midpoint","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":{"name":"Geo Distance API","notes":"Distances are great-circle (spherical earth), not road distances — for driving routes use a routing API. Nothing is stored.","version":"v1","endpoints":[{"path":"/v1/distance","params":{"lat1":"required","lat2":"required","lng1":"required","lng2":"required"},"returns":"distance (m/km/mi/nm), initial & final bearing, compass point"},{"path":"/v1/destination","params":{"lat":"required","lng":"required","unit":"m|km|mi|nm (default km)","bearing":"degrees (required)","distance":"required"},"returns":"the destination lat/lng"},{"path":"/v1/midpoint","params":{"lat1":"required","lat2":"required","lng1":"required","lng2":"required"},"returns":"the great-circle midpoint"},{"path":"/v1/meta","params":[],"returns":"this document"}],"description":"Great-circle navigation maths between latitude/longitude points — the straight-line (as-the-crow-flies) distance, the initial and final compass bearing, the destination point from a start, bearing and distance, and the midpoint between two points. Pure local, no key."},"meta":{"timestamp":"2026-06-03T01:09:45.285Z","request_id":"3ec8926e-7716-4318-942e-48ce8b016761"},"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":1045,"rps_limit":2,"hard_limit":true},{"slug":"starter","name":"Starter","price_cents_month":85,"monthly_call_quota":8850,"rps_limit":8,"hard_limit":true},{"slug":"pro","name":"Pro","price_cents_month":2075,"monthly_call_quota":139500,"rps_limit":20,"hard_limit":true},{"slug":"mega","name":"Mega","price_cents_month":5875,"monthly_call_quota":735000,"rps_limit":50,"hard_limit":true}],"x-oanor-marketplace-url":"https://www.oanor.com/api/geodistance-api"}