Skip to content

Flutter SDK Reference ​

Every public class, property and method in the eKYC Flutter plugin. See Flutter SDK Integration for the integration guide.

CakeEkycPlugin ​

class CakeEkycPlugin

FieldTypeDescription
initialize(config)Future<Either<EkycFailure, bool>>Initializes the plugin. Returns true on success.
takeNID(config)Future<Either<EkycFailure, NIDCardResult>>Captures NID → uploads → checks sanity → checks tampering → extracts info.
takeFaces(config)Future<Either<EkycFailure, SelfieResult>>Captures faces → uploads → checks sanity → checks liveness.
upload(uploadImageRequests)Future<Either<EkycFailure, List<EkycResponse<UploadImageResult>>>>Uploads a list of images.
checkNIDSanity({imageId, imageId2, cardType, specialTypeId})Future<Either<EkycFailure, EkycResponse<NIDSanityData>>>Checks the sanity of an NID card.
checkNIDTampering({imageId, imageId2, cardType, level})Future<Either<EkycFailure, EkycResponse<NIDTamperingData>>>Checks for tampering on an NID card.
readNIDInfo({imageId, imageId2, cardType})Future<Either<EkycFailure, EkycResponse<NIDCardData>>>OCR the NID card.
checkFaceSanity({imageId})Future<Either<EkycFailure, EkycResponse<FaceSanityData>>>Checks the sanity of a face image.
checkFaceLiveness({imageIds})Future<Either<EkycFailure, EkycResponse<FaceLivenessData>>>Checks liveness of face images.
compareFaces({imageId, imageId2})Future<Either<EkycFailure, EkycResponse<FaceComparingData>>>Compares two face images.
eventStreamStream<EkycEvent>Emits capture events while a flow runs.

Results ​

NIDCardResult ​

Mirrors the Android and iOS shape: cardType, frontSideImage, backSideImage, qrData, sanityResult, tamperingResult, cardInfo.

SelfieResult ​

FieldTypeDescription
facesList<Face>?Captured faces.
sanityResultsList<EkycResponse<FaceSanityData>>?Sanity response per face image.
livenessResultEkycResponse<FaceLivenessData>?Liveness check result.

Note this property is sanityResults (plural) in Flutter, versus sanityResult on Android and iOS.

Face ​

FieldTypeDescription
imageEkycImage?The portrait image.
gestureStringFace gesture: frontal, left, right, up, down.

Configuration ​

Config ​

FieldTypeDescription
languageCodeStringvi or en.
baseUrlStringBase URL for network requests.
networkConfigNetworkConfigNetwork configuration settings.
accessTokenAccessToken?Authentication token provider.
loggerLogger?Log sink.
exposeImagebool?Save images to local files. Defaults to false.

NetworkConfig ​

FieldTypeDescription
readTimeoutMilliSecondsintRead timeout, defaults to 0.
writeTimeoutMilliSecondsintWrite timeout, defaults to 0.
connectTimeoutMilliSecondsintConnection timeout, defaults to 0.
callTimeoutMilliSecondsintTotal call time, defaults to 60000.

Logger ​

FieldTypeDescription
info(log)voidLogs an informational message.
error(log)voidLogs an error message.
warning(log)voidLogs a warning message.

TakeNIDConfig ​

FieldTypeDescription
cardTypeCardTypeCard type, defaults to CardType.CCCD.
cardSidesList<CardSide>Sides to capture, defaults to [Front, Back].
requiredReviewboolRequire review, defaults to true.
autoCaptureEnableboolAuto-capture once quality passes, defaults to true.
requiredScanQRboolRequire QR scanning, defaults to false.
captureOnlyboolCapture-only mode, defaults to false.
otherSideImagesMap<CardSide, EkycImage>The already-captured other side.

TakeFaceConfig ​

FieldTypeDescription
captureOnlyboolCapture-only mode, defaults to false.

Data Types ​

EkycImage ​

FieldTypeDescription
idString?Unique identifier after uploading.
labelString?Label describing the image.
fileString?The image file.

UploadImageRequest / UploadImageResult ​

FieldTypeDescription
filePathString?Location of the image.
labelString?Label describing the image.
metaDataString?Upload metadata.
imageIdString?The image identifier after uploading. Result only.

EkycResponse ​

FieldTypeDescription
dataT?The response data.
errorList<EkycErrorDetail>?Error details.
codeint?Response status code.
messageString?Response message.
signatureString?Response signature.
signatureTimestampString?Signature timestamp.
rawDataString?Raw data string.
requestString?The request.

Unlike Android and iOS, the Flutter EkycResponse has no responseBody property.

EkycErrorDetail ​

FieldTypeDescription
codeString?Error code.
messageString?Error description.

CardType / CardSide ​

FieldTypeDescription
idStringCard type identifier, e.g. vn.national_id.
nameStringCard type name, e.g. id_card.vn.national_id.
CCCDstatic CardTypeVietnamese National ID.
front backCardSideFront and back of the NID.

NIDSanityData / CardSanity / NIDImageInfo ​

FieldTypeDescription
statusString?success or failure.
cardSanityCardSanity?Card sanity details.
image1 image2NIDImageInfo?NID images used.
requestIdString?Request identifier.
verdictString?good when the check passed.
scoredouble?Confidence score.
infoString?Additional information.
idString?Image identifier.
transformedImageIdString?Transformed image identifier.
cardBoxCardBox?Card bounding box.

NIDTamperingData / CardTampering / TamperingDetail ​

FieldTypeDescription
statusString?Status of the tampering check.
cardTamperingCardTampering?Tampering details.
requestIdString?Request identifier.
imageId imageId2String?Images used.
verdictString?good when passed, otherwise the specific signal.
scoredouble?Confidence score.
detailsList<TamperingDetail>?Individual tampering signals.

NIDCardData / ExtractedData ​

FieldTypeDescription
statusString?Status of the extraction.
extractedDataOnImage1 extractedDataOnImage2ExtractedData?Data per image.
cardInfoList<CardInfo>?Consolidated card information.
requestIdString?Request identifier.
qrQRData?QR code data.
ocrOCRData?OCR data.
mrzDataMRZData?MRZ data.

QRData / OCRData / MRZData / ParsedField / CardInfo ​

FieldTypeDescription
parsedFieldsList<ParsedField>?Parsed fields from this source.
rawString?Raw value. QRData only.
confidenceScoredouble?Confidence in the extraction.
keyString?Field name.
valueString?Field value.
confidenceVerdictString?Confidence verdict.
confidentScoredouble?Confidence score. CardInfo only.

CardBox / Point ​

FieldTypeDescription
topLeft topRight bottomLeft bottomRightPoint?Corners of the card box.
x ydouble?Point coordinates.

FaceSanityData / PortraitSanity / PortraitImageInfo ​

FieldTypeDescription
statusString?Status of the face sanity check.
portraitSanityPortraitSanity?Sanity details.
requestIdString?Request identifier.
imagePortraitImageInfo?Portrait image information.
isSanityPassed()boolTrue when the verdict is good.
verdictString?Outcome of the sanity check.
scoredouble?Confidence score.
idString?Portrait image identifier.

FaceLivenessData / LivenessResult ​

FieldTypeDescription
statusString?Status of the liveness check.
isLivebool?Whether the face is live.
scoredouble?Confidence score.
resultsList<LivenessResult>?Per-image results.
requestIdString?Request identifier.
mainImageIdString?Main image used.
idString?Image identifier. Result only.

FaceComparedData / ComparedResult ​

FieldTypeDescription
statusString?Status of the comparison.
comparedResultsList<ComparedResult>?Comparison results.
requestIdString?Request identifier.
face1Id face2IdString?The compared face image ids.
scoredouble?Similarity score.
resultString?matched or not matched.

INFO

compareFaces is declared to return EkycResponse<FaceComparingData> while the data class is named FaceComparedData. Treat them as the same type.

Events and Errors ​

EkycEvent ​

FieldTypeDescription
idintEvent identifier.
paramsMap<String, dynamic>Event parameters.
timestampintCreation time in milliseconds.
faceSelfieAssessingResultEvent-1001Face selfie assessment result.
nidAssessingResultEvent-1003NID assessment result.
nidCaptureStartedEvent-1008NID capture started.
nidCaptureEndedEvent-1009NID capture ended.
nidReviewStartedEvent-1010NID review started.
nidShuttleClickedEvent-1011Shutter clicked.
nidAutoCaptureSelectedEvent-1012Auto-capture selected.
nidReviewEndedEvent-1013NID review finished.
nidReviewAcceptClickedEvent-1014Accept clicked.
nidReviewDenyClickedEvent-1015Deny clicked.
faceCaptureStartedEvent-1016Face capture started.
faceCaptureEndedEvent-1017Face capture ended.
backBtnClickedEvent-1018In-screen back button clicked.

EkycFailure ​

FieldTypeDescription
timeOutErrorCode40000Timeout.
userCancelErrorCode40001User cancellation.
permissionErrorCode40002Permission denial.
cameraErrorCode40003Camera error.
unexpectedErrorCode50000Unexpected error.
nidSanityFailed60000NID sanity failure.
nidTamperingFailed60001NID tampering failure.
faceSanityFailed60002Face sanity failure.
faceLivenessFailed60003Face liveness failure.
codeStringThe error code.
messageString?Error detail message.
causeException?The underlying error.

UI Setting Types ​

Passed through Config.uiSetting. See Flutter SDK § Customize UI.

FieldTypeDescription
darkThemeSettingEkycThemeSettingDefault theme for capture, QR and selfie screens.
lightThemeSettingEkycThemeSettingDefault theme for confirm and loading screens.
nidCaptureScreenSettingNIDCaptureScreenSettingNID capture screen overrides.
nidConfirmScreenSettingNIDConfirmScreenSettingNID confirm screen overrides.
nidFeedbackLookupTableNIDFeedbackLookupTableFeedback message overrides for NID capture.
scanQRScreenSettingNIDScanQRScreenSettingQR scanning screen overrides.
selfieScreenSettingSelfieScreenSettingSelfie screen overrides.
selfieFeedbackLookupTableSelfieFeedbackLookupTableFeedback message overrides for selfie capture.
loadingScreenSettingLoadingScreenSettingLoading screen overrides.

Next Steps ​

Developers