BWS 3 one-to-many face match is under review!
To effectively use the BWS Search API, your database must be a closed registry, including only users who have provided explicit, verifiable consent for their data to be processed. Explicit consent involves clearly informing users about the purpose and scope of data processing and obtaining their clear and affirmative agreement.
The BWS 3 Search API is designed for querying closed-loop user groups using customer-defined tags. Developers are responsible for ensuring deployment aligns with the EU AI Act’s requirements for high-risk AI systems, particularly Articles 9 and 10. This includes maintaining robust data governance practices, such as keeping query history logs directly linked to administrative audit trails.
Performs a one-to-many comparison of the uploaded face images with stored biometric templates in order to find matching persons in the database.
This method creates biometric feature vectors for all of the provided face images. To perform the comparisons, all biometric templates to compare are then fetched from the database (their digital signature is verified and they may get decrypted) according to the specified list of tags.
As the process of fetching (verification and decryption) of the biometric face templates from the database is more time-consuming than the actual comparison with the calculated feature vectors, we support bulk processing of multiple input images here. This speeds up the average comparison time a lot.
Anyway, the method has a timeout (a backend response read timeout), that may abort the call after 10 minutes.
POST /api/face/v1/search
The HTTP request body contains the array of images to enroll.
Content type: application/json
{
"images": [
{
"image": "string"
}
],
"tags": [
"string"
],
"topMatches": true
}
The Search request object has a the fields as follows:
imagestagstop_matchestrue.
The maximum API request size is 50 MB. This is the only limitation for the number of input images.
This API requires a valid JWT in the Authorization request header and accepts an optional reference number.
| Authorization | Required Bearer authentication. Please refer to BWS API Authentication for a description of how to provide a valid JWT here. |
| Reference-Number | Required client specific reference number, which will be added to the BWS bookkeeping as well as to the response header. Pass an audit-trail transaction ID here, which generates the exact compliance evidence trial required by EU AI Act auditors to prove the tool is performing administrative validation and not mass surveillance. |
Content type: application/json
{
"status": "SUCCEEDED",
"errors": [
{
"errorCode": "string",
"message": "string"
}
],
"imageProperties": [
{
"rotated": 0,
"faces": [
{
"leftEye": {
"x": 0,
"y": 0
},
"rightEye": {
"x": 0,
"y": 0
},
"textureLivenessScore": 0,
"motionLivenessScore": 0,
"movementDirection": 0
}
],
"qualityScore": 0,
"qualityAssessments": [
{
"check": "string",
"score": 0,
"message": "string"
}
],
"frameNumber": 0
}
],
"result": [
{
"matches": [
{
"classId": 0,
"score": 0
}
]
}
]
}
On success the API returns an Enrollment response object with the fields as follows:
statuserrorsimagePropertiesresultSearchResult is created and returned in the order of the provided input images.
A SearchResult again is a sorted list (by score) of TemplateMatchResult messages containing
the identified classes or the best matches, depending on the topMatches flag in the request.
classIdscorePlease note, that this method might be a long running task, as all biometric templates need to be fetched from the database, its digital signature need to be verified and the template may need to be decrypted before it can be compared with the calculated face feature vectors. Therefore using bulk processing (sending more than one image simultaneously) and restriction to user-groups (by using tags) can speed up this method immense.
Possibly some errors might have been reported:
The call returns one of the standard HTTP status codes, e.g.:
code and message.All successful BWS calls return a response header containing additional information about the request:
| jobid | The Job-ID (a GUID) that has been assigned to this BWS call. |
| bws-version | The version of the BWS gRPC service. |
| reference-number | An optional reference number as provided in the request header. |
| date | The timestamp when the request has been received at the server. |
| ... | Other headers that might have been added by the server (NGINX, Kestrel, ...) that was handling the request. |