# EXIF API
> 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.

## Authentication
All requests require your oanor API key in the `x-oanor-key` header. Get one at https://www.oanor.com/developer/keys.

```bash
curl -H "x-oanor-key: oanor_live_…" "https://api.oanor.com/exif-api/..."
```

## Pricing
- **Free** (Free) — 1,680 calls/Mo, 2 req/s
- **Starter** ($10/Mo) — 36,000 calls/Mo, 8 req/s
- **Pro** ($29/Mo) — 200,000 calls/Mo, 20 req/s
- **Mega** ($65/Mo) — 1,010,000 calls/Mo, 50 req/s

## Endpoints

### EXIF

#### `GET /v1/extract` — Extract EXIF/GPS/IPTC/XMP metadata

**Parameters:**
- `url` (query, required, string) — Image URL (or use image= for base64) Example: `https://raw.githubusercontent.com/ianare/exif-samples/master/jpg/gps/DSCN0010.jpg`
- `image` (query, optional, string) — Base64 image instead of url

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/exif-api/v1/extract?url=https%3A%2F%2Fraw.githubusercontent.com%2Fianare%2Fexif-samples%2Fmaster%2Fjpg%2Fgps%2FDSCN0010.jpg"
```

**Response:**
```json
{
    "data": {
        "gps": {
            "speed": null,
            "altitude": null,
            "latitude": 43.46744833333334,
            "direction": null,
            "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,
          
…(truncated, see openapi.json for full schema)
```

#### `GET /v1/gps` — Extract GPS location only

**Parameters:**
- `url` (query, required, string) — Image URL (or use image= for base64) Example: `https://raw.githubusercontent.com/ianare/exif-samples/master/jpg/gps/DSCN0010.jpg`
- `image` (query, optional, string) — Base64 image instead of url

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/exif-api/v1/gps?url=https%3A%2F%2Fraw.githubusercontent.com%2Fianare%2Fexif-samples%2Fmaster%2Fjpg%2Fgps%2FDSCN0010.jpg"
```

**Response:**
```json
{
    "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
}
```

### Meta

#### `GET /v1/meta` — Spec

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/exif-api/v1/meta"
```

**Response:**
```json
{
    "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
}
```


---
Marketplace page: https://www.oanor.com/api/exif-api
OpenAPI spec: https://www.oanor.com/api/exif-api/openapi.json
