# Changelog

## v3.4

* **Bug fix:** `KL_BIOM_ERROR_FILTER_TRIGGERED` \[422] is now correctly returned in all cases where the image fails to pass our image quality checks. Previously there were occurrences where an `KL_BIOM_ERROR_BAD_INPUT` \[500] error was returned.

## v3.3.1

* Minor bug fixes.

## v3.3.0

* The biometric library is using an improved face detector, which in-turn should improve successful enrollment rates for customers.
* The default value for `MAX_CONCURENCY` is now aware of the cpu limits placed on the docker container instead of using just the number of CPUs, which should improve both performance and stability.

## v3.2.0

* Updated to the latest biometric library.
* This includes the removal of `filter_face_has_mask` which is now redundant.

## v3.1.0

* **Added support for device type and origin** - in order to improve performance metric insights and functionality (whether a device can be safely removed) we are adding deviceType and deviceOrigin  across the Keyless infrastructure, including IDV Bridge On-Premise in online enrollment mode.
  * This type of insight will also be visible in the dashboard soon (Q3 '25)&#x20;

```
deviceType:
	- "SDK"
	- "BACKUP"
	- "TEMPORARY_STATE"
deviceOrigin:
	- "ANDROID"
	- "IOS"
	- "KEYLESS_AGENT"
	- "WEB"
```

## v3.0.0

**Highlights**

* **Performance -** New memory management system reduces memory leaks and the need for any auto-resets.&#x20;
* **Audibility -** Full JSON logs are now available without any non-JSON print statements.
* **Security** - Keyless can now be run in both root and non-root configurations. On top of this we've reduced the docker image to the smallest yet and conducted a fresh round of vulnerability scans.

**Memory management**\
The new memory management system allows integrator to specify how many biometric sessions can run in parallel. This effectively limits the memory max memory usage. Where previous version needed to have 6GB of memory, this version only requires 1GB for the same throughput. Estimated [performance and throughput](https://docs.keyless.io/idv-bridge/readme/idv-bridge-on-premise/how-to-run-keyless-agent#performance-and-throughput) is summarized here though note actual performance will vary depending on the customer's own hardware.\
\
**Breaking changes**

* The deprecated endpoint `/enrollment-data` has been removed.
* Due to the new memory management system described above integrators of 2.x.x need to make a small configuration change which is outlined in the [Memory management](https://docs.keyless.io/idv-bridge/readme/idv-bridge-on-premise/how-to-run-keyless-agent#memory-management) section of How to Run Keyless Agent.

***

## v2.x.x

**Breaking changes and deprecations**

The original offline enrollment endpoint ( `/enrollment-data` ) is now deprecated and will be removed. Most of its API stay the same except the error reporting. Since IDV Bridge On-Premise now uses a new biometric SDK, error names have completely changed.

Integrators are advised to switch to the new endpoint ( `/v1/offline-enrollment` ) as soon as possible or consider if online enrollment better suits their use-case.

**Migration from** `/enrollment-data` to `/v1/offline-enrollment`

With the new endpoint the integrator must choose a scenario (using `Scenario` header). Scenario is similar to `config` query parameter in the old endpoint.

* `SELFIE` scenario is similar to `config=default` in the old endpoint. This is also a default on old endpoint.
* `TRUSTED_SOURCE` scenario is similar to `config=less-strict` in the old endpoint.
* `DOCUMENT` this scenario has no equivalent in the old endpoint.

Final items to note:

* The request body is the same.
* The response now follows camelCase naming convention and `stats` field has been removed.
* The error response is now more detailed and follows the same naming convention as the rest of the API.
