curl --request POST \
--url https://api.privue.ai/epfo/v1/passbook-send-otp.1 \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"mobile": "9876543210"
}
'import requests
url = "https://api.privue.ai/epfo/v1/passbook-send-otp.1"
payload = { "mobile": "9876543210" }
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({mobile: '9876543210'})
};
fetch('https://api.privue.ai/epfo/v1/passbook-send-otp.1', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"reasons": [],
"details": {
"request_id": "02dece70-5967-4949-9fea-f5ce7e6a5a53"
}
}Initiate EPFO passbook OTP
Send an OTP to the mobile number on a member’s EPF account, to read their passbook with.
Ask the member for the OTP they receive, and send it with details.request_id to /epfo/v1/passbook-submit-otp.1. Once it is accepted, /epfo/v1/passbook.1 reads their passbook with the same request_id.
A mobile number the EPFO holds no account under answers uan-not-registered-for-mobile, and no OTP is sent.
Only you can submit an OTP for, or read a passbook through, a request you sent, and for 30 days after you sent it: a request_id from a request you did not send, or from one sent longer ago, answers 404.
curl --request POST \
--url https://api.privue.ai/epfo/v1/passbook-send-otp.1 \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"mobile": "9876543210"
}
'import requests
url = "https://api.privue.ai/epfo/v1/passbook-send-otp.1"
payload = { "mobile": "9876543210" }
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({mobile: '9876543210'})
};
fetch('https://api.privue.ai/epfo/v1/passbook-send-otp.1', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"reasons": [],
"details": {
"request_id": "02dece70-5967-4949-9fea-f5ce7e6a5a53"
}
}Authorizations
Your API key, sent as Authorization: Bearer <your-key>.
Body
The mobile number to send the OTP to.
Mobile number on the member's EPF account, with or without +91
^(?:\+91)?[6-9][0-9]{9}$"9876543210"
Response
Successful Response
The OTP sent, and the id the member's passbook is read by once they give it back.
details is null when the EPFO holds no account under the mobile number, and no OTP is sent. That is a finding about today: the same request made later asks the EPFO again, and can find one.
