{"openapi":"3.1.0","info":{"title":"EXIF API","version":"1.0.0","description":"Extract the hidden metadata baked into a photo. Pass an image URL (we fetch it) or a base64 image and get back its EXIF, GPS, IPTC and XMP data: the camera make and model, lens, software, the capture date/time, full exposure settings (shutter speed, aperture / f-number, ISO, focal length, flash, metering and white balance), orientation, colour space and resolution, plus the GPS location (latitude, longitude, altitude) with a ready Google Maps link — and the complete raw tag map. A dedicated /v1/gps endpoint returns just the geotag. Supports JPEG, TIFF, HEIC and PNG. Parsing runs locally (no third-party service) and nothing is stored. Live. 3 endpoints. Built for photo-management apps, geotagging, digital forensics, copyright/credit checks and image pipelines. Distinct from a basic image-info or resize service. No upstream key.","contact":{"name":"PremiumApi","url":"https://www.oanor.com/by/premiumapi"}},"servers":[{"url":"https://api.oanor.com/exif-api","description":"oanor gateway"}],"tags":[{"name":"EXIF"},{"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/extract":{"get":{"operationId":"get_v1_extract","tags":["EXIF"],"summary":"Extract EXIF/GPS/IPTC/XMP metadata","description":"","parameters":[{"name":"url","in":"query","required":true,"description":"Image URL (or use image= for base64)","schema":{"type":"string"},"example":"https://raw.githubusercontent.com/ianare/exif-samples/master/jpg/gps/DSCN0010.jpg"},{"name":"image","in":"query","required":false,"description":"Base64 image instead of url","schema":{"type":"string"}}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"gps":{"latitude":43.46744833333334,"longitude":11.885126666663888},"raw":{"ISO":64,"Make":"NIKON","Flash":"Flash did not fire, compulsory flash mode","Model":"COOLPIX P6000","Rating":0,"FNumber":5.9,"Contrast":"Normal","Software":"Nikon Transfer 1.1 W","latitude":43.46744833333334,"SceneType":"Directly photographed","Sharpness":"Normal","longitude":11.885126666663888,"ColorSpace":1,"CreateDate":"2008-10-22T14:28:39.000Z","FileSource":"Digital Camera","ModifyDate":"2008-11-01T20:15:07.000Z","Saturation":"Normal","ExifVersion":"2.2","FocalLength":24,"GPSLatitude":[43,28,2.814],"GPSMapDatum":"WGS-84","GainControl":"None","LightSource":"Unknown","Orientation":"Horizontal (normal)","XResolution":300,"YResolution":300,"ExposureMode":"Auto","ExposureTime":0.013333333333333334,"GPSDateStamp":"2008:10:23","GPSLongitude":[11,53,6.45599999],"GPSTimeStamp":"14:27:7.24","InteropIndex":"R98","MeteringMode":"Pattern","WhiteBalance":"Auto","GPSSatellites":"06","CustomRendered":"Normal","ExifImageWidth":640,"GPSAltitudeRef":[0],"GPSLatitudeRef":"N","InteropVersion":[48,49,48,48],"ResolutionUnit":"inches","ExifImageHeight":480,"ExposureProgram":"Normal program","FlashpixVersion":"1.0","GPSLongitudeRef":"E","DateTimeOriginal":"2008-10-22T14:28:39.000Z","DigitalZoomRatio":0,"MaxApertureValue":2.9,"SceneCaptureType":"Standard","YCbCrPositioning":1,"ExposureCompensation":0,"SubjectDistanceRange":"Unknown","ComponentsConfiguration":[1,2,3,0],"FocalLengthIn35mmFormat":112},"image":{"width":640,"height":480,"color_space":1,"x_resolution":300,"y_resolution":300},"camera":{"make":"NIKON","model":"COOLPIX P6000","software":"Nikon Transfer 1.1 W"},"capture":{"iso":64,"flash":"Flash did not fire, compulsory flash mode","datetime":"2008-10-22T14:28:39.000Z","f_number":5.9,"orientation":"Horizontal (normal)","focal_length":24,"exposure_time":0.013333333333333334,"metering_mode":"Pattern","white_balance":"Auto","exposure_program":"Normal program","focal_length_35mm":112},"has_exif":true},"meta":{"timestamp":"2026-06-02T16:52:03.667Z","request_id":"ee0ca688-aab9-4959-910c-7045219f6367"},"status":"ok","message":"Extract image metadata","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/gps":{"get":{"operationId":"get_v1_gps","tags":["EXIF"],"summary":"Extract GPS location only","description":"","parameters":[{"name":"url","in":"query","required":true,"description":"Image URL (or use image= for base64)","schema":{"type":"string"},"example":"https://raw.githubusercontent.com/ianare/exif-samples/master/jpg/gps/DSCN0010.jpg"},{"name":"image","in":"query","required":false,"description":"Base64 image instead of url","schema":{"type":"string"}}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"found":true,"latitude":43.46744833333334,"longitude":11.885126666663888,"google_maps":"https://maps.google.com/?q=43.46744833333334,11.885126666663888"},"meta":{"timestamp":"2026-06-02T16:52:03.805Z","request_id":"1f9ff47a-b773-4418-8d7f-5809ee2d5f5f"},"status":"ok","message":"Extract GPS location","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":{"auth":"none upstream; this gateway requires x-api-key","name":"EXIF API","note":"Extract EXIF, GPS, IPTC and XMP metadata from a photo. Pass ?url= an image URL or ?image= a base64 image. /v1/extract returns camera, lens, exposure, capture, GPS and image fields (plus the raw tag map); /v1/gps returns just the geotag. Supports JPEG, TIFF, HEIC, PNG. Distinct from image-api (dimensions/format/resize). Live, nothing stored.","source":"Local metadata parsing (exifr) — no third-party service, no key","endpoints":3},"meta":{"timestamp":"2026-06-02T16:52:03.917Z","request_id":"805c5404-f02e-48ad-8f44-c5743e10343e"},"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":1680,"rps_limit":2,"hard_limit":true},{"slug":"starter","name":"Starter","price_cents_month":950,"monthly_call_quota":36000,"rps_limit":8,"hard_limit":true},{"slug":"pro","name":"Pro","price_cents_month":2850,"monthly_call_quota":200000,"rps_limit":20,"hard_limit":true},{"slug":"mega","name":"Mega","price_cents_month":6450,"monthly_call_quota":1010000,"rps_limit":50,"hard_limit":true}],"x-oanor-marketplace-url":"https://www.oanor.com/api/exif-api"}