Extract specific fields
The top-level result object contains aggregated fields extracted from all scanned sides of the document. All fields are optional—the SDK only populates what it can read from the document. Always check whether a field is present before using its value.
On Web, string fields are typed as StringResult, a multi-alphabet object.
Access the value for a specific script using the alphabet key: result.firstName?.latin?.value.
Name fields
- Web (TS)
- Android (Kotlin)
- iOS (Swift)
- Flutter (Dart)
- React Native (TS)
blinkId.addOnResultCallback((result) => {
console.log("First name:", result.firstName?.latin?.value);
console.log("Last name:", result.lastName?.latin?.value);
console.log("Full name:", result.fullName?.latin?.value);
void blinkId.destroy();
});
onScanningSuccess = { result ->
println("First name: ${result.firstName?.value}")
println("Last name: ${result.lastName?.value}")
println("Full name: ${result.fullName?.value}")
}
onScanCompleted: { resultState in
guard let result = resultState.scanningResult else { return }
print("First name:", result.firstName?.value ?? "")
print("Last name:", result.lastName?.value ?? "")
print("Full name:", result.fullName?.value ?? "")
}
if (result != null) {
print('First name: ${result.firstName?.value}');
print('Last name: ${result.lastName?.value}');
print('Full name: ${result.fullName?.value}');
}
console.log("First name:", result.firstName?.value);
console.log("Last name:", result.lastName?.value);
console.log("Full name:", result.fullName?.value);
Date of birth
Date fields carry both a structured representation (year, month, day) and the original string as it appeared on the document.
- Web (TS)
- Android (Kotlin)
- iOS (Swift)
- Flutter (Dart)
- React Native (TS)
blinkId.addOnResultCallback((result) => {
const dob = result.dateOfBirth;
if (dob) {
console.log("Year:", dob.year);
console.log("Month:", dob.month);
console.log("Day:", dob.day);
console.log("Original string:", dob.originalString?.latin?.value);
}
void blinkId.destroy();
});
onScanningSuccess = { result ->
result.dateOfBirth?.let { dob ->
println("Year: ${dob.year}")
println("Month: ${dob.month}")
println("Day: ${dob.day}")
println("Original string: ${dob.originalString?.value}")
}
}
onScanCompleted: { resultState in
guard let result = resultState.scanningResult else { return }
if let dob = result.dateOfBirth {
print("Year:", dob.year as Any)
print("Month:", dob.month as Any)
print("Day:", dob.day as Any)
print("Original string:", dob.originalString?.value ?? "")
}
}
if (result != null) {
final dob = result.dateOfBirth;
if (dob != null) {
print('Year: ${dob.date?.year}');
print('Month: ${dob.date?.month}');
print('Day: ${dob.date?.day}');
print('Original string: ${dob.originalString?.value}');
}
}
const dob = result.dateOfBirth;
if (dob) {
console.log("Year:", dob.date?.year);
console.log("Month:", dob.date?.month);
console.log("Day:", dob.date?.day);
console.log("Original string:", dob.originalString?.value);
}
Document number and expiry
- Web (TS)
- Android (Kotlin)
- iOS (Swift)
- Flutter (Dart)
- React Native (TS)
blinkId.addOnResultCallback((result) => {
console.log("Document number:", result.documentNumber?.latin?.value);
const expiry = result.dateOfExpiry;
if (expiry) {
console.log("Expiry year:", expiry.year);
console.log("Expiry month:", expiry.month);
console.log("Expiry day:", expiry.day);
}
console.log("Permanent:", result.dateOfExpiryPermanent);
void blinkId.destroy();
});
onScanningSuccess = { result ->
println("Document number: ${result.documentNumber?.value}")
result.dateOfExpiry?.let { expiry ->
println("Expiry year: ${expiry.year}")
println("Expiry month: ${expiry.month}")
println("Expiry day: ${expiry.day}")
}
println("Permanent: ${result.dateOfExpiryPermanent}")
}
onScanCompleted: { resultState in
guard let result = resultState.scanningResult else { return }
print("Document number:", result.documentNumber?.value ?? "")
if let expiry = result.dateOfExpiry {
print("Expiry year:", expiry.year as Any)
print("Expiry month:", expiry.month as Any)
print("Expiry day:", expiry.day as Any)
}
print("Permanent:", result.dateOfExpiryPermanent as Any)
}
if (result != null) {
print('Document number: ${result.documentNumber?.value}');
final expiry = result.dateOfExpiry;
if (expiry != null) {
print('Expiry year: ${expiry.date?.year}');
print('Expiry month: ${expiry.date?.month}');
print('Expiry day: ${expiry.date?.day}');
}
print('Permanent: ${result.dateOfExpiryPermanent}');
}
console.log("Document number:", result.documentNumber?.value);
const expiry = result.dateOfExpiry;
if (expiry) {
console.log("Expiry year:", expiry.date?.year);
console.log("Expiry month:", expiry.date?.month);
console.log("Expiry day:", expiry.date?.day);
}
console.log("Permanent:", result.dateOfExpiryPermanent);
Address
- Web (TS)
- Android (Kotlin)
- iOS (Swift)
- Flutter (Dart)
- React Native (TS)
blinkId.addOnResultCallback((result) => {
console.log("Address:", result.address?.latin?.value);
console.log("Additional address:", result.additionalAddressInformation?.latin?.value);
void blinkId.destroy();
});
onScanningSuccess = { result ->
println("Address: ${result.address?.value}")
println("Additional address: ${result.additionalAddressInformation?.value}")
}
onScanCompleted: { resultState in
guard let result = resultState.scanningResult else { return }
print("Address:", result.address?.value ?? "")
print("Additional address:", result.additionalAddressInformation?.value ?? "")
}
if (result != null) {
print('Address: ${result.address?.value}');
print('Additional address: ${result.additionalAddressInformation?.value}');
}
console.log("Address:", result.address?.value);
console.log("Additional address:", result.additionalAddressInformation?.value);
Nationality and sex
- Web (TS)
- Android (Kotlin)
- iOS (Swift)
- Flutter (Dart)
- React Native (TS)
blinkId.addOnResultCallback((result) => {
console.log("Nationality:", result.nationality?.latin?.value);
console.log("Sex:", result.sex?.latin?.value);
void blinkId.destroy();
});
onScanningSuccess = { result ->
println("Nationality: ${result.nationality?.value}")
println("Sex: ${result.sex?.value}")
}
onScanCompleted: { resultState in
guard let result = resultState.scanningResult else { return }
print("Nationality:", result.nationality?.value ?? "")
print("Sex:", result.sex?.value ?? "")
}
if (result != null) {
print('Nationality: ${result.nationality?.value}');
print('Sex: ${result.sex?.value}');
}
console.log("Nationality:", result.nationality?.value);
console.log("Sex:", result.sex?.value);
Document class info
documentClassInfo identifies the type of document that was scanned—country, document type, and region.
It is always present on the result.
- Web (TS)
- Android (Kotlin)
- iOS (Swift)
- Flutter (Dart)
- React Native (TS)
blinkId.addOnResultCallback((result) => {
const classInfo = result.documentClassInfo;
console.log("Country:", classInfo.country);
console.log("Document type:", classInfo.documentType);
console.log("Region:", classInfo.region);
void blinkId.destroy();
});
onScanningSuccess = { result ->
val classInfo = result.documentClassInfo
println("Country: ${classInfo.country}")
println("Document type: ${classInfo.documentType}")
println("Region: ${classInfo.region}")
}
onScanCompleted: { resultState in
guard let result = resultState.scanningResult else { return }
let classInfo = result.documentClassInfo
print("Country:", classInfo.country)
print("Document type:", classInfo.documentType)
print("Region:", classInfo.region)
}
if (result != null) {
final classInfo = result.documentClassInfo;
print('Country: ${classInfo?.country}');
print('Document type: ${classInfo?.documentType}');
print('Region: ${classInfo?.region}');
}
const classInfo = result.documentClassInfo;
console.log("Country:", classInfo?.country);
console.log("Document type:", classInfo?.documentType);
console.log("Region:", classInfo?.region);