Aadhaar, PAN Card, Passport, Driving License, Voter ID, Ration Card, Vehicle RC — 7 types

Identity Documents


Identity document types perform structured extraction from Indian government-issued documents. All 7 types handle varied layouts, regional languages, laminated cards, and partially visible fields.

Sensitive fields such as aadhaar_number, pan_number, engine_number, and chassis_number are automatically masked in logs and audit output (mask: true).

Identity documents are where the fraud checks earn their keep: run synthetic & tampered document detection on the upload, likeness-match the ID photo against the live selfie, and gate completion with Goal Rules — the format and checksum rules below are enforced deterministically, so a fabricated ID number fails before any human sees the case. Cross-verification then confirms the name, date of birth, and address agree across every document in the case.


kyc_aadhaar — Aadhaar Card

Analysis type: extraction

Fields extracted

FieldTypeNotes
aadhaar_numberstring12-digit number
namestringName as printed
date_of_birthstringYYYY-MM-DD or null
genderstringM, F, or O
addressstringFull address as printed
pin_codestring6-digit PIN code
father_namestringnull if not printed
spouse_namestringnull if not printed
mobile_numberstringMay be masked like XXXXXXX1234
vidstring16-digit Virtual ID if printed
photo_presentbooleanWhether photo is visible on this side
qr_code_presentbooleanWhether QR code is visible
issue_datestringYYYY-MM-DD or null

Validation rules

FieldRule
aadhaar_numberRequired · Regex ^[0-9]{12}$ · Masked
nameRequired

Example

const result = await client.verify.document({
  doc_type: "kyc_aadhaar",
  file_url: "https://storage.example.com/aadhaar_front.jpg",
});
// result.output.aadhaar_number → "XXXX XXXX 5678" (masked)
// result.output.name → "Priya Sharma"
// result.output.date_of_birth → "1990-04-15"

kyc_pan_card — PAN Card

Analysis type: extraction

Fields extracted

FieldTypeNotes
pan_numberstring10-character alphanumeric
namestringName as printed
father_namestringnull if not printed
date_of_birthstringYYYY-MM-DD or null
pan_typestringInferred from 4th character: P=Individual, C=Company, H=HUF, T=Trust
photo_presentbooleanWhether photo is visible
signature_presentbooleannull if not visible

Validation rules

FieldRule
pan_numberRequired · Regex ^[A-Z]{5}[0-9]{4}[A-Z]$ · Format: uppercase · Masked
nameRequired

Example

const result = await client.verify.document({
  doc_type: "kyc_pan_card",
  file_url: "https://storage.example.com/pan.jpg",
});
// result.output.pan_number → "XXXXX1234X" (masked)
// result.output.pan_type → "P" (Individual)

passport — Passport

Analysis type: extraction

Fields extracted

FieldTypeNotes
passport_numberstringPassport number
surnamestringSurname
given_namesstringGiven names
full_namestringFull name as printed (e.g. RATHORE DINESH)
date_of_birthstringYYYY-MM-DD
date_of_issuestringYYYY-MM-DD
date_of_expirystringYYYY-MM-DD
sexstringM or F
nationalitystringe.g. INDIAN, BRITISH
place_of_birthstringnull if not printed
place_of_issuestringnull if not printed
issuing_countrystringnull if not printed
father_namestringnull if not printed
mother_namestringnull if not printed
spouse_namestringnull if not printed
addressstringAddress page contents, null if not visible
pin_codestringnull if not printed
file_numberstringPassport file number, null if not printed
old_passport_numberstringPrevious passport number if mentioned
emergency_contactstringName and phone if printed
mrz_line1stringFirst MRZ line if visible
mrz_line2stringSecond MRZ line if visible
photo_presentbooleanWhether photo is visible

Validation rules

FieldRule
full_nameRequired
passport_numberRequired · Format: uppercase
nationalityRequired
date_of_birthRequired · Format: date_iso
date_of_expiryRequired · Format: date_iso

Example

const result = await client.verify.document({
  doc_type: "passport",
  file_url: "https://storage.example.com/passport_bio_page.jpg",
});
// result.output.passport_number → "N1234567"
// result.output.date_of_expiry → "2030-08-15"
// result.output.mrz_line1 → "P<INDMEHTA<<ROHIT<KUMAR<<<<<<<<<<<<<<<<<<"

kyc_driving_license — Driving License

Analysis type: extraction

Fields extracted

FieldTypeNotes
license_numberstringDriving license number
namestringName as printed
date_of_birthstringYYYY-MM-DD or null
date_of_issuestringYYYY-MM-DD or null
expiry_datestringYYYY-MM-DD
addressstringFull address or null
pin_codestringnull if not printed
statestringIssuing state
issuing_authoritystringRTO name and code
vehicle_classesstring[]e.g. LMV, MCWG, HMV, LMV-NT
blood_groupstringe.g. O+, A-, B+
organ_donorbooleannull if not printed
father_or_spousestringFather/husband name or null
emergency_contactstringPhone number on back
photo_presentbooleanWhether photo is visible

Validation rules

FieldRule
license_numberRequired
nameRequired
expiry_dateRequired · Format: date_iso

Example

const result = await client.verify.document({
  doc_type: "kyc_driving_license",
  file_url: "https://storage.example.com/dl_front.jpg",
});
// result.output.license_number → "MH0120220012345"
// result.output.vehicle_classes → ["LMV", "MCWG"]
// result.output.expiry_date → "2040-06-30"

voter_id — Voter ID

Analysis type: extraction

Fields extracted

FieldTypeNotes
epic_numberstring10-character alphanumeric EPIC number
namestringName as printed
date_of_birthstringYYYY-MM-DD or null
ageintegerIf DOB not printed, age may be shown
genderstringM, F, or O
addressstringnull if not printed
father_or_husband_namestringnull if not printed
relation_typestringFather, Husband, Mother
constituencystringParliamentary or assembly constituency
part_numberstringnull if not printed
serial_numberstringnull if not printed
photo_presentbooleanWhether photo is visible

Validation rules

FieldRule
epic_numberRequired · Regex ^[A-Z]{3}[0-9]{7}$ · Format: uppercase
nameRequired

Example

const result = await client.verify.document({
  doc_type: "voter_id",
  file_url: "https://storage.example.com/voter_id.jpg",
});
// result.output.epic_number → "ABC1234567"
// result.output.constituency → "Bangalore Central"

ration_card — Ration Card

Analysis type: extraction

Fields extracted

FieldTypeNotes
card_numberstringRation card number
head_of_familystringPrimary card holder name
addressstringnull if not printed
statestringnull if not printed
districtstringnull if not printed
card_typestringAPL, BPL, AAY, PHH, NPHH, Antyodaya
issue_datestringYYYY-MM-DD or null
fps_namestringFair Price Shop name or number
membersobject[]List of family members: name, age, relation, aadhaar_number (may be masked)

Validation rules

FieldRule
card_numberRequired
head_of_familyRequired

Example

const result = await client.verify.document({
  doc_type: "ration_card",
  file_url: "https://storage.example.com/ration_card.jpg",
});
// result.output.card_type → "BPL"
// result.output.members → [
//   { name: "Ramu Das", age: 45, relation: "self", aadhaar_number: null },
//   { name: "Sunita Das", age: 40, relation: "wife", aadhaar_number: "XXXX XXXX 9012" }
// ]

vehicle_rc — Vehicle Registration Certificate (RC)

Analysis type: extraction

Fields extracted

FieldTypeNotes
registration_numberstringe.g. MH01AB1234
owner_namestringRegistered owner name
make_modelstringManufacturer and model (e.g. Maruti Swift)
vehicle_classstringe.g. LMV, M-Cycle, HGV
fuel_typestringpetrol, diesel, CNG, electric, hybrid
engine_numberstringEngine number
chassis_numberstringChassis number
colorstringnull if not printed
body_typestringsedan, hatchback, SUV etc.
manufacturing_yearstringYYYY or null
registration_datestringYYYY-MM-DD or null
registration_valid_untilstringYYYY-MM-DD or null
fitness_valid_untilstringYYYY-MM-DD or null
pucc_valid_untilstringYYYY-MM-DD or null
insurance_valid_untilstringYYYY-MM-DD or null
seating_capacityintegernull if not printed
cubic_capacitystringCC or null
hypothecationstringFinancier name if under loan
rto_namestringIssuing RTO
father_or_spouse_namestringnull if not printed
addressstringnull if not printed

Validation rules

FieldRule
registration_numberRequired · Regex ^[A-Z]{2}[0-9]{1,2}[A-Z]{0,3}[0-9]{1,4}$ · Format: uppercase
owner_nameRequired
engine_numberRequired · Masked
chassis_numberRequired · Masked

Example

const result = await client.verify.document({
  doc_type: "vehicle_rc",
  file_url: "https://storage.example.com/rc.jpg",
});
// result.output.registration_number → "MH01AB1234"
// result.output.fuel_type → "petrol"
// result.output.insurance_valid_until → "2026-12-31"
// result.output.engine_number → "XXXXXXX7890" (masked)