by Profiden

CIBIL Transunion (PDF)

Identity & KYC

Reviews 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

POST https://app.emver.io/api/sandbox/v1/cibil-transunion-pdf
Authorization: Bearer YOUR_API_KEY
Content-Type: application/json
Accept: application/json

Request parameters

Consent required. Collect the consent of the person being verified to “I confirm the customer has given consent for a credit check.” and send 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 sendResult
consent: true or "Y"The call runs; consent is recorded as given.
consent: false or "N"422, code: consent_declined. Nothing is billed.
Field missing422, code: consent_required. Nothing is billed.
Any other value422, code: consent_invalid, with a field-level errors map.
FieldTypeDescription
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
curl -X POST https://app.emver.io/api/sandbox/v1/cibil-transunion-pdf \
  -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
}'

Replace YOUR_API_KEY and the placeholder values. Use the switch above to see production URLs.

Response

Structure · 200

{
  "status": STRING,
  "message": STRING,
  "report_url": STRING,
  "report": {
    "format": STRING,
    "mime": STRING,
    "filename": STRING,
    "size": INTEGER,
    "url": STRING,
    "expires_at": STRING,
    "base64": STRING
  }
}

Example · 200

{
  "status": "string",
  "message": "string",
  "report_url": "string",
  "report": {
    "format": "string",
    "mime": "string",
    "filename": "string",
    "size": 200,
    "url": "string",
    "expires_at": "string",
    "base64": "string"
  }
}

This API answers with a PDF document. report.base64 is the file itself — no second call is needed. report_url is optional: GET it with the same API key to download the file (raw bytes, not JSON) at any time within 72 hours (report.expires_at); after that it answers 410. A negative outcome (no record) is a plain {status, message} body without a report block.

Error · 4xx / 5xx

{
  "status": INTEGER,
  "message": STRING
}

See Errors & status codes for what each status means and which calls are billed.