CIBIL Transunion
Identity & KYCReviews an individual’s credit history using a TransUnion CIBIL credit report obtained through an authorized process. The check covers the available credit score, loan and credit card accounts, repayment history, outstanding balances and reported adverse account statuses. Processing is subject to the individual’s consent, permitted purpose and applicable access requirements.
Endpoint
Request parameters
consent: true (or "Y") with the call.
A call without it is refused with 422 consent_required before anything is billed.
consent: false is refused with consent_declined.
How to send it
Show the person the statement above, record their answer, then add one field to the JSON body alongside the request parameters. The statement, the purpose and the time of consent are recorded on our side with every call.
{
"...": "your request parameters",
"consent": true
}
| You send | Result |
|---|---|
consent: true or "Y" | The call runs; consent is recorded as given. |
consent: false or "N" | 422, code: consent_declined. Nothing is billed. |
| Field missing | 422, code: consent_required. Nothing is billed. |
| Any other value | 422, code: consent_invalid, with a field-level errors map. |
| Field | Type | Description |
|---|---|---|
first_name
required
|
string | First Name |
last_name
required
|
string | Last Name |
phone_number
required
|
phone | Phone Number Indian mobile number starting with 6-9 |
dob
required
|
date | Date of Birth |
gender
required
|
enum |
Gender
One of:
Male, Female, Other
|
pan_card_number
required
|
string | PAN Card Number |
consent
required
|
boolean | Consent of the person true (or "Y") once the person being verified has agreed to: "I confirm the customer has given consent for a credit check." false (or "N") if they declined — the call is then refused. Required: a call without it is refused with 422 code consent_required. |
Example request
curl -X POST https://app.emver.io/api/sandbox/v1/cibil-transunion \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-d '{
"first_name": "string",
"last_name": "string",
"phone_number": "9999999999",
"dob": "YYYY-MM-DD",
"gender": "Male",
"pan_card_number": "string",
"consent": true
}'
import requests
response = requests.post(
"https://app.emver.io/api/sandbox/v1/cibil-transunion",
headers={
"Authorization": "Bearer YOUR_API_KEY",
"Accept": "application/json",
},
json={
"first_name": "string",
"last_name": "string",
"phone_number": "9999999999",
"dob": "YYYY-MM-DD",
"gender": "Male",
"pan_card_number": "string",
"consent": true
},
timeout=60,
)
response.raise_for_status()
data = response.json()
const response = await fetch("https://app.emver.io/api/sandbox/v1/cibil-transunion", {
method: "POST",
headers: {
"Authorization": "Bearer YOUR_API_KEY",
"Content-Type": "application/json",
"Accept": "application/json",
},
body: JSON.stringify({
"first_name": "string",
"last_name": "string",
"phone_number": "9999999999",
"dob": "YYYY-MM-DD",
"gender": "Male",
"pan_card_number": "string",
"consent": true
}),
});
const data = await response.json();
$response = Http::withToken('YOUR_API_KEY')
->acceptJson()
->post('https://app.emver.io/api/sandbox/v1/cibil-transunion', {
"first_name": "string",
"last_name": "string",
"phone_number": "9999999999",
"dob": "YYYY-MM-DD",
"gender": "Male",
"pan_card_number": "string",
"consent": true
});
$data = $response->json();
Replace YOUR_API_KEY and the placeholder values. Use the switch above to see production URLs.
Response
Structure · 200
{
"status": STRING,
"message": STRING,
"reference_id": STRING
}
Example · 200
{
"status": "string",
"message": "string",
"reference_id": "string"
}
Error · 4xx / 5xx
{
"status": INTEGER,
"message": STRING
}
See Errors & status codes for what each status means and which calls are billed.