The SDK exposes a single validate(request) call. The request type you construct selects the document and how it’s captured. There are two documents — Emirates ID and Passport — and for Emirates ID, three capture modes, each of which can optionally attach a fingerprint for biometric matching.
Each method must be enabled on your API key (Methods). Calling a method your key isn’t scoped for fails with METHOD_NOT_ALLOWED (1011) — see error codes.
The examples below use the desktop/Swift class-based shape; the type names are the same across Kotlin, C#, and C (see Naming across platforms), and each SDK guide shows the exact syntax for that language.
Emirates ID
Manual entry
Type the Emirates ID details — no hardware required. Good for quick, lower-assurance checks.
| Field | Required | Notes |
|---|
idNumber | yes | e.g. 784-XXXX-XXXXXXX-X |
documentNumber | yes | The card/document number |
nationality | yes | ISO-3 country code, e.g. ARE |
dateOfBirth / issueDate / expiryDate | no | As required by the method |
clientReferenceId | no | Optional UUID to correlate with your records (see below) |
let req = EmiratesIdManual(
idNumber: "784-XXXX-XXXXXXX-X",
documentNumber: "...",
nationality: "ARE")
Card read
Reads the chip from a physical card on a smart card reader — proves the genuine card is present.
Prerequisites: a smart card reader, plus the
mbkyc-pcsc-service desktop service on desktop. Get
readerId from
listSmartcardReaders().
| Field | Required | Notes |
|---|
readerId | yes | From listSmartcardReaders() |
cardDipTimeoutMs | no | How long to wait for a card to be presented |
clientReferenceId | no | Optional UUID (see below) |
let req = EmiratesIdCard(readerId: reader.id)
Card read + fingerprint
Reads the chip and captures a live fingerprint, matching it against the card — the highest assurance (proves the cardholder is present).
Prerequisites: a smart card reader
and a fingerprint sensor, plus their
desktop services (
mbkyc-pcsc-service + your fingerprint vendor’s service). See
Biometrics for the finger-recommendation flow.
let fingerprint = Fingerprint(
readerId: scanner.id,
recommendationDelegate: MyFingerDelegate())
let req = EmiratesIdCard(readerId: reader.id, fingerprint: fingerprint)
You can also attach a fingerprint to Manual entry (EmiratesIdManual(..., fingerprint:)) to add a biometric match without a card read.
NFC (Android only)
On Android, the Emirates ID chip can be read over the device’s built-in NFC instead of a USB reader — no smart card hardware needed. See the Android guide. Not available on desktop.
Passport
Manual entry
Type the passport details — no hardware required. No biometric variant.
| Field | Required | Notes |
|---|
passportNumber | yes | |
passportType | yes | e.g. P |
nationality | yes | ISO-3 country code |
dateOfBirth / issueDate / expiryDate | no | As required |
clientReferenceId | no | Optional UUID (see below) |
let req = PassportManual(
passportNumber: "...",
passportType: "P",
nationality: "IND")
Choosing a method
The result
Every method resolves to a VerificationResult:
| Field | Notes |
|---|
success | Whether the identity was verified |
message | Human-readable status |
dataJson | JSON string with the verified resident/identity data (when successful) |
clientReferenceId | Echoes your request value (or a generated UUID) |
The data payload holds the resident’s verified details — Verification response documents every field it can contain.
Client reference ID
clientReferenceId ties a verification back to your own records — it’s echoed on the result and shown on the transaction.
It must be a UUID. If you omit it, the Validation Gateway generates one. If you supply a value that isn’t a valid UUID, it is silently ignored and replaced — so you’d lose your correlation with no error. Generate a UUID per verification (e.g. 3fa85f64-5717-4562-b3fc-2c963f66afa6).
The request type is named idiomatically per language but maps to the same method:
| Concept | Swift / Kotlin / C# | TypeScript kind | C request_type |
|---|
| EID — manual | EmiratesIdManual | emiratesIdManual | ..._EMIRATES_ID_MANUAL |
| EID — card read | EmiratesIdCard | emiratesIdCard | ..._EMIRATES_ID_CARD |
| EID — + fingerprint | attach fingerprint: to the above | fingerprint field | ..._BIOMETRIC variant |
| EID — NFC | EmiratesIdNfc (Android) | emiratesIdNfc | (Android only) |
| Passport — manual | PassportManual | passportManual | ..._PASSPORT_MANUAL |