National Health AuthorityNHA Docs

Command Palette

Search for a command to run...

ABHA Login

Verify an existing ABHA by mobile number, Aadhaar number, ABHA number, ABHA address, or Find ABHA search.

ABHA login returns a user token. Use that token as X-token for profile APIs.

Version and host differences

The Postman collection mixes v3 and v3.1 login paths. It also has malformed Find ABHA hosts in 2 files. This page keeps the exact payload fields and uses the official sandbox host.

Mandatory login methods

MethodStatusMain endpoints
Mobile numberMandatory/profile/login/request/otp, /profile/login/verify, /profile/login/verify/user
Aadhaar numberMandatory/v3.1/profile/login/request/otp, /v3.1/profile/login/verify
ABHA numberMandatory/profile/login/request/otp, /profile/login/verify
ABHA addressMandatory/phr/web/login/abha/request/otp, /phr/web/login/abha/verify
Find ABHASupport flow/profile/account/abha/search, then login OTP APIs

Common response fields

A successful verify call returns a token set. Store token as the ABHA user token. Use it as X-token for profile calls.

Response fields
{
  "txnId": "<txn-id>",
  "authResult": "success",
  "message": "OTP verified successfully",
  "token": "<x-token>",
  "expiresIn": 1800,
  "refreshToken": "<refresh-token>",
  "refreshExpiresIn": 1296000,
  "accounts": [
    {
      "ABHANumber": "91-XXXX-XXXX-XXXX",
      "preferredAbhaAddress": "user@abdm",
      "name": "<name>",
      "status": "ACTIVE"
    }
  ]
}

Login by mobile number

Use this flow when the user gives a registered mobile number. The verify step can return multiple ABHA accounts. Select the required ABHANumber with /profile/login/verify/user.

Request the mobile OTP

Request
curl -X POST "https://abhasbx.abdm.gov.in/abha/api/v3/profile/login/request/otp" \
  -H "Authorization: Bearer <your-access-token>" \
  -H "REQUEST-ID: <uuid>" \
  -H "TIMESTAMP: <utc-iso-timestamp>" \
  -H "Content-Type: application/json" \
  -d '{
    "scope": ["abha-login", "mobile-verify"],
    "loginHint": "mobile",
    "loginId": "<encrypted-mobile-number>",
    "otpSystem": "abdm"
  }'

Verify the mobile OTP

Request
curl -X POST "https://abhasbx.abdm.gov.in/abha/api/v3/profile/login/verify" \
  -H "Authorization: Bearer <your-access-token>" \
  -H "REQUEST-ID: <uuid>" \
  -H "TIMESTAMP: <utc-iso-timestamp>" \
  -H "Content-Type: application/json" \
  -d '{
    "scope": ["abha-login", "mobile-verify"],
    "authData": {
      "authMethods": ["otp"],
      "otp": {
        "txnId": "<txn-id>",
        "otpValue": "<encrypted-otp>"
      }
    }
  }'

Verify the selected user

Request
curl -X POST "https://abhasbx.abdm.gov.in/abha/api/v3/profile/login/verify/user" \
  -H "Authorization: Bearer <your-access-token>" \
  -H "REQUEST-ID: <uuid>" \
  -H "TIMESTAMP: <utc-iso-timestamp>" \
  -H "Content-Type: application/json" \
  -d '{
    "ABHANumber": "91-1440-1577-XXXX",
    "txnId": "<txn-id>"
  }'

Login by Aadhaar number

Use the v3.1 Aadhaar OTP payload from the Postman collection. Send the encrypted Aadhaar number in loginId.

Request the Aadhaar OTP

Request
curl -X POST "https://abhasbx.abdm.gov.in/abha/api/v3.1/profile/login/request/otp" \
  -H "Authorization: Bearer <your-access-token>" \
  -H "REQUEST-ID: <uuid>" \
  -H "TIMESTAMP: <utc-iso-timestamp>" \
  -H "Content-Type: application/json" \
  -d '{
    "scope": ["abha-login", "aadhaar-verify", "aadhaar-otp-verify"],
    "loginHint": "aadhaar",
    "loginId": "<encrypted-aadhaar-number>",
    "otpSystem": "aadhaar"
  }'

Verify the Aadhaar OTP

Request
curl -X POST "https://abhasbx.abdm.gov.in/abha/api/v3.1/profile/login/verify" \
  -H "Authorization: Bearer <your-access-token>" \
  -H "REQUEST-ID: <uuid>" \
  -H "TIMESTAMP: <utc-iso-timestamp>" \
  -H "Content-Type: application/json" \
  -d '{
    "scope": ["abha-login", "aadhaar-verify", "aadhaar-otp-verify"],
    "authData": {
      "authMethods": ["otp"],
      "otp": {
        "txnId": "<txn-id>",
        "otpValue": "<encrypted-otp>"
      }
    }
  }'

Login by ABHA number

The source provides 3 ABHA number methods. Use Aadhaar OTP, mobile OTP, or password.

Request OTP
curl -X POST "https://abhasbx.abdm.gov.in/abha/api/v3/profile/login/request/otp" \
  -H "Authorization: Bearer <your-access-token>" \
  -H "REQUEST-ID: <uuid>" \
  -H "TIMESTAMP: <utc-iso-timestamp>" \
  -H "Content-Type: application/json" \
  -d '{
    "scope": ["abha-login", "aadhaar-verify"],
    "loginHint": "abha-number",
    "loginId": "<encrypted-abha-number>",
    "otpSystem": "aadhaar"
  }'
Verify OTP
curl -X POST "https://abhasbx.abdm.gov.in/abha/api/v3/profile/login/verify" \
  -H "Authorization: Bearer <your-access-token>" \
  -H "REQUEST-ID: <uuid>" \
  -H "TIMESTAMP: <utc-iso-timestamp>" \
  -H "Content-Type: application/json" \
  -d '{
    "scope": ["abha-login", "aadhaar-verify"],
    "authData": {
      "authMethods": ["otp"],
      "otp": {
        "txnId": "<txn-id>",
        "otpValue": "<encrypted-otp>"
      }
    }
  }'

Login by ABHA address

ABHA address requests are not in Postman

The ABHA address section comes from the narrative OCR blocks. Field names can contain OCR errors. Verify the exact payloads against the sandbox Swagger.

Use this flow when the user gives an ABHA address such as user@abdm. The narrative supports Aadhaar OTP, mobile OTP, fingerprint, face, and IRIS.

Request Aadhaar OTP
curl -X POST "https://abhasbx.abdm.gov.in/abha/api/v3/phr/web/login/abha/request/otp" \
  -H "Authorization: Bearer <your-access-token>" \
  -H "REQUEST-ID: <uuid>" \
  -H "TIMESTAMP: <utc-iso-timestamp>" \
  -H "Content-Type: application/json" \
  -d '{
    "scope": ["abha-address-login", "aadhaar-verify"],
    "loginHint": "abha-address",
    "loginId": "<encrypted-abha-address>",
    "otpSystem": "aadhaar"
  }'
Verify Aadhaar OTP
curl -X POST "https://abhasbx.abdm.gov.in/abha/api/v3/phr/web/login/abha/verify" \
  -H "Authorization: Bearer <your-access-token>" \
  -H "REQUEST-ID: <uuid>" \
  -H "TIMESTAMP: <utc-iso-timestamp>" \
  -H "Content-Type: application/json" \
  -d '{
    "scope": ["abha-address-login", "aadhaar-verify"],
    "authData": {
      "authMethods": ["otp"],
      "otp": {
        "txnId": "<txn-id>",
        "otpValue": "<encrypted-otp>"
      }
    }
  }'
Request mobile OTP
curl -X POST "https://abhasbx.abdm.gov.in/abha/api/v3/phr/web/login/abha/request/otp" \
  -H "Authorization: Bearer <your-access-token>" \
  -H "REQUEST-ID: <uuid>" \
  -H "TIMESTAMP: <utc-iso-timestamp>" \
  -H "Content-Type: application/json" \
  -d '{
    "scope": ["abha-address-login", "mobile-verify"],
    "loginHint": "abha-address",
    "loginId": "<encrypted-abha-address>",
    "otpSystem": "abdm"
  }'

Find ABHA starts with an encrypted mobile search. Then request and verify an OTP with loginHint set to index.

Search by encrypted mobile

Request
curl -X POST "https://abhasbx.abdm.gov.in/abha/api/v3/profile/account/abha/search" \
  -H "Authorization: Bearer <your-access-token>" \
  -H "REQUEST-ID: <uuid>" \
  -H "TIMESTAMP: <utc-iso-timestamp>" \
  -H "Content-Type: application/json" \
  -d '{
    "scope": ["search-abha"],
    "mobile": "<encrypted-mobile-number>"
  }'
Response (200)
{
  "txnId": "f0166d90-64bc-4cb2-8ef0-08ff1cf3ac8e",
  "message": "OTP is sent to Mobile number ending with ******0161"
}

Request OTP for the selected index

Mobile OTP
curl -X POST "https://abhasbx.abdm.gov.in/abha/api/v3/profile/login/request/otp" \
  -H "Authorization: Bearer <your-access-token>" \
  -H "REQUEST-ID: <uuid>" \
  -H "TIMESTAMP: <utc-iso-timestamp>" \
  -H "Content-Type: application/json" \
  -d '{
    "scope": ["abha-login", "search-abha", "mobile-verify"],
    "loginHint": "index",
    "loginId": "<encrypted-index>",
    "otpSystem": "abdm",
    "txnId": "<search-txn-id>"
  }'
Aadhaar OTP
curl -X POST "https://abhasbx.abdm.gov.in/abha/api/v3/profile/login/request/otp" \
  -H "Authorization: Bearer <your-access-token>" \
  -H "REQUEST-ID: <uuid>" \
  -H "TIMESTAMP: <utc-iso-timestamp>" \
  -H "Content-Type: application/json" \
  -d '{
    "scope": ["abha-login", "search-abha", "aadhaar-verify"],
    "loginHint": "index",
    "loginId": "<encrypted-index>",
    "otpSystem": "aadhaar",
    "txnId": "<search-txn-id>"
  }'

Verify the OTP

Request
curl -X POST "https://abhasbx.abdm.gov.in/abha/api/v3/profile/login/verify" \
  -H "Authorization: Bearer <your-access-token>" \
  -H "REQUEST-ID: <uuid>" \
  -H "TIMESTAMP: <utc-iso-timestamp>" \
  -H "Content-Type: application/json" \
  -d '{
    "scope": ["abha-login", "aadhaar-verify"],
    "authData": {
      "authMethods": ["otp"],
      "otp": {
        "txnId": "<otp-txn-id>",
        "otpValue": "<encrypted-otp>"
      }
    }
  }'

Sources

  • ABDM Proposed Simplified Milestone 1 (DOCX→MD, 2026-08)
  • M1 ABHA Postman collection