curl --request POST \
--url https://api.eka.care/abdm/na/v1/registration/aadhaar/mobile/verify \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"otp": "<string>",
"txn_id": "<string>"
}
'import requests
url = "https://api.eka.care/abdm/na/v1/registration/aadhaar/mobile/verify"
payload = {
"otp": "<string>",
"txn_id": "<string>"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({otp: '<string>', txn_id: '<string>'})
};
fetch('https://api.eka.care/abdm/na/v1/registration/aadhaar/mobile/verify', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.eka.care/abdm/na/v1/registration/aadhaar/mobile/verify",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'otp' => '<string>',
'txn_id' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.eka.care/abdm/na/v1/registration/aadhaar/mobile/verify"
payload := strings.NewReader("{\n \"otp\": \"<string>\",\n \"txn_id\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.eka.care/abdm/na/v1/registration/aadhaar/mobile/verify")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"otp\": \"<string>\",\n \"txn_id\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.eka.care/abdm/na/v1/registration/aadhaar/mobile/verify")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"otp\": \"<string>\",\n \"txn_id\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"abha_profiles": [
{
"abha_address": "<string>",
"kyc_verified": "<string>",
"name": "<string>"
}
],
"eka": {
"min_token": "<string>",
"oid": "<string>",
"uuid": "<string>"
},
"hint": "<string>",
"profile": {
"abha_address": "shyam@abdm",
"abha_addresses": [
"<string>"
],
"abha_number": "12-3456-7856-8912",
"address": "<string>",
"day_of_birth": 123,
"district_code": "<string>",
"district_name": "<string>",
"first_name": "<string>",
"full_name": "<string>",
"gender": "M",
"kyc_verified": true,
"last_name": "<string>",
"middle_name": "<string>",
"mobile": "<string>",
"month_of_birth": 123,
"pincode": "<string>",
"profile_photo": "<string>",
"state_code": "<string>",
"state_name": "<string>",
"sub_district_code": "<string>",
"sub_district_name": "<string>",
"town_code": "<string>",
"town_name": "<string>",
"village_code": "<string>",
"village_name": "<string>",
"ward_code": "<string>",
"ward_name": "<string>",
"year_of_birth": 123
},
"refresh_token": "<string>",
"skip_state": "abha_end",
"token": "<string>",
"txn_id": "<string>"
}{
"code": 123,
"error": "<string>",
"source_error": {
"code": "<string>",
"message": "<string>"
}
}{
"code": 123,
"error": "<string>",
"source_error": {
"code": "<string>",
"message": "<string>"
}
}Mobile Verify OTP
This API operates on a skip logic basis. If the mobile number provided in the second step differs from the one linked to the Aadhaar, this API will be used to verify the new mobile number.
curl --request POST \
--url https://api.eka.care/abdm/na/v1/registration/aadhaar/mobile/verify \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"otp": "<string>",
"txn_id": "<string>"
}
'import requests
url = "https://api.eka.care/abdm/na/v1/registration/aadhaar/mobile/verify"
payload = {
"otp": "<string>",
"txn_id": "<string>"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({otp: '<string>', txn_id: '<string>'})
};
fetch('https://api.eka.care/abdm/na/v1/registration/aadhaar/mobile/verify', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.eka.care/abdm/na/v1/registration/aadhaar/mobile/verify",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'otp' => '<string>',
'txn_id' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.eka.care/abdm/na/v1/registration/aadhaar/mobile/verify"
payload := strings.NewReader("{\n \"otp\": \"<string>\",\n \"txn_id\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.eka.care/abdm/na/v1/registration/aadhaar/mobile/verify")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"otp\": \"<string>\",\n \"txn_id\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.eka.care/abdm/na/v1/registration/aadhaar/mobile/verify")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"otp\": \"<string>\",\n \"txn_id\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"abha_profiles": [
{
"abha_address": "<string>",
"kyc_verified": "<string>",
"name": "<string>"
}
],
"eka": {
"min_token": "<string>",
"oid": "<string>",
"uuid": "<string>"
},
"hint": "<string>",
"profile": {
"abha_address": "shyam@abdm",
"abha_addresses": [
"<string>"
],
"abha_number": "12-3456-7856-8912",
"address": "<string>",
"day_of_birth": 123,
"district_code": "<string>",
"district_name": "<string>",
"first_name": "<string>",
"full_name": "<string>",
"gender": "M",
"kyc_verified": true,
"last_name": "<string>",
"middle_name": "<string>",
"mobile": "<string>",
"month_of_birth": 123,
"pincode": "<string>",
"profile_photo": "<string>",
"state_code": "<string>",
"state_name": "<string>",
"sub_district_code": "<string>",
"sub_district_name": "<string>",
"town_code": "<string>",
"town_name": "<string>",
"village_code": "<string>",
"village_name": "<string>",
"ward_code": "<string>",
"ward_name": "<string>",
"year_of_birth": 123
},
"refresh_token": "<string>",
"skip_state": "abha_end",
"token": "<string>",
"txn_id": "<string>"
}{
"code": 123,
"error": "<string>",
"source_error": {
"code": "<string>",
"message": "<string>"
}
}{
"code": 123,
"error": "<string>",
"source_error": {
"code": "<string>",
"message": "<string>"
}
}Authorizations
The API requires a Bearer token (JWT) for authentication.
Headers
Eka User ID (OID)
Partner User ID
Partner HIP ID
Query Parameters
OID is used to Identify the user.
Body
Response
OK
Abha profiles of the user.
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Will be present if SkipState is abha_end
Show child attributes
Show child attributes
Refresh token of the user, issued by abdm
SkipState abha_end - When the user has completed the Aadhaar registration process once earlier and this was a login call. abha_create - when it's a first time (registration) user and the user wants to create a custom ABHA Address.
abha_end, confirm_mobile_otp, abha_select, abha_create Abha token of the user, issued by abdm
Transaction ID required for the next API call.
Was this page helpful?

