{"openapi":"3.1.0","info":{"title":"Optical Resolution API","version":"1.0.0","description":"Optical resolution by the Rayleigh criterion as an API, computed locally and deterministically. The angular endpoint gives the smallest angle two points can be apart and still be told apart through a circular aperture, θ = 1.22·λ/D — the diffraction limit set by the wavelength and the aperture diameter — in radians, degrees, arcminutes and arcseconds (a 100 mm telescope resolves about 1.4 arcseconds in green light), and solves the aperture needed for a target resolution. The distance endpoint turns that angle into a real separation at a distance, s = θ·L = 1.22·λ·L/D — how far apart two objects must be to be resolved at a given range. The microscope endpoint computes resolving power from the numerical aperture: the Rayleigh limit d = 0.61·λ/NA and the Abbe limit d = λ/(2·NA), with NA = n·sin(θ) from a refractive index and half-angle, and the maximum useful magnification. Wavelength defaults to 550 nm (visible) and can be set in metres, nanometres or micrometres. Everything is computed locally and deterministically, so it is instant and private. Ideal for astronomy, telescope and binocular tools, microscopy and imaging-system design, camera and optics apps, and physics education. Pure local computation — no key, no third-party service, instant. Live, nothing stored. 3 endpoints. This is the diffraction-limited resolving power; for thin-lens imaging use a lens API and for slit and grating diffraction use a diffraction API.","contact":{"name":"PremiumApi","url":"https://www.oanor.com/by/premiumapi"}},"servers":[{"url":"https://api.oanor.com/resolution-api","description":"oanor gateway"}],"tags":[{"name":"Resolution"},{"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/angular":{"get":{"operationId":"get_v1_angular","tags":["Resolution"],"summary":"Rayleigh angular resolution","description":"","parameters":[{"name":"wavelength_nm","in":"query","required":false,"description":"Wavelength (nm, default 550)","schema":{"type":"string"},"example":"550"},{"name":"aperture_diameter","in":"query","required":false,"description":"Aperture diameter D (m)","schema":{"type":"string"},"example":"0.1"},{"name":"angle_rad","in":"query","required":false,"description":"Or an angle (rad) to solve the aperture","schema":{"type":"string"}}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"formula":"θ = 1.22·λ/D (Rayleigh criterion, circular aperture).","angle_deg":0.0003844547,"angle_rad":6.71e-6,"angle_arcmin":0.02306728,"angle_arcsec":1.384037,"wavelength_nm":550,"aperture_diameter_m":0.1},"meta":{"timestamp":"2026-06-04T10:18:43.185Z","request_id":"46e3a44e-ef3f-4d26-981e-e9225a017818"},"status":"ok","message":"Rayleigh angular resolution","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":["Resolution"],"summary":"Resolvable separation at a distance","description":"","parameters":[{"name":"wavelength_nm","in":"query","required":false,"description":"Wavelength (nm, default 550)","schema":{"type":"string"},"example":"550"},{"name":"aperture_diameter","in":"query","required":true,"description":"Aperture diameter D (m)","schema":{"type":"string"},"example":"0.1"},{"name":"distance","in":"query","required":true,"description":"Distance L (m)","schema":{"type":"string"},"example":"1000"}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"formula":"s = θ·L = 1.22·λ·L/D (small-angle resolvable separation).","distance_m":1000,"wavelength_nm":550,"aperture_diameter_m":0.1,"angular_resolution_rad":6.71e-6,"resolvable_separation_m":0.00671,"resolvable_separation_mm":6.71},"meta":{"timestamp":"2026-06-04T10:18:43.294Z","request_id":"dae56398-d692-4f2b-b766-6f5497fc3e3a"},"status":"ok","message":"Resolvable separation at a distance","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/microscope":{"get":{"operationId":"get_v1_microscope","tags":["Resolution"],"summary":"Resolving power via NA","description":"","parameters":[{"name":"wavelength_nm","in":"query","required":false,"description":"Wavelength (nm, default 550)","schema":{"type":"string"},"example":"550"},{"name":"numerical_aperture","in":"query","required":false,"description":"Numerical aperture NA","schema":{"type":"string"},"example":"1.4"},{"name":"refractive_index","in":"query","required":false,"description":"Or refractive index n","schema":{"type":"string"}},{"name":"half_angle","in":"query","required":false,"description":"And half-angle (deg)","schema":{"type":"string"}}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"formula":"Rayleigh d = 0.61·λ/NA; Abbe d = λ/(2·NA); NA = n·sin(θ).","wavelength_nm":550,"abbe_resolution_nm":196.4286,"numerical_aperture":1.4,"rayleigh_resolution_m":2.39643e-7,"rayleigh_resolution_nm":239.6429,"useful_magnification_max":1400},"meta":{"timestamp":"2026-06-04T10:18:43.374Z","request_id":"006ef7d0-de07-43f5-b320-17c565121ba1"},"status":"ok","message":"Resolving power via NA","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":"resolution","note":"Optical resolution (Rayleigh criterion) — computed locally and deterministically, no key, no third-party service.","defaults":{"wavelength_nm":550},"endpoints":["/v1/angular","/v1/distance","/v1/microscope","/v1/meta"]},"meta":{"timestamp":"2026-06-04T10:18:43.450Z","request_id":"51d2f452-6923-47a7-a67e-f1b3f66a5932"},"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":3000,"rps_limit":2,"hard_limit":true},{"slug":"starter","name":"Starter","price_cents_month":500,"monthly_call_quota":40000,"rps_limit":5,"hard_limit":true},{"slug":"pro","name":"Pro","price_cents_month":1500,"monthly_call_quota":250000,"rps_limit":15,"hard_limit":true},{"slug":"mega","name":"Mega","price_cents_month":4900,"monthly_call_quota":1520000,"rps_limit":40,"hard_limit":true}],"x-oanor-marketplace-url":"https://www.oanor.com/api/resolution-api"}