{"openapi":"3.1.0","info":{"title":"Photography Calculator API","version":"1.0.0","description":"Camera and optics maths as an API. The depth-of-field endpoint computes the near and far limits of sharp focus, the total depth of field and the hyperfocal distance from a focal length, aperture and focus distance, using the circle of confusion for your sensor format — full-frame, APS-C, Micro Four Thirds, 1-inch, medium format, Super 35 and more, or your own value. The field-of-view endpoint gives the horizontal, vertical and diagonal angle of view for a focal length on a given sensor, plus the crop factor and the 35 mm-equivalent focal length. The exposure endpoint computes the exposure value (EV) from aperture, shutter speed and ISO, and can also solve for the shutter speed or aperture that hits a target EV. Everything is computed locally and deterministically, so it is instant and private. Ideal for photography and videography apps, camera and lens tools, focus-stacking and landscape planning, and teaching exposure and optics. Pure local computation — no key, no third-party service, instant. Live, nothing stored. 4 endpoints. This computes camera optics; for reading EXIF metadata from photo files use an EXIF API.","contact":{"name":"PremiumApi","url":"https://www.oanor.com/by/premiumapi"}},"servers":[{"url":"https://api.oanor.com/photography-api","description":"oanor gateway"}],"tags":[{"name":"Photography"},{"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/depth-of-field":{"get":{"operationId":"get_v1_depth_of_field","tags":["Photography"],"summary":"Depth of field + hyperfocal","description":"","parameters":[{"name":"focal_length","in":"query","required":true,"description":"mm","schema":{"type":"string"},"example":"50"},{"name":"aperture","in":"query","required":true,"description":"f-number","schema":{"type":"string"},"example":"8"},{"name":"distance","in":"query","required":true,"description":"Focus distance (m)","schema":{"type":"string"},"example":"5"},{"name":"sensor","in":"query","required":false,"description":"Sensor format","schema":{"type":"string"},"example":"full-frame"}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"sensor":"full-frame","aperture":8,"distance_m":5,"far_limit_m":9.2121,"hyperfocal_m":10.826,"near_limit_m":3.4311,"focal_length_mm":50,"depth_of_field_m":5.781,"in_focus_to_infinity":false,"circle_of_confusion_mm":0.029},"meta":{"timestamp":"2026-06-03T17:42:06.329Z","request_id":"92b43336-73bd-4c2a-b50d-e8cd873a929d"},"status":"ok","message":"Depth of field","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/exposure":{"get":{"operationId":"get_v1_exposure","tags":["Photography"],"summary":"Exposure value (EV)","description":"","parameters":[{"name":"aperture","in":"query","required":false,"description":"f-number","schema":{"type":"string"},"example":"8"},{"name":"shutter","in":"query","required":false,"description":"Seconds","schema":{"type":"string"},"example":"0.004"},{"name":"iso","in":"query","required":false,"description":"ISO (default 100)","schema":{"type":"string"},"example":"100"},{"name":"ev","in":"query","required":false,"description":"Or a target EV","schema":{"type":"string"}}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"iso":100,"note":"EV100 = log2(N²/t); the EV at your ISO accounts for sensitivity","ev100":13.966,"aperture":8,"ev_at_iso":13.966,"shutter_s":0.004},"meta":{"timestamp":"2026-06-03T17:42:06.441Z","request_id":"23bc4f71-f9c2-4842-9d08-40a692c35667"},"status":"ok","message":"Exposure","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/field-of-view":{"get":{"operationId":"get_v1_field_of_view","tags":["Photography"],"summary":"Angle of view + crop factor","description":"","parameters":[{"name":"focal_length","in":"query","required":true,"description":"mm","schema":{"type":"string"},"example":"50"},{"name":"sensor","in":"query","required":false,"description":"Sensor format","schema":{"type":"string"},"example":"full-frame"}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"sensor":"full-frame","crop_factor":1,"diagonal_deg":46.793,"vertical_deg":26.991,"horizontal_deg":39.598,"focal_length_mm":50,"equivalent_focal_length_35mm_mm":50},"meta":{"timestamp":"2026-06-03T17:42:06.583Z","request_id":"7aa0df48-b349-486d-a399-5352ff7152a7"},"status":"ok","message":"Field of view","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":"Photography Calculator API","notes":"Hyperfocal H = f²/(N·c) + f. EV100 = log2(N²/t). Distances in metres, focal length in mm, shutter in seconds. Nothing is stored.","sensors":["full-frame","aps-c","aps-c-canon","micro-four-thirds","1-inch","medium-format","super-35"],"version":"v1","endpoints":[{"path":"/v1/depth-of-field","params":{"coc":"circle of confusion mm (optional)","sensor":"sensor format (default full-frame)","aperture":"f-number","distance":"focus distance in metres","focal_length":"mm"},"returns":"near/far limits, DoF and hyperfocal distance"},{"path":"/v1/field-of-view","params":{"sensor":"sensor format","focal_length":"mm"},"returns":"angle of view, crop factor and 35mm-equivalent focal length"},{"path":"/v1/exposure","params":{"ev":"or a target EV with one of aperture/shutter","iso":"ISO (default 100)","shutter":"seconds","aperture":"f-number"},"returns":"the exposure value (EV)"},{"path":"/v1/meta","params":[],"returns":"this document"}],"description":"Camera and optics maths as an API. The depth-of-field endpoint computes the near and far limits of sharp focus, the total depth of field and the hyperfocal distance from a focal length, aperture and focus distance, using the circle of confusion for your sensor format (full-frame, APS-C, Micro Four Thirds, 1-inch, medium format and more — or your own). The field-of-view endpoint gives the horizontal, vertical and diagonal angle of view for a focal length on a given sensor, plus the crop factor and the 35 mm-equivalent focal length. The exposure endpoint computes the exposure value (EV) from aperture, shutter speed and ISO, and can also solve for the shutter or aperture that hits a target EV. Everything is computed locally and deterministically, so it is instant and private. Ideal for photography and videography apps, camera and lens tools, focus-stacking and landscape planning, and teaching exposure. Pure local computation — no key, no third-party service, instant. Live, nothing stored. 4 endpoints. This computes camera optics; for reading EXIF metadata from photos use an EXIF API."},"meta":{"timestamp":"2026-06-03T17:42:06.676Z","request_id":"17fea7cd-97bf-4d3c-9967-572731ee8bc5"},"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":7935,"rps_limit":2,"hard_limit":true},{"slug":"starter","name":"Starter","price_cents_month":945,"monthly_call_quota":17450,"rps_limit":8,"hard_limit":true},{"slug":"pro","name":"Pro","price_cents_month":2935,"monthly_call_quota":225500,"rps_limit":20,"hard_limit":true},{"slug":"mega","name":"Mega","price_cents_month":6735,"monthly_call_quota":1170000,"rps_limit":50,"hard_limit":true}],"x-oanor-marketplace-url":"https://www.oanor.com/api/photography-api"}