nisha@abdm) — the identity every later API call is anchored to. A patient either creates one in your app, or already has one and logs in.
Create an ABHA address
Three independent methods. Pick whichever your onboarding UX supports; face auth is the fallback when the patient’s mobile is not linked to their Aadhaar.Via mobile OTP
The lightest path — creates an ABHA address without Aadhaar KYC.Via Aadhaar OTP
Produces a KYC-verified 14-digit ABHA number alongside the address.Via face auth
For patients whose mobile is not linked to Aadhaar and who cannot receive an Aadhaar OTP.
Full M1 creation flow chart →
Helper APIs
Use these while the patient is still filling the form — they make the difference between a clean signup and a failed one.Login to the PHR app
A returning patient logs in with ABHA address, Aadhaar or mobile number. All three converge onskip_state = abha_end.
When login returns
skip_state = abha_create and abha_profiles is non-empty, the patient already has ABHAs on that identifier — use the Auto-Login API to sign them into an existing one instead of creating a duplicate.Hold the ABHA Gateway session
Creation and login both open a session with the ABDM gateway. It expires. Any patient-scoped API called without it returns HTTP491, and you must re-authenticate with a mobile OTP.
User Session overview →
Skip the UI entirely
If you don’t want to build the OTP screens, the ABHA Web SDK ships the whole creation and login flow as an embeddable, themeable component.M1 — ABHA Web SDK
Drop-in ABHA creation, login, KYC and Scan & Share, with your own branding.
The
abha.created webhook fires on your cloud when an ABHA address is successfully created. Use it to provision the patient in your own database rather than relying on the client-side response.
