biometry
A Flutter package for integrating with the Biometry API to provide biometric authentication and verification services.
2.0.0
Namadgi/biometry-flutter
What this package is like to depend on
Last release 1 months ago
23 Jul 2026
Ships fairly regularly
a new release about every 2 months
Nearly every release is documented
notes for 15 of 15 stable releases
1 version withdrawn
withdrawn after publishing
2 years old
16 releases · first in 2024
9 releases in the last 12 months
see the full history below
Release timeline
16 releases · Aug 2024 to Jul 2026Releases
latest 16-
2.0.023 Jul 2026Release notes
Open source →Added
userIdparameter (required) onBiometry.initialize()— the opaque, customer-provided identity key the v2 API uses to identify users.livenessCheck(),faceVerify(),voiceVerify(), anddeepfakeCheck()methods, replacingprocessVideo().faceMatch()acceptsuseSessionVideo(defaults totrue, matching the old hardcoded behavior) and an optionalvideofile for when it'sfalse.docAuth()accepts optionalproviderandmrzProvideroverrides.endSession()accepts an optionalphoneNumberto run a SIM-swap fraud check when ending the session.approveConsent({consentId})andgetConsentApprovals(), with a newConsentApprovalmodel (consentId,userId,approvedAt).clientAppNameandclientAppVersionparameters onBiometry.initialize(), sent asX-Client-App/X-Client-App-Versionheaders on every request (carried forward from 1.0.9).
Changed
- Migrated to the Biometry v2 REST API (
/api-gateway/v2/*) across every endpoint: sessions, document verification, face/voice enrollment, and face matching. assertConsent()now takes a requiredconsentIdand checks it againstgetConsentApprovals(), instead of checking a cached boolean flag.
Removed (Breaking)
fullNameis no longer sent to the API — it's local/display-only now; passuserIdinstead for API calls.processVideo()removed — v2 has no single call that both authenticates and auto-enrolls; uselivenessCheck(),faceVerify(),voiceVerify(), and/ordeepfakeCheck()individually.allowConsent(),allowStorageConsent(),getConsentHistory(), and theConsentHistoryResult/ConsentRecord/ConsentHistoryEntrymodels removed — replaced byapproveConsent()/getConsentApprovals()/ConsentApproval. v2 has no consent-revoke endpoint — there is currently no way to withdraw a recorded approval.BiometryGeoLocation,setGeoLocation(), and thegeoLocationparameter oninitialize()removed — v2 has no geolocation field.- Device-info collection removed (the
X-Device-Infoheader and thedevice_info_plus/recasedependencies) — v2 has no device-info field.
Fixed
scanDocument()now correctly handles theflutter_doc_scanner^0.0.21 API (ImageScanResult/DocScanException) instead of the old rawList/Map/PlatformExceptionshape — the previous implementation silently returned an empty path on every scan against the actually-resolved plugin version.
This is a breaking release. Every consumer needs to: pass
userIdtoinitialize(), replaceprocessVideo()calls with the new granular verification methods, and migrate consent handling to the approval-based API. See the README for updated usage examples.Published to pub.dev on 2026-07-23.
-
1.0.1011 Mar 2026Release notes
Open source →Retroactively added — published to pub.dev but missing from this changelog's history until now.
Fixed
- scanDocument(): Fixed "no image path received" exception by updating the document scanning logic to support the breaking API changes in
flutter_doc_scanner0.0.17+ (typedImageScanResultreturn).
Changed
- Updated
flutter_doc_scannerdependency constraint to^0.0.18.
- scanDocument(): Fixed "no image path received" exception by updating the document scanning logic to support the breaking API changes in
-
1.0.910 Mar 2026Release notes
Open source →Retroactively added — published to pub.dev but missing from this changelog's history until now.
Added
- Client app metadata headers:
Biometry.initialize()accepts two new optional parameters —clientAppNameandclientAppVersion. When provided,X-Client-AppandX-Client-App-Versionheaders are attached to every request sent to the API gateway (session start/end, docAuth, processVideo, enrolFace, enrolVoice, faceMatch).
No breaking changes.
- Client app metadata headers:
-
1.0.809 Mar 2026Release notes
Open source →Added
- Reference frame for face match (cross-device):
Biometry.initialize()accepts optionalreferenceFramePathto use a local reference image without callingdocAuth()first. - Server-extracted reference frame:
setReferenceFrameFromTransaction(transactionId)fetches the frame from the Biometry samples API (X-Request-IdfromprocessVideoresponse) and sets it as the face reference — works on any device that has the transaction ID. - Client-extracted reference frame:
extractReferenceFrame(videoFile)extracts a frame from a video file and saves it as the reference (e.g. for offline or testing). faceMatch()now sets the request content-type from the reference image file extension (image/jpegfor.jpg/.jpeg,image/pngotherwise).
Changed
- Consent history API:
ConsentHistoryResult.consentandConsentHistoryResult.storageConsentare now nullable (ConsentRecord?) to match the API (one consent type can be null). Code that formats or displays consent must handle null. - getConsentHistory(): A 404 response now returns a
ConsentHistoryResultwith both consent fields null instead of throwing. Non-404 errors still throw with a clear message. Parse/unexpected-format failures throw with an "Unexpected consent history response format" message instead of "No consents found". - assertConsent(): Handles null
consentbefore readingisConsentGiven. - Samples API: Response key for the extracted frame is read as
login-extracted-frame(hyphenated) with fallback tologin_extracted_frame. Reference frame download uses a separatehttp.get()for the signed GCS URL so the Biometry auth header is not sent to storage.
Fixed
- Consent history parsing no longer throws when the API returns null for
consentorstorage_consent. - Correct handling of the Get samples response format per Biometry API docs.
Note: No breaking API changes for callers that null-check or use optional consent fields. Callers that assumed non-null
consent/storageConsentneed to add null checks. - Reference frame for face match (cross-device):
-
1.0.723 Feb 2026Release notes
Open source →Added
- New
getConsentHistory()method to retrieve the full consent history for the current user, returning a typedConsentHistoryResultwith both authorization and storage consent records including their histories. - New model classes:
ConsentHistoryResult,ConsentRecord, andConsentHistoryEntryfor typed access to consent history data. - Consent guard:
processVideo(),docAuth(),faceMatch(),enrolFace(), andenrolVoice()now verify that the user has given authorization consent before executing. The consent check is fetched once per session and cached — no extra network call on subsequent operations. - Example app now includes a "View Consent History" button in the Consent Management section.
Note: No breaking API changes; library API remains backward-compatible.
- New
-
1.0.631 Dec 2025Release notes
Open source →Changed
- Session warmup is now enabled by default by calling
sessions/start?warmup=trueto reduce first-call latency. - Updated example assets and tests to reflect the warmup-enabled session initialization flow.
- Session warmup is now enabled by default by calling
-
1.0.529 Dec 2025Release notes
Open source →Added
- Support for optional geolocation information in all transactions via the
X-Geo-Locationheader - New
BiometryGeoLocationclass to represent latitude, longitude, country, city, and optional IP address geoLocationparameter inBiometry.initialize()to set geolocation during initializationsetGeoLocation()method to update geolocation information at any time- Example app now includes automatic device location detection with reverse geocoding
Changed
- Centralized header management using
_addCommonHeaders()internal method - Refactored all API methods to consistently include device telemetry and geolocation headers
- Example app uses
LocationAccuracy.mediumwith 15-second timeout for better battery efficiency
Technical Details
- Geolocation data is included in all API requests when provided
- If geolocation is not provided, the API falls back to IP-based lookup (existing behavior)
- Example app includes permission handling and reverse geocoding using OpenStreetMap Nominatim API
Note: No breaking API changes; library API remains backward-compatible.
- Support for optional geolocation information in all transactions via the
-
1.0.402 Nov 2025Release notes
Open source →Added
- Example app UX improvements: animated results panel, progress/loading states, and clearer form validation and error messages.
- Additional inline docs and debug logs to help integrate and troubleshoot
Biometry.initializeand video processing flows. - New API:
Biometry.resetPhrase()to regenerate the 7-digit verification phrase (unique digits) at any time, using the same logic as during initialization.
Changed
- Polished example app UI and state management for initialization and processing flows.
- Updated iOS example project settings to target iOS 13+ consistently and set
PERMISSION_CAMERA=1in Pod build settings. - Refreshed README badges, links, and setup instructions; clarified automatic enrollment notes around
processVideo(). - Minor metadata updates in
pubspec.yaml.
Fixed
- Minor typos and formatting across README and in-code comments.
- Improved example tests and minor adjustments in
example/test/widget_test.dart.
Note: No breaking API changes; library API remains backward-compatible.
-
1.0.329 Sep 2025Release notes
Open source →Added
- Support for automatic enrollment when both consent and storage consent are given before
processVideo() - Enhanced logging for
processVideo()response including status, headers, and body - Documentation for new automatic enrollment behavior
Changed
- Reduced phrase length from 10 digits to 7 digits for better user experience
- Updated documentation to explain automatic enrollment feature
- Enhanced
processVideo()method documentation
Fixed
- Improved response logging for better debugging and monitoring
- Support for automatic enrollment when both consent and storage consent are given before
-
1.0.221 May 2025Release notes
Open source →Changed
- Bumped dependencies in
pubspec.yamlto their latest compatible versions for improved stability and performance. - Refreshed and corrected README links to point to the most up-to-date documentation and resources.
- Bumped dependencies in
-
1.0.121 May 2025Release notes
Open source →Added
- Enhanced example app with updated UI, session management, and integrated biometric actions.
- Added face and voice enrollment
Changed
- Updated documentation for setup, security, and contribution guidelines.
- Refactor biometric scanning widget
- Refactor biometry logic
- Upgraded to Dart 3 and Flutter 3.29.0 with new dependencies for audio, camera, and video processing.
Fixed
- Improved error handling and metadata collection for better cross-platform support.
Tests
- Added widget and integration tests for biometric features.
-
1.0.023 Mar 2025Release notes
Open source →Added
- Initial stable release of the Biometry Flutter package.
- Support for secure biometric authentication via video-based face and voice recognition.
- Integrated document scanning using flutter_doc_scanner.
- Biometric scanning widget (BiometryScannerWidget) for capturing user video with dynamic phrase prompts.
- API integration for document authentication (docAuth), video processing (processVideo), and user consent management (allowConsent).
- Device telemetry and metadata collection for audit and security purposes.
- Customisable and testable API client with injectable HTTP client for unit tests.
Changed
- Improved package structure for better maintainability and extensibility.
- Enhanced documentation tailored for security-sensitive deployments.
-
0.1.306 Feb 2025Release notes
Open source →Changed
- Enhanced
convertKeysToSnakeCaseto support recursive conversion of nested maps and lists, ensuring consistentsnake_caseformatting for deeply nested device information.
Fixed
- Addressed an issue where nested maps and lists were not properly converted to
snake_case, leading to inconsistent data formats.
- Enhanced
-
0.1.222 Aug 2024Release notes
Open source →Added
- Added documentation comments to public members of the
Biometryclass to resolvepublic_member_api_docslint warnings.
Changed
- Updated
example/pubspec.yamlto remove 'path' dependencies for publishable package compliance.
- Added documentation comments to public members of the
-
0.1.122 Aug 2024Release notes
Open source →Fixed
- Fixed a bug where the
processVideomethod would incorrectly handle file lengths. - Moved
http_parserfromdev_dependenciestodependencies.
- Fixed a bug where the
-
0.1.022 Aug 2024 withdrawnRelease notes
Open source →Added
- Initial release of the Biometry package.
- Added support for video processing for biometric verification.
- Included seamless integration with the Biometry API.