Fetch document
curl --request GET \
--url https://test-api.sandbox.co.in/kyc/digilocker/sessions/{session_id}/documents/{doc_type} \
--header 'Authorization: <authorization>' \
--header 'x-api-key: <x-api-key>'import requests
url = "https://test-api.sandbox.co.in/kyc/digilocker/sessions/{session_id}/documents/{doc_type}"
headers = {
"Authorization": "<authorization>",
"x-api-key": "<x-api-key>"
}
response = requests.get(url, headers=headers)
print(response.text)const options = {
method: 'GET',
headers: {Authorization: '<authorization>', 'x-api-key': '<x-api-key>'}
};
fetch('https://test-api.sandbox.co.in/kyc/digilocker/sessions/{session_id}/documents/{doc_type}', 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://test-api.sandbox.co.in/kyc/digilocker/sessions/{session_id}/documents/{doc_type}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: <authorization>",
"x-api-key: <x-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://test-api.sandbox.co.in/kyc/digilocker/sessions/{session_id}/documents/{doc_type}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "<authorization>")
req.Header.Add("x-api-key", "<x-api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://test-api.sandbox.co.in/kyc/digilocker/sessions/{session_id}/documents/{doc_type}")
.header("Authorization", "<authorization>")
.header("x-api-key", "<x-api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://test-api.sandbox.co.in/kyc/digilocker/sessions/{session_id}/documents/{doc_type}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = '<authorization>'
request["x-api-key"] = '<x-api-key>'
response = http.request(request)
puts response.read_body{
"code": 200,
"timestamp": 1751975529441,
"data": {
"files": [
{
"@entity": "org.quicko.drive.file",
"url": "https://in-co-sandbox-kyc-digilocker-dev.s3.ap-south-1.amazonaws.com/non-persistent/e385432b-575c-4b6f-8928-79136dbc0d4f/4b4bf7aa-f4da-47a8-9b32-895edfc03630/in.gov.uidai-ADHAR-0d5fe4d692c73e23c59a694eaaabc75a.xml?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=%2F20250708%2Fap-south-1%2Fs3%2Faws4_request&X-Amz-Date=20250708T115214Z&X-Amz-Expires=3600&X-Amz-Signature=8cc4b0e8eb3794601c7fdb7e85f3a6bb3a8e1842403c8aeae5c05b7af03bdadb&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject",
"size": 16598,
"metadata": {
"ContentType": "application/xml",
"issuer_id": "in.gov.uidai",
"issuer": "Unique Identification Authority of India (UIDAI)",
"LastModified": "09/05/2025",
"description": "Aadhaar Card"
}
}
]
},
"transaction_id": "a4d43b74-0f9c-480c-9300-f011100b674b"
}{
"code": 503,
"timestamp": 1000000000000,
"transaction_id": "6c05f692-c32f-4de0-92b4-56684bdf16f0",
"message": "Source Unavailable"
}{
"code": 521,
"timestamp": 1782806266274,
"message": "Data not found for: 55470e27-3d8a-451f-ac1e-9c0f3d1454821",
"transaction_id": "a599615c-c732-4538-9840-4bb5cd3c19d2"
}{
"code": 523,
"timestamp": 1782806184804,
"message": "Invalid session status: created",
"transaction_id": "de90173f-8255-4ac0-b26b-a41b8a872fee"
}Fetch Document
Pass the session id and the document type to fetch the document.
GET
/
kyc
/
digilocker
/
sessions
/
{session_id}
/
documents
/
{doc_type}
Fetch document
curl --request GET \
--url https://test-api.sandbox.co.in/kyc/digilocker/sessions/{session_id}/documents/{doc_type} \
--header 'Authorization: <authorization>' \
--header 'x-api-key: <x-api-key>'import requests
url = "https://test-api.sandbox.co.in/kyc/digilocker/sessions/{session_id}/documents/{doc_type}"
headers = {
"Authorization": "<authorization>",
"x-api-key": "<x-api-key>"
}
response = requests.get(url, headers=headers)
print(response.text)const options = {
method: 'GET',
headers: {Authorization: '<authorization>', 'x-api-key': '<x-api-key>'}
};
fetch('https://test-api.sandbox.co.in/kyc/digilocker/sessions/{session_id}/documents/{doc_type}', 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://test-api.sandbox.co.in/kyc/digilocker/sessions/{session_id}/documents/{doc_type}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: <authorization>",
"x-api-key: <x-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://test-api.sandbox.co.in/kyc/digilocker/sessions/{session_id}/documents/{doc_type}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "<authorization>")
req.Header.Add("x-api-key", "<x-api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://test-api.sandbox.co.in/kyc/digilocker/sessions/{session_id}/documents/{doc_type}")
.header("Authorization", "<authorization>")
.header("x-api-key", "<x-api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://test-api.sandbox.co.in/kyc/digilocker/sessions/{session_id}/documents/{doc_type}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = '<authorization>'
request["x-api-key"] = '<x-api-key>'
response = http.request(request)
puts response.read_body{
"code": 200,
"timestamp": 1751975529441,
"data": {
"files": [
{
"@entity": "org.quicko.drive.file",
"url": "https://in-co-sandbox-kyc-digilocker-dev.s3.ap-south-1.amazonaws.com/non-persistent/e385432b-575c-4b6f-8928-79136dbc0d4f/4b4bf7aa-f4da-47a8-9b32-895edfc03630/in.gov.uidai-ADHAR-0d5fe4d692c73e23c59a694eaaabc75a.xml?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=%2F20250708%2Fap-south-1%2Fs3%2Faws4_request&X-Amz-Date=20250708T115214Z&X-Amz-Expires=3600&X-Amz-Signature=8cc4b0e8eb3794601c7fdb7e85f3a6bb3a8e1842403c8aeae5c05b7af03bdadb&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject",
"size": 16598,
"metadata": {
"ContentType": "application/xml",
"issuer_id": "in.gov.uidai",
"issuer": "Unique Identification Authority of India (UIDAI)",
"LastModified": "09/05/2025",
"description": "Aadhaar Card"
}
}
]
},
"transaction_id": "a4d43b74-0f9c-480c-9300-f011100b674b"
}{
"code": 503,
"timestamp": 1000000000000,
"transaction_id": "6c05f692-c32f-4de0-92b4-56684bdf16f0",
"message": "Source Unavailable"
}{
"code": 521,
"timestamp": 1782806266274,
"message": "Data not found for: 55470e27-3d8a-451f-ac1e-9c0f3d1454821",
"transaction_id": "a599615c-c732-4538-9840-4bb5cd3c19d2"
}{
"code": 523,
"timestamp": 1782806184804,
"message": "Invalid session status: created",
"transaction_id": "de90173f-8255-4ac0-b26b-a41b8a872fee"
}Run in Postman
A document can only be fetched if the user has provided consent for it.
Sample Responses
See sample XML responses returned by DigiLocker for Aadhaar, PAN and Driving License.
Headers
JWT access token. For token-generation steps, refer to the Quickstart Guide.
API key used to identify and authenticate the client.
Specifies the API version for the request.
Path Parameters
Session identifier generated during DigiLocker Initiate Session API .
Document type identifying which DigiLocker document to retrieve. Must match one of the consented doc_types values.
Available options:
aadhaar, pan, driving_license Was this page helpful?
⌘I