National Health Authority

Command Palette

Search for a command to run...

Professional Registration

Register a health professional's council, qualifications and work details against their HPR ID; fetch and update the record; upload documents; and verify email and mobile.

An HPR ID alone is just an identity. Professional registration attaches the council registration, academic qualifications and work details that the relevant council then verifies.

You need the HPR user token

Every API on this page acts on behalf of the professional and needs their HPR user token (from login). Here it travels in the body as hprToken / hpr_token — not as a header. Send your gateway token in the Authorization header.

flowchart LR
  A["HPR user token"] --> B["register-professional-new"]
  B --> C["verify email / mobile"]
  B --> D["upload-document"]
  B --> E["fetch-professional-info"]
  E --> F["update-professional-new"]

Register the professional

The practitioner object is large. It nests personal information, communication address, contact information, registration & academic records (council + qualifications, each with a base64 certificate), optional specialities, and current work details. All references — council, degree, college, university, state, nationality — are master-data IDs, not free text.

POST/apis/v1/doctors/register-professional-new

Registers the council record, qualifications and work details against the professional's HPR ID and submits them for council verification. Set healthProfessionalType to doctor, nurse or pharmacist.

cURL
curl -X POST "https://apihspsbx.abdm.gov.in/v4/int/apis/v1/doctors/register-professional-new" \
-H "Authorization: Bearer $SYSTEM_TOKEN" \
-H "Content-Type: application/json" \
-d '{
  "hprToken": "HPR_USER_TOKEN",
  "practitioner": {
    "healthProfessionalType": "doctor",
    "profilePhoto": "<base64 image>",
    "officialMobile": "97624xxxxx",
    "officialEmail": "",
    "profileVisibleToPublic": "1",
    "personalInformation": {
      "salutation": 1,
      "firstName": "First_name",
      "middleName": "",
      "lastName": "Last Name",
      "nationality": "356",
      "gender": "M",
      "dateOfBirth": "1990-04-23",
      "languagesSpoken": "1,2",
      "category": "C"
    },
    "communicationAddress": {
      "isCommunicationAddressAsPerKYC": "false",
      "address": "", "country": "", "state": "", "district": "",
      "subDistrict": "", "city": "", "pincode": ""
    },
    "contactInformation": {
      "publicMobileNumber": "", "landLineNumber": "", "publicEmail": ""
    },
    "registrationAcademic": {
      "category": 1,
      "registrationData": [
        {
          "registeredWithCouncil": 41,
          "registrationNumber": "REG12032",
          "registrationDate": "2024-12-01",
          "registrationCertificate": { "fileType": "pdf", "data": "<base64>" },
          "isPermanentOrRenewable": "Permanent",
          "renewableDueDate": "",
          "categoryId": 2,
          "qualifications": [
            {
              "nameOfDegreeOrDiplomaObtained": 4074,
              "country": "356",
              "state": "29",
              "college": 1149,
              "university": 7010,
              "yearOfAwardingDegreeDiploma": "2024",
              "monthOfAwardingDegreeDiploma": "",
              "degreeCertificate": { "fileType": "pdf", "data": "<base64>" },
              "isNameDifferentInCertificate": "false"
            }
          ]
        }
      ]
    },
    "specialities": null,
    "currentWorkDetails": {
      "currentlyWorking": "1",
      "purposeOfWork": "Practice",
      "chooseWorkStatus": "1",
      "reasonForNotWorking": "",
      "certificateAttachment": "<base64>",
      "facilityDeclarationData": {
        "facilityId": "IN2710000059",
        "facilityName": "Apollo Hospital New Delhi 126",
        "facilityAddress": "test,test6",
        "facilityPincode": "765435",
        "state": "27",
        "district": "500",
        "facilityType": "Hospital",
        "facilityDepartment": "Surgery",
        "facilityDesignation": "MD"
      }
    }
  }
}'
Response
{
"headers": {},
"body": {
  "referenceNumber": "8806aa4a-013b-...-1f0878dxxxxxx",
  "status": "true",
  "message": "Congratulations! Your profile has been submitted successfully for verification.",
  "error": null,
  "hprId": "71-3563-6824-xxxx"
},
"statusCode": "OK",
"statusCodeValue": 200
}

Use IDs, not names

registeredWithCouncil, nameOfDegreeOrDiplomaObtained, college, university, state, nationality and salutation are all numeric master-data IDs. Sending human-readable strings (e.g. a council name) will fail validation. Fetch the lists from the HPR masters APIs.

Field rules

From the HPR test-case workbook — enforced during council verification:

FieldRule
salutation, nationality, languagesSpokenMaster-data IDs; nationality defaults to India (356); languagesSpoken is multi-select (comma-separated)
firstName / middleName / lastName, DOB, gender, address (KYC)Auto-fetched from Aadhaar, non-editable
fatherName / motherName / spouseNameOptional free text
registrationNumberCouncil registration number (as issued)
registrationDateRegistration date
registrationCertificateBase64 image
nameOfDegreeOrDiplomaObtained, college, university, country, stateMaster-data IDs
yearOfAwardingDegreeDiplomaMandatory; monthOfAwardingDegreeDiploma optional
degreeCertificateBase64 image
isNameDifferentInCertificateIf yes, attach proofOfNameChangeCertificate — pdf/png/jpeg/jpg, ≤ 5 MB

Work-type branching

currentlyWorking (Yes/No) drives this section:

  • Not working → provide reasonForNotWorking (a master-data reason; a free-text "other" is allowed).
  • Working → choose Government, Private or Both (purposeOfWork / chooseWorkStatus):
    • Government / BothcertificateAttachment (payslip, recent transfer order, etc.) is mandatory, ≤ 5 MB, and a facility declaration is mandatory — search the facility by name/ID and fill facilityDeclarationData.
    • Private → no document required.

When the work type is Government or Both, Central/State options appear. A Central user must choose a ministry (mandatory) — fetch the list from the getAllMinistry master API and pass it inside currentWorkDetails.facilityDeclarationData.ministry.

Codes used by this API

These differ from the create-HPR-ID codes

The register/update-professional APIs use their own category and sub-category numbering. Don't reuse the create-HPR-ID sub-category codes here.

nameOfDegreeOrDiplomaObtained (qualification / degree code):

CodeDegreeSystem of Medicine
4060MBBS — Bachelor of Medicine and Bachelor of SurgeryModern Medicine
4074BDS — Bachelor of Dental SurgeryDentistry
4079BAMS — Bachelor of Ayurvedic Medicine and SurgeryAyurvedic
4082BUMS — Bachelor of Unani Medicine & SurgeryUnani
61BSMS — Bachelor of Siddha Medicine and SurgerySiddha
74BTMS — Bachelor of Tibetan Medicine StudiesSowa-Rigpa
40BHMS — Bachelor of Homoeopathic Medicine and SurgeryHomoeopathy
9568BPHARM — Bachelor of PharmacyPharmacist

registrationAcademic.category (category): 1 Doctor · 2 Nurse · 6 Pharmacist.

categoryId (sub-category for register/update):

CodeSub-categoryFor
1Modern Medicinedoctor
2Dentistrydoctor
3Homoeopathydoctor
4Ayurvedadoctor
5Unanidoctor
6Siddhadoctor
7Sowa-Rigpadoctor
14Yoga and Naturopathydoctor
8Registered Auxiliary Nurse Midwife (RANM)nurse
9Registered Nurse (RN)nurse
10Registered Nurse and Registered Midwife (RN & RM)nurse
11Registered Lady Health Visitor (RLHV)nurse
13Pharmacistpharmacist

Fetch a professional's profile

POST/apis/v1/doctors/fetch-professional-info

Fetches the registered profile. Supply the HPR ID number in id; the other fields narrow a search when the ID isn't known.

cURL
curl -X POST "https://apihspsbx.abdm.gov.in/v4/int/apis/v1/doctors/fetch-professional-info" \
-H "Authorization: Bearer $SYSTEM_TOKEN" \
-H "Content-Type: application/json" \
-d '{
  "practitioner": {
    "id": "71-XXXX-XXXX-7516",
    "name": "",
    "contactNumber": "",
    "state": "",
    "registrationNumber": ""
  }
}'

Update a professional

Update reuses the same nested practitioner structure as registration (with the fields you want to change). It requires a fresh HPR user token — the Update Professional guide walks through all three login methods first.

POST/apis/v1/doctors/update-professional-new

Updates an existing professional record. Master-data ID rules are identical to registration.

cURL
curl -X POST "https://apihspsbx.abdm.gov.in/v4/int/apis/v1/doctors/update-professional-new" \
-H "Authorization: Bearer $SYSTEM_TOKEN" \
-H "Content-Type: application/json" \
-d '{
  "hprToken": "HPR_USER_TOKEN",
  "practitioner": { "...": "same shape as register-professional-new" }
}'

Documents

List a professional's documents

POST/apis/v1/doctors/fetch-documents-list

Returns the professional's uploaded documents grouped by section (profile, registration, qualification…). Use it to discover the document_id / document_type values you'll re-upload.

cURL
curl -X POST "https://apihspsbx.abdm.gov.in/v4/int/apis/v1/doctors/fetch-documents-list" \
-H "Authorization: Bearer $SYSTEM_TOKEN" \
-H "Content-Type: application/json" \
-d '{ "hprid": "71-9999-9999-1358" }'
Response
{
"documentList": {
  "profileDetails": { "...": "..." }
}
}

Upload / replace a document

POST/apis/v1/uploads/upload-document

Uploads (or replaces) one or more documents. document is an array, so several files go in one call. data is base64; keep the fileType consistent with the encoded bytes.

cURL
curl -X POST "https://apihspsbx.abdm.gov.in/v4/int/apis/v1/uploads/upload-document" \
-H "Authorization: Bearer $SYSTEM_TOKEN" \
-H "Content-Type: application/json" \
-d '{
  "hpr_token": "HPR_USER_TOKEN",
  "document": [
    {
      "document_id": 1234,
      "document_type": "profilePhoto",
      "fileType": "png",
      "data": "<base64 encoded string>"
    }
  ]
}'

Verify email

Three calls, all taking the HPR token in the body as hpr_token.

Generate the verification email

POST/apis/v1/doctors/generate-verification-email

Sends a verification OTP to the email. otp_type is official for the professional's official email.

cURL
curl -X POST "https://apihspsbx.abdm.gov.in/v4/int/apis/v1/doctors/generate-verification-email" \
-H "Authorization: Bearer $SYSTEM_TOKEN" \
-H "Content-Type: application/json" \
-d '{
  "hpr_token": "HPR_USER_TOKEN",
  "emailAddress": "doctor@example.com",
  "otp_type": "official"
}'

Resend (optional)

POST/apis/v1/doctors/resent-verify-email

Re-sends the email OTP.

cURL
curl -X POST "https://apihspsbx.abdm.gov.in/v4/int/apis/v1/doctors/resent-verify-email" \
-H "Authorization: Bearer $SYSTEM_TOKEN" \
-H "Content-Type: application/json" \
-d '{
  "hpr_token": "HPR_USER_TOKEN",
  "emailAddress": "doctor@example.com"
}'

Verify the email OTP

POST/apis/v1/doctors/verify-email-otp

Confirms the OTP. emailOtp is a 6-digit number (not encrypted).

cURL
curl -X POST "https://apihspsbx.abdm.gov.in/v4/int/apis/v1/doctors/verify-email-otp" \
-H "Authorization: Bearer $SYSTEM_TOKEN" \
-H "Content-Type: application/json" \
-d '{
  "hpr_token": "HPR_USER_TOKEN",
  "hpr_id": "71-6347-XXXX-2778",
  "officialEmail": "doctor@example.com",
  "emailOtp": 103913
}'
Response
{ "status": "pass", "msg": "Email Verified" }

Verify mobile

Same three-step shape; the mobile number is RSA-encrypted, and verification carries a txnId from the generate step.

Generate the mobile OTP

POST/apis/v1/doctors/generate-mobile-otp

Sends an OTP to the official mobile and returns a txnId.

cURL
curl -X POST "https://apihspsbx.abdm.gov.in/v4/int/apis/v1/doctors/generate-mobile-otp" \
-H "Authorization: Bearer $SYSTEM_TOKEN" \
-H "Content-Type: application/json" \
-d '{
  "hpr_token": "HPR_USER_TOKEN",
  "officialMobile": "<RSA-encrypted mobile>"
}'
Response
{ "txnId": "386d9909-c825-4b6b-bb61-505324a6a6f" }

Regenerate (optional)

POST/apis/v1/doctors/regenerate-mobile-otp

Re-sends the mobile OTP.

cURL
curl -X POST "https://apihspsbx.abdm.gov.in/v4/int/apis/v1/doctors/regenerate-mobile-otp" \
-H "Authorization: Bearer $SYSTEM_TOKEN" \
-H "Content-Type: application/json" \
-d '{
  "hpr_token": "HPR_USER_TOKEN",
  "officialMobile": "<RSA-encrypted mobile>"
}'

Verify the mobile OTP

POST/apis/v1/doctors/verify-mobile-otp

Confirms the OTP against the txnId from the generate step. The encrypted otp uses the same RSA scheme as everywhere else.

cURL
curl -X POST "https://apihspsbx.abdm.gov.in/v4/int/apis/v1/doctors/verify-mobile-otp" \
-H "Authorization: Bearer $SYSTEM_TOKEN" \
-H "Content-Type: application/json" \
-d '{
  "hpr_token": "HPR_USER_TOKEN",
  "txnId": "386d9909-c825-4b6b-bb61-505324a6a6f",
  "otp": "<RSA-encrypted otp>"
}'

Masters and search APIs

Use the HPR masters APIs to fill dropdowns before registration. Cache stable lists, but refresh them before certification test runs.

Verify OCR-derived paths

The source lists some paths from OCR screenshots. The HPR OpenAPI confirms most master paths. Verify name and registration search paths against the sandbox Swagger.

Base URL for these APIs is https://apihspsbx.abdm.gov.in/v4/int/. Send the HPRID gateway token in the Authorization header.

PurposeMethodPath
HPRID categoriesGET/hpid/get/categories?role={role}
HPRID sub-categoriesGET/hpid/get/subCategories?role={role}&categoryCode={categoryCode}
System of medicineGET/apis/v1/masters/system-of-medicines
Medical councilsGET/apis/v1/masters/medical-councils
LanguagesGET/apis/v1/masters/languages or /apis/v1/masters/languages/{id}
UniversitiesGET/apis/v1/masters/universites or /apis/v1/masters/universites/{id}
CollegesGET/apis/v1/masters/colleges/{stateId}/{medicineId}
College by IDGET/apis/v1/masters/colleges/{id}
CoursesPOST/apis/v1/masters/courses
CountriesGET/apis/v1/masters/countries or /apis/v1/masters/countries/{id}
StatesGET/apis/v1/masters/states or /apis/v1/masters/states/{id}
DistrictsGET/apis/v1/masters/district or /apis/v1/masters/district/{id}
Sub-districtsGET/apis/v1/masters/sub-districts or /apis/v1/masters/sub-districts/{id}
Nurse affiliated boardsGET/apis/v1/masters/affiliated-board or /apis/v1/masters/affiliated-board/{id}
Nurse affiliated boards by stateGET/apis/v1/masters/affiliated-board/states/{id}
Nurse councilsGET/apis/v1/masters/nurse-councils
Nurse colleges by stateGET/apis/v1/masters/colleges/{stateId}/{medicineId}
MinistriesGET/apis/v1/masters/getAllMinistry
Fetch systems of medicine
curl "https://apihspsbx.abdm.gov.in/v4/int/apis/v1/masters/system-of-medicines" \
  -H "Authorization: Bearer <your-access-token>"
Example response
{
  "systems": [
    { "id": 1, "systemOfMedicine": "Modern Medicine", "hprType": "doctor" },
    { "id": 2, "systemOfMedicine": "Dentistry", "hprType": "doctor" }
  ]
}
Fetch courses for a professional type
curl -X POST "https://apihspsbx.abdm.gov.in/v4/int/apis/v1/masters/courses" \
  -H "Authorization: Bearer <your-access-token>" \
  -H "Content-Type: application/json" \
  -d '{
    "systemOfMedicine": "Modern Medicine",
    "hprType": "doctor"
  }'
Example response
{
  "courses": [
    { "id": 4074, "name": "MBBS", "duration": "5.5 years" }
  ]
}

Professional search APIs

Use search APIs before you create duplicate records. Use public search only for data that the professional allowed for display.

PurposeMethodPath
Search by nameGET/v1/search/searchByName/{firstName}/{lastName}
Search by mobileGET/v1/search/searchByMobile/{mobileNumber}
Search by registrationGET/v1/search/searchByRegistration
Search professionals by name
curl "https://apihspsbx.abdm.gov.in/v4/int/v1/search/searchByName/Kiran/Kumar" \
  -H "Authorization: Bearer <your-access-token>"
Search professionals by mobile
curl "https://apihspsbx.abdm.gov.in/v4/int/v1/search/searchByMobile/9762430000" \
  -H "Authorization: Bearer <your-access-token>"
Search professionals by registration
curl "https://apihspsbx.abdm.gov.in/v4/int/v1/search/searchByRegistration?registrationNumber=REG12032&stateCouncilName=Delhi%20Medical%20Council" \
  -H "Authorization: Bearer <your-access-token>"
Example search response
{
  "professionals": [
    {
      "hprId": "91-1234-5678-9012",
      "name": "Kiran Kumar",
      "category": "Doctor"
    }
  ]
}

Sources

  • ABDM NHPR — Register Professional & Create HPR ID (v2.0, 22-06-2026)
  • ABDM NHPR — Fetch Professional Details
  • ABDM NHPR — Update Professional
  • ABDM NHPR — Update / Upload Documents
  • ABDM NHPR — Email Verify
  • ABDM NHPR — Mobile OTP
  • ABDM HPR Test Cases workbook (field validations)
  • HSP Swagger — HPR OpenAPI spec (ground truth)
  • ABDM Proposed Simplified Milestone 4 — NHPR (DOCX→MD, 2026-08)