Result object reference
This article describes the structure of the scanning result returned by BlinkID. It documents the parts that are common to every platform. For platform-specific types (image formats, enums, and exact accessor signatures), follow the API reference for your platform:
Result object
Some extracted fields may correspond to similar concepts, yet be named differently. This is due to the differences in naming by the jurisdictions issuing these documents.
documentClassInfo
General information about the document, specifically its country, region, and type.
dataMatchResult
Explains whether the data extracted from multiple sides matches.
You can inspect the overallState and the statePerField.
Useful for diagnostics.
additionalAddressInformation
Additional address information that isn't included in the address field.
Depending on the document type it might correspond to a province, or region code.
additionalNameInformation
Additional name information that isn't included in the firstName or lastName fields.
Might include things like alternative spellings or international variants of a name.
additionalOptionalAddressInformation
See additionalAddressInformation.
additionalPersonalIdNumber
Alternative values for the personal ID number.
address
Address extracted from the document.
bloodType
Blood type extracted from the document.
cardAccessNumber
Card access number is a numeric code used to establish secure electronic access to the embedded contactless chip, present on certain IDs.
certificateNumber
The certificate number is found mostly on UK residence permits, under the "Remarks" field.
countryCode
ISO country code found on the card.
dateOfBirth
Date of birth.
dateOfEntry
Date of entry.
dateOfExpiry
Date of expiry.
dateOfIssue
Date when the document was issued.
dependentsInfo
Some documents list dependents, and this structure contains this information, if it has been extracted.
documentAdditionalNumber
Additional numbers extracted from the document. These depend on the particular document in question. If an additional number is mandatory on the document, it is listed here.
documentNumber
Document number, which has regional meanings, but usually refers to unique identifiers of a document.
documentOptionalAdditionalNumber
If a document has optional additional numbers, they are listed here. See documentAdditionalNumber.
documentSubtype
Some documents specify additional type information beyond that which is returned in the documentClassInfo structure.
driverLicenseDetailedInfo
Detailed information extracted from driver licenses.
It carries restrictions, endorsements, conditions, the vehicleClass, and vehicleClassesInfo with per-class details.
effectiveDate
Date that the document is valid from; meaning depends on type of document. Seen on Netherlands residence permits.
eligibilityCategory
Shows under which immigration provision the person is authorized to work.
employer
Employer name.
ethnicity
Ethnicity.
fathersName
Father's name.
firstName
First name.
fullName
Full name. Some documents don't divide into first and last names.
husbandName
Husband name.
issuingAuthority
Marks which authority issued the document.
lastName
Last name.
legalStatus
Shows the legal status on some identity cards.
localityCode
Locality code.
maidenName
Maiden name.
manufacturingYear
Manufacturing year, mostly refers to the year when a vehicle was manufactured.
maritalStatus
Marital status.
mothersName
Mother's name.
municipalityCode
Municipality code.
municipalityOfRegistration
Municipality of registration.
nationalInsuranceNumber
National insurance number, such as the UK National Insurance number.
nationality
Nationality of the document owner.
parentsInfo
A list of the document owner's parents, when the document lists them.
Each entry has a firstName and a lastName.
personalIdNumber
Personal identification number. A unique number assigned to the person by the issuing authority.
placeOfBirth
Place of birth.
pollingStationCode
Polling station code, found on documents that also serve as voter identification.
profession
Profession.
race
Race.
registrationCenterCode
Registration center code.
religion
Religion.
remarks
Free-form remarks printed on the document, most often on residence permits.
residencePermitType
Type of the residence permit.
residentialStatus
Residential status of the document owner.
sectionCode
Section code.
sex
Sex or gender of the document owner.
socialSecurityStatus
Social security status of the document owner.
specificDocumentValidity
Additional validity information specific to certain document types.
sponsor
Sponsor of the document owner, named on some visas and residence permits.
stateCode
State code.
stateName
State name.
vehicleOwner
Vehicle owner.
vehicleType
Vehicle type.
visaType
Visa type.
workRestriction
Work restriction that applies to the document owner.
dateOfExpiryPermanent
A boolean that is true when the document never expires.
localizedName
The document owner's name in the local script or language, when the document also prints a localized variant.
inputImagesScanningSide
Marks which scanned sides the input images in subResults came from.
Used to correlate a returned input image with the side it was captured on.
documentImagesScanningSide
Marks which scanned sides the cropped document images in subResults came from.
faceImageScanningSide
Marks which scanned side the returned face image came from.
signatureImageScanningSide
Marks which scanned side the returned signature image came from.
barcodeImageScanningSide
Marks which scanned side the returned barcode image came from.
subResults
The raw, per-side results, with one entry per scanned side. See per-side results.
String results
Most text fields are string results rather than plain strings, because a document can carry the same field in more than one alphabet (for example, a name printed in both Latin and Cyrillic).
A string result holds one value per alphabet: latin, arabic, cyrillic, and greek.
How you read the value differs by platform.
- Web (TS)
- Android (Kotlin)
- iOS (Swift)
On web, index into the alphabet you want; each alphabet entry has a value:
const firstName = result.firstName?.latin?.value;
const firstNameCyrillic = result.firstName?.cyrillic?.value;
On Android, value returns the best available value across alphabets:
val firstName = result.firstName?.value
On iOS, value returns the best available value across alphabets, or read a specific alphabet with value(for:):
let firstName = result.firstName?.value
let firstNameLatin = result.firstName?.value(for: .latin)
Date results
Date fields (dateOfBirth, dateOfExpiry, dateOfIssue, and similar) are date results.
A date result exposes the parsed parts plus the original text:
day,month,year: the parsed numeric components, eachundefined/nilwhen not parsedoriginalString: the date exactly as printed on the document. This is itself a string result, so it carries one value per alphabetsuccessfullyParsed: whether the string was parsed into numeric partsfilledByDomainKnowledge: whether the SDK inferred the date from domain knowledge rather than reading it off the document
- Web (TS)
- Android (Kotlin)
- iOS (Swift)
const expiry = result.dateOfExpiry;
const year = expiry?.year;
// originalString is a string result, so index into the alphabet you want:
const asPrinted = expiry?.originalString?.latin?.value;
val expiry = result.dateOfExpiry
val year = expiry?.year
// originalString is a string result; value returns the best available alphabet:
val asPrinted = expiry?.originalString?.value
On iOS a date result also exposes a date convenience property holding the parsed value as a Date:
let expiry = result.dateOfExpiry
let year = expiry?.year
let asPrinted = expiry?.originalString?.value
let asDate = expiry?.date
The result also exposes dateOfExpiryPermanent, a boolean that is set when the document never expires.
Document class info
documentClassInfo identifies the scanned document:
country,region,documentType: the classified country, region, and document typecountryName: the human-readable issuing country nameisoNumericCountryCode,isoAlpha2CountryCode,isoAlpha3CountryCode: ISO country codes for the issuer
Each classification component (country, region, documentType) carries a strongly-typed identifier plus a rawValue string.
BlinkID can receive new document classes over the air (OTA), delivered after the SDK was built.
When a document matches such a class, the build-time enum has no matching value, so the identifier is absent and only rawValue is populated.
countryName and the ISO country codes are optional and may be absent when the issuer is unknown.
documentClassInfo itself is absent when the document could not be classified at all, such as an unsupported document with no class info.
Use it to branch your logic on document type, or to decide whether a document is supported.
Per-side results
subResults is an array with one entry per scanned side.
Each entry is a single-side result containing the raw, zone-level data and the images for that side:
viz: data extracted from the Visual Inspection Zonemrz: data extracted from the Machine Readable Zonebarcode: data extracted from the barcodeinputImage: the full input framedocumentImage: the cropped document imagefaceImage: the cropped face imagesignatureImage: the cropped signature imagebarcodeImage: the input frame that contained the scanned barcode
The top-level field values are the SDK's best combined reading across all sides.
Reach into subResults only when you need the raw per-zone data or the images.
Image formats are platform-specific; see your platform's API reference.