curl --request POST \
--url https://production.deepvue.tech/v1/ekyc/aadhaar/verify-otp \
--header 'client-id: <api-key>' \
--header 'x-api-key: <api-key>'import requests
url = "https://production.deepvue.tech/v1/ekyc/aadhaar/verify-otp"
headers = {
"x-api-key": "<api-key>",
"client-id": "<api-key>"
}
response = requests.post(url, headers=headers)
print(response.text)const options = {method: 'POST', headers: {'x-api-key': '<api-key>', 'client-id': '<api-key>'}};
fetch('https://production.deepvue.tech/v1/ekyc/aadhaar/verify-otp', 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://production.deepvue.tech/v1/ekyc/aadhaar/verify-otp",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_HTTPHEADER => [
"client-id: <api-key>",
"x-api-key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://production.deepvue.tech/v1/ekyc/aadhaar/verify-otp"
req, _ := http.NewRequest("POST", url, nil)
req.Header.Add("x-api-key", "<api-key>")
req.Header.Add("client-id", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://production.deepvue.tech/v1/ekyc/aadhaar/verify-otp")
.header("x-api-key", "<api-key>")
.header("client-id", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://production.deepvue.tech/v1/ekyc/aadhaar/verify-otp")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-api-key"] = '<api-key>'
request["client-id"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"code": 200,
"timestamp": 1738243999577,
"transaction_id": "f6efc218742a405c8dd65cf19c13b878",
"sub_code": "SUCCESS",
"message": "Aadhaar eKYC Successful",
"data": {
"address": {
"careOf": "S/O H. Nue Mahammed",
"country": "India",
"district": "Bangalore",
"house": "NO. 6",
"landmark": "",
"locality": "MTS LAYOUT J X NAGAR 51TH PHASE",
"pin": "561118",
"postOffice": "J P Nagar",
"state": "Karnataka",
"street": "19TH MAIN",
"subDistrict": "",
"vtc": "Bangalore"
},
"dateOfBirth": "28-06-1999",
"email": "e2afb1d691d72a535b501053e6291abdb51c05cccc7c08b4439ab3e",
"gender": "M",
"generatedAt": "1738304139979",
"maskedNumber": "xxxx-xxxx-8091",
"name": "Mohammed Nihar",
"phone": "ad0e19163c4ff90313ce2b1457ea0687fbfbf0f344566e50bed07f60ae064",
"photo": "<base64_encoded_image>"
}
}Verify OTP
This API will validate the OTP entered by the user to authenticate with UIDAI. Once successfully validated response will have the below details.
- Reference number
- Resident’s name
- Resident’s address
- Gender
- Photo
- Date of Birth
- Mobile number in hashed form
- Email in hashed form
curl --request POST \
--url https://production.deepvue.tech/v1/ekyc/aadhaar/verify-otp \
--header 'client-id: <api-key>' \
--header 'x-api-key: <api-key>'import requests
url = "https://production.deepvue.tech/v1/ekyc/aadhaar/verify-otp"
headers = {
"x-api-key": "<api-key>",
"client-id": "<api-key>"
}
response = requests.post(url, headers=headers)
print(response.text)const options = {method: 'POST', headers: {'x-api-key': '<api-key>', 'client-id': '<api-key>'}};
fetch('https://production.deepvue.tech/v1/ekyc/aadhaar/verify-otp', 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://production.deepvue.tech/v1/ekyc/aadhaar/verify-otp",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_HTTPHEADER => [
"client-id: <api-key>",
"x-api-key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://production.deepvue.tech/v1/ekyc/aadhaar/verify-otp"
req, _ := http.NewRequest("POST", url, nil)
req.Header.Add("x-api-key", "<api-key>")
req.Header.Add("client-id", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://production.deepvue.tech/v1/ekyc/aadhaar/verify-otp")
.header("x-api-key", "<api-key>")
.header("client-id", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://production.deepvue.tech/v1/ekyc/aadhaar/verify-otp")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-api-key"] = '<api-key>'
request["client-id"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"code": 200,
"timestamp": 1738243999577,
"transaction_id": "f6efc218742a405c8dd65cf19c13b878",
"sub_code": "SUCCESS",
"message": "Aadhaar eKYC Successful",
"data": {
"address": {
"careOf": "S/O H. Nue Mahammed",
"country": "India",
"district": "Bangalore",
"house": "NO. 6",
"landmark": "",
"locality": "MTS LAYOUT J X NAGAR 51TH PHASE",
"pin": "561118",
"postOffice": "J P Nagar",
"state": "Karnataka",
"street": "19TH MAIN",
"subDistrict": "",
"vtc": "Bangalore"
},
"dateOfBirth": "28-06-1999",
"email": "e2afb1d691d72a535b501053e6291abdb51c05cccc7c08b4439ab3e",
"gender": "M",
"generatedAt": "1738304139979",
"maskedNumber": "xxxx-xxxx-8091",
"name": "Mohammed Nihar",
"phone": "ad0e19163c4ff90313ce2b1457ea0687fbfbf0f344566e50bed07f60ae064",
"photo": "<base64_encoded_image>"
}
}Authorizations
The CLIENT_SECRET provided to you. This header parameter is required for authentication purposes.
The CLIENT_ID provided to you. This header parameter is required for authentication purposes.
Query Parameters
OTP received on the registered mobile number, with a validity of 10 minutes.
Unique ID assigned by Deepvue when the session was initiated.
Y/N based on whether your customer has given consent for validating their KYC. This is mandatory as per regulations.
The purpose of the KYC check, which is mandatory as per regulations.
10-digit mobile number to check whether it is the same mobile linked to Aadhaar on which the OTP was sent.
True or False, depending upon whether pdf needs to be generated or not.