---
title: "Aadhaar QR decode"
method: POST
path: "/verify/aadhar_qr"
tags: ["OCR"]
---

# Aadhaar QR decode

`POST /verify/aadhar_qr`

Decodes an Aadhaar QR from an Aadhaar card image or cropped QR image. Accepts multipart/form-data with exactly one of file (binary image) or image_b64 (base64 image bytes). Requires X-API-KEY and X-Client-ID headers.

## Response `200`

Aadhaar QR decode result. Timeouts after the configured decode window are returned as no-readable-QR failures.

- union
  - AadharQRSuccessResponse
    - `status` string
    - `message` string
    - `data` AadharQRData — Fields decoded from the Aadhaar QR. Exact fields vary based on the QR version and encoded data.
      - `name` string
      - `dob` string
      - `gender` string
      - `address` string
      - `id_number` string
      - `reference_id` string
      - `care_of` string
      - `house` string
      - `street` string
      - `landmark` string
      - `loc` string
      - `vtc` string
      - `po` string
      - `subdist` string
      - `dist` string
      - `state` string
      - `pc` string
      - `e_signed` boolean
      - `photo_present` boolean
      - `photo_preview_base64` string
      - `photo_preview_mime` string
      - `photo_base64` string
      - `photo_mime` string
    - `error_code` string, nullable
    - `quality_warning` string — Optional warning when the image is borderline but decoding succeeds.
    - `tranx_id` string, uuid
    - `timestamp` string, date-time
    - `chargeble` string
    - `user_consent` string
  - AadharQRFailureResponse
    - `status` string
    - `message` string
    - `data` AadharQRFailureData
      - `failure_reason` string
      - `failure_reasons` string[]
      - `diagnostics` object — Optional image diagnostics returned when a QR is not readable.
    - `error_code` string
    - `tranx_id` string, uuid
    - `timestamp` string, date-time

## Other responses

- `400` — Bad request - send exactly one image input, or provide a supported image format under 11 MB.
- `401` — Unauthorized - missing or invalid API credentials.
- `422` — Validation error - request body failed schema validation.
- `500` — Internal server error or upstream service credentials not configured.

---

[API](https://skmtc.dev/idto/apis/verification-api.md) · [All operations](https://skmtc.dev/idto/apis/verification-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/idto/verification-api/revisions/e3d57dab8db4/schema)
