# QR Code Reader API
> Read (decode) a QR code from an image — the inverse of a QR generator. Pass an image URL (we fetch it) or a base64 image (a data-URI or raw base64) and get back the decoded text or URL, the QR version and the corner coordinates of the code within the image. PNG, JPEG, BMP, TIFF and GIF are supported (up to 10 MB); large images are downscaled automatically so decoding stays fast. Decoding runs locally (no third-party scan service) and nothing is stored. Every call is live. 2 endpoints. Built for scanning uploaded QR codes, processing screenshots and documents, ticket and coupon validation, and back-end automation. 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/qrdecode-api/..."
```

## Pricing
- **Free** (Free) — 1,750 calls/Mo, 2 req/s
- **Starter** ($9/Mo) — 38,000 calls/Mo, 8 req/s
- **Pro** ($30/Mo) — 210,000 calls/Mo, 20 req/s
- **Mega** ($65/Mo) — 1,040,000 calls/Mo, 50 req/s

## Endpoints

### QR

#### `GET /v1/decode` — Decode a QR code from an image

**Parameters:**
- `image` (query, required, string) — Base64 image (data-URI or raw) — or use url Example: `iVBORw0KGgoAAAANSUhEUgAAAHgAAAB4AQMAAAADqqSRAAAABlBMVEX///8AAABVwtN+AAAACXBIWXMAAA7EAAAOxAGVKw4bAAAAxElEQVQ4jbWUTQrEIAyFH7hw6RE8ihcrWOjFPIpHcNlFIZOfDnS20yQLyVfBV/NMQBJAp2HZWz4BtExXGZr5c6XVVM+yEM60F09GjWOtz0wLz3r5sbqa51aefjuyRd3xE/8zn7ka8f83FfHniTLy7EQnuEgB3G8pzmi85rMeiz8mOb9Lf3ozuvTPJpdIAayh9+Hla7Ij3+8x3U31mq1r6sUivBHAOl/EZNQjkFlM6+PEkPcYwrB5pT4sfzZ/ZZ5n6y9f/gBI+a9yCkn8CAAAAABJRU5ErkJggg==`
- `url` (query, optional, string) — Image URL to fetch instead of base64

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/qrdecode-api/v1/decode?image=iVBORw0KGgoAAAANSUhEUgAAAHgAAAB4AQMAAAADqqSRAAAABlBMVEX%2F%2F%2F8AAABVwtN%2BAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAAxElEQVQ4jbWUTQrEIAyFH7hw6RE8ihcrWOjFPIpHcNlFIZOfDnS20yQLyVfBV%2FNMQBJAp2HZWz4BtExXGZr5c6XVVM%2ByEM60F09GjWOtz0wLz3r5sbqa51aefjuyRd3xE%2F8zn7ka8f83FfHniTLy7EQnuEgB3G8pzmi85rMeiz8mOb9Lf3ozuvTPJpdIAayh9%2BHla7Ij3%2B8x3U31mq1r6sUivBHAOl%2FEZNQjkFlM6%2BPEkPcYwrB5pT4sfzZ%2FZZ5n6y9f%2FgBI%2Ba9yCkn8CAAAAABJRU5ErkJggg%3D%3D"
```

**Response:**
```json
{
    "data": {
        "data": "OANOR",
        "bytes": 5,
        "found": true,
        "image": {
            "width": 120,
            "height": 120
        },
        "format": "QR_CODE",
        "version": 1,
        "location": {
            "topLeft": {
                "x": -0.4999999999999951,
                "y": -0.4999999999999951
            },
            "topRight": {
                "x": 119.5,
                "y": -0.4999999999999984
            },
            "bottomLeft": {
                "x": -0.4999999999999984,
                "y": 119.5
            },
            "bottomRight": {
                "x": 119.50000000000003,
                "y": 119.50000000000003
            }
        }
    },
    "meta": {
        "timestamp": "2026-06-02T16:52:04.749Z",
        "request_id": "2340e116-8547-432d-a5a8-e64b994bd2db"
    },
    "status": "ok",
    "message": "Decode a QR code from an image",
    "success": true
}
```

### Meta

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

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

**Response:**
```json
{
    "data": {
        "auth": "none upstream; this gateway requires x-api-key",
        "name": "QR Code Reader API",
        "note": "Decode a QR code from an image. Pass ?url= an image URL, or ?image= a base64 image (data-URI or raw). Returns the decoded text, the QR version and the corner locations. Supports PNG, JPEG, BMP, TIFF and GIF (max 10 MB). The inverse of qr-api (which generates QR codes). Live, nothing stored.",
        "source": "Local decode (Jimp + jsQR) — no third-party decode service, no key",
        "endpoints": 2
    },
    "meta": {
        "timestamp": "2026-06-02T16:52:04.859Z",
        "request_id": "24c60e38-ce07-4457-afad-9a5630a5bf09"
    },
    "status": "ok",
    "message": "Meta",
    "success": true
}
```


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