ABHA Creation
Create an ABHA by Aadhaar OTP, then review optional face, biometric, demographic, child, and driving licence flows.
ABHA creation starts with Aadhaar OTP for all integrators. Face, biometric, demographic, child, and driving licence flows are optional.
Response examples
The Postman files give exact request payloads for most creation calls. They do not give server response examples for many calls. This page shows response examples only when the source gives them or when a test script names fields.
Mandatory Aadhaar OTP flow
Use this flow for private and government integrators. Encrypt the Aadhaar number and each OTP value before you send them.
sequenceDiagram participant User as User participant App as Client app participant ABHA as ABHA API App->>ABHA: POST /enrollment/request/otp (Aadhaar) ABHA-->>App: txnId App->>User: Ask for Aadhaar OTP User-->>App: OTP App->>ABHA: POST /enrollment/enrol/byAadhaar ABHA-->>App: ABHA profile, tokens, txnId App->>ABHA: POST /enrollment/request/otp (mobile verify) ABHA-->>User: Mobile OTP User-->>App: OTP App->>ABHA: POST /enrollment/auth/byAbdm ABHA-->>App: Updated txnId App->>ABHA: GET /enrollment/enrol/suggestion ABHA-->>App: ABHA address suggestions App->>ABHA: POST /enrollment/enrol/abha-address ABHA-->>App: Linked ABHA address
Request the Aadhaar OTP
Send the encrypted Aadhaar number in loginId.
Set otpSystem to aadhaar.
/enrollment/request/otpRequest an OTP for ABHA enrolment.
curl -X POST "https://abhasbx.abdm.gov.in/abha/api/v3/enrollment/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-enrol"],
"loginHint": "aadhaar",
"loginId": "<encrypted-12-digit-aadhaar-number>",
"otpSystem": "aadhaar"
}'{
"txnId": "<txn-id>",
"message": "OTP sent to Aadhaar registered mobile number"
}Enrol by Aadhaar
Submit the encrypted OTP with the txnId.
Send the mobile number shown in the enrolment flow.
/enrollment/enrol/byAadhaarCreate the ABHA with Aadhaar OTP verification.
curl -X POST "https://abhasbx.abdm.gov.in/abha/api/v3/enrollment/enrol/byAadhaar" \
-H "Authorization: Bearer <your-access-token>" \
-H "REQUEST-ID: <uuid>" \
-H "TIMESTAMP: <utc-iso-timestamp>" \
-H "BENEFIT_NAME: healthid api" \
-H "Content-Type: application/json" \
-d '{
"authData": {
"authMethods": ["otp"],
"otp": {
"txnId": "<txn-id>",
"otpValue": "<encrypted-aadhaar-otp>",
"mobile": "<masked-or-verified-mobile>"
}
},
"consent": {
"code": "abha-enrollment",
"version": "1.4"
}
}'{
"txnId": "<new-txn-id>",
"ABHAProfile": {
"ABHANumber": "91-XXXX-XXXX-XXXX"
},
"tokens": {
"token": "<x-token>",
"refreshToken": "<refresh-token>"
}
}Request a mobile update OTP
Use this step after enrolment when the user must verify or change the mobile.
Send the encrypted mobile number in loginId.
/enrollment/request/otpRequest a mobile OTP during enrolment.
curl -X POST "https://abhasbx.abdm.gov.in/abha/api/v3/enrollment/request/otp" \
-H "Authorization: Bearer <your-access-token>" \
-H "REQUEST-ID: <uuid>" \
-H "TIMESTAMP: <utc-iso-timestamp>" \
-H "Content-Type: application/json" \
-d '{
"txnId": "<txn-id-from-enrolment>",
"scope": ["abha-enrol", "mobile-verify"],
"loginHint": "mobile",
"loginId": "<encrypted-mobile-number>",
"otpSystem": "abdm"
}'Verify the mobile OTP
Send the encrypted mobile OTP.
Use the txnId from the mobile OTP request.
/enrollment/auth/byAbdmVerify the mobile OTP for the enrolment flow.
curl -X POST "https://abhasbx.abdm.gov.in/abha/api/v3/enrollment/auth/byAbdm" \
-H "Authorization: Bearer <your-access-token>" \
-H "REQUEST-ID: <uuid>" \
-H "TIMESTAMP: <utc-iso-timestamp>" \
-H "Content-Type: application/json" \
-d '{
"scope": ["abha-enrol", "mobile-verify"],
"authData": {
"authMethods": ["otp"],
"otp": {
"txnId": "<mobile-otp-txn-id>",
"otpValue": "<encrypted-mobile-otp>"
}
}
}'Get ABHA address suggestions
Get address suggestions after the enrolment transaction succeeds. Send the gateway token and request headers.
/enrollment/enrol/suggestionGet ABHA address suggestions for the transaction.
curl -X GET "https://abhasbx.abdm.gov.in/abha/api/v3/enrollment/enrol/suggestion" \
-H "Authorization: Bearer <your-access-token>" \
-H "REQUEST-ID: <uuid>" \
-H "TIMESTAMP: <utc-iso-timestamp>"Link the ABHA address
Choose one suggested address or send a custom address.
Set preferred to 1 for the preferred address.
/enrollment/enrol/abha-addressLink an ABHA address to the new ABHA number.
curl -X POST "https://abhasbx.abdm.gov.in/abha/api/v3/enrollment/enrol/abha-address" \
-H "Authorization: Bearer <your-access-token>" \
-H "REQUEST-ID: <uuid>" \
-H "TIMESTAMP: <utc-iso-timestamp>" \
-H "Content-Type: application/json" \
-d '{
"txnId": "<latest-txn-id>",
"abhaAddress": "<preferred-abha-address>",
"preferred": 1
}'Optional face authentication flow
Use face authentication only when your integration and device flow support it. The Postman set includes an init call, a PID capture status call, and enrolment.
Generate a face transaction
Send face-auth when the flow does not include a pre-captured PID.
Use face-verify when the flow includes PID capture.
curl -X POST "https://abhasbx.abdm.gov.in/abha/api/v3/enrollment/enrol/auth/init" \
-H "Authorization: Bearer <your-access-token>" \
-H "REQUEST-ID: <uuid>" \
-H "TIMESTAMP: <utc-iso-timestamp>" \
-H "Content-Type: application/json" \
-d '{
"scope": ["abha-enrol", "face-auth"]
}'Track PID capture
Call this endpoint when the flow uses face-verify.
The source shows VERIFIED and PENDING statuses.
curl -X POST "https://abhasbx.abdm.gov.in/abha/api/v3/enrollment/enrol/capturePID" \
-H "Authorization: Bearer <your-access-token>" \
-H "REQUEST-ID: <uuid>" \
-H "TIMESTAMP: <utc-iso-timestamp>" \
-H "Content-Type: application/json" \
-d '{
"scope": ["abha-enrol", "face-verify"],
"txnId": "<face-txn-id>"
}'{
"status": "PENDING",
"message": "Awaiting PID capture"
}Enrol with face authentication
Send the encrypted Aadhaar number with the face transaction ID.
curl -X POST "https://abhasbx.abdm.gov.in/abha/api/v3/enrollment/enrol/byAadhaar" \
-H "Authorization: Bearer <your-access-token>" \
-H "REQUEST-ID: <uuid>" \
-H "TIMESTAMP: <utc-iso-timestamp>" \
-H "Content-Type: application/json" \
-d '{
"authData": {
"authMethods": ["face_auth"],
"face": {
"txnId": "<face-txn-id>",
"aadhaar": "<encrypted-aadhaar-number>"
}
},
"consent": {
"code": "abha-enrollment",
"version": "1.4"
}
}'Optional biometric flows
Use certified biometric devices for fingerprint and IRIS. Send the PID block exactly as the device returns it.
Fingerprint payload shape
The Postman file places fingerPrintAuthPid inside the otp object and sets
authMethods to otp. Keep this shape unless ABDM gives a newer Swagger.
curl -X POST "https://abhasbx.abdm.gov.in/abha/api/v3/enrollment/enrol/byAadhaar" \
-H "Authorization: Bearer <your-access-token>" \
-H "REQUEST-ID: <uuid>" \
-H "TIMESTAMP: <utc-iso-timestamp>" \
-H "Content-Type: application/json" \
-d '{
"authData": {
"authMethods": ["otp"],
"otp": {
"txnId": "<txn-id>",
"fingerPrintAuthPid": "<fingerprint-pid>",
"mobile": "<masked-or-verified-mobile>"
}
},
"consent": {
"code": "abha-enrollment",
"version": "1.4"
}
}'Optional demographic authentication
Use demographic authentication only when ABDM approves it for your program.
Send the demo_auth object from the Postman source.
curl -X POST "https://abhasbx.abdm.gov.in/abha/api/v3/enrollment/enrol/byAadhaar" \
-H "Authorization: Bearer <your-access-token>" \
-H "REQUEST-ID: <uuid>" \
-H "TIMESTAMP: <utc-iso-timestamp>" \
-H "Content-Type: application/json" \
-d '{
"authData": {
"authMethods": ["demo_auth"],
"demo_auth": {
"aadhaarNumber": "<encrypted-aadhaar-number>",
"districtCode": "468",
"stateCode": "27",
"consentHealthId": true,
"dateOfBirth": "11-08-1990",
"mobile": "<mobile-number>",
"address": "<address>",
"profilePhoto": "<base64-photo>",
"pincode": "<pin-code>",
"gender": "F",
"name": "<full-name>"
}
},
"consent": {
"code": "abha-enrollment",
"version": "1.4"
}
}'Optional child ABHA flow
Create a child ABHA only after you verify the parent flow.
The source uses demo_auth for the parent and child for the child.
curl -X POST "https://abhasbx.abdm.gov.in/abha/api/v3/enrollment/enrol/byAadhaar" \
-H "Authorization: Bearer <your-access-token>" \
-H "REQUEST-ID: <uuid>" \
-H "TIMESTAMP: <utc-iso-timestamp>" \
-H "Content-Type: application/json" \
-d '{
"authData": {
"authMethods": ["child"],
"child": {
"dayOfBirth": "1",
"monthOfBirth": "1",
"yearOfBirth": "2025",
"gender": "M",
"name": "<child-name>",
"profilePhoto": "<base64-photo>"
}
},
"consent": {
"code": "abha-enrollment",
"version": "1.4"
}
}'curl -X GET "https://abhasbx.abdm.gov.in/abha/api/v3/enrollment/profile/children" \
-H "Authorization: Bearer <your-access-token>" \
-H "X-token: Bearer <x-token>" \
-H "REQUEST-ID: <uuid>" \
-H "TIMESTAMP: <utc-iso-timestamp>"curl -X PATCH "https://abhasbx.abdm.gov.in/abha/api/v3/profile/account" \
-H "Authorization: Bearer <your-access-token>" \
-H "X-token: Bearer <x-token>" \
-H "REQUEST-ID: <uuid>" \
-H "TIMESTAMP: <utc-iso-timestamp>" \
-H "Content-Type: application/json" \
-d '{
"abhaNumber": "91-5023-5154-1680",
"name": "<child-name>",
"dob": "3-6-2021",
"gender": "M"
}'Optional driving licence flow
Use this flow when the user creates ABHA from a driving licence.
The flow starts with mobile OTP and ends with enrol/byDocument.
Request a mobile OTP
curl -X POST "https://abhasbx.abdm.gov.in/abha/api/v3/enrollment/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-enrol", "mobile-verify", "dl-flow"],
"loginHint": "mobile",
"loginId": "<encrypted-mobile-number>",
"otpSystem": "abdm"
}'Verify the mobile OTP
curl -X POST "https://abhasbx.abdm.gov.in/abha/api/v3/enrollment/auth/byAbdm" \
-H "Authorization: Bearer <your-access-token>" \
-H "REQUEST-ID: <uuid>" \
-H "TIMESTAMP: <utc-iso-timestamp>" \
-H "Content-Type: application/json" \
-d '{
"scope": ["abha-enrol", "mobile-verify", "dl-flow"],
"authData": {
"authMethods": ["otp"],
"otp": {
"timeStamp": "<epoch-or-source-timestamp>",
"txnId": "<otp-txn-id>",
"otpValue": "<encrypted-otp>"
}
}
}'Enrol by document
curl -X POST "https://abhasbx.abdm.gov.in/abha/api/v3/enrollment/enrol/byDocument" \
-H "Authorization: Bearer <your-access-token>" \
-H "REQUEST-ID: <uuid>" \
-H "TIMESTAMP: <utc-iso-timestamp>" \
-H "Content-Type: application/json" \
-d '{
"txnId": "<latest-txn-id>",
"documentType": "DRIVING_LICENCE",
"documentId": "<driving-licence-number>",
"firstName": "<first-name>",
"middleName": "",
"lastName": "<last-name>",
"dob": "1990-02-23",
"gender": "M",
"frontSidePhoto": "<base64-front-photo>",
"backSidePhoto": "<base64-back-photo>"
}'Sources
- ABDM Proposed Simplified Milestone 1 (DOCX→MD, 2026-08)
- M1 ABHA Postman collection
