Read a QR code from a picture

Point it at a screenshot or a photo and get the contents back as text.

Drop a file here, or .

.png · .jpg · .webp · .gif · .tiff · up to 4 MB · processed in memory and never stored · or paste with Ctrl+V

2 credits

What it does

Also called: read a qr code from a picture · decode a qr code image · what does this qr code say.

Use it from your own code

The same endpoint this page calls — no daily cap, 2 credits a call either way.

POST /v1/codes/qr-decode

curl -X POST "$DOATHING_API/v1/codes/qr-decode" \
  -H "x-api-key: $DOATHING_KEY" \
  -H "content-type: application/json" \
  -d '{"file": {"filename": "screenshot.png", "content_type": "image/png", "data_b64": "<base64>"}}'

Point it at a screenshot or a photo and get the contents back as text.

Detect and decode QR codes present in an uploaded image, returning contents and positions.

Input

Send a file object with base64 data_b64, its content_type and a filename. Accepted types: image/png, image/jpeg, image/webp, image/gif, image/tiff.

The declared type is not trusted — the bytes are sniffed and a contradiction is rejected rather than corrected.

Response

The result carries your remaining balance alongside it, so you can track spend without a second call.

{
  "codes": [
    {
      "text": "https://doathingplease.com",
      "format": "QRCode",
      "position": {
        "top_left": {
          "x": 32,
          "y": 32
        }
      }
    }
  ],
  "count": 1,
  "request_id": "37f01edb-0163-42a1-ac51-0acaef979800",
  "credits_remaining": 96
}

Cost

2 credits per call, whether it is run from the site or from the API — the credential differs, the price does not. A new account starts with 20 credits.

A rejected request still costs a credit: the authorizer decrements before the tool validates. A call rejected for a missing or invalid key is free.