Skip to main content
Version: 1.17.1

Facial recognition

General incorrect input errors

Errors occured when uploading an image via API

Invalid base64 string:

{
"message": "image file is truncated (21 bytes not processed)"
}

Image not transferred in base64:

{
"message": "Expected value of type 'CustomBinaryType', found \"wrong_data\";
}

No image transmitted:

{
"message": "Sample Data is not valid",
"code": "0xc69c44d4"
}

Image uploaded in an incorrect format:

{
"message": "Image decode failed"
}

No faces detected in the image:

{
"message": "No faces found",
"code": "0x95bg42fd"
}

Too big image size:

Bad Request (400)

Errors occured in filtering, pagination and sorting

Transmitted filters are not in dictionary format:

{
"message": "'str' object has no attribute 'keys'"
}

Invalid field used for filtering:

{
"message": "Cannot resolve keyword '' into field. Choices are: creation_date, id, info, last_modified, link_to_label, person, person_id, profile_groups, samples, workspace, workspace_id"
}

Using an invalid field to filter sub-objects or a function over a field:

{
"message": "Unsupported lookup '1' for UUIDField or join on the field not permitted."
}

Negative value specified in the pagination fields:

{
"message": "Negative indexing is not supported."
}

Invalid field used for ordering:

{
"message": "Cannot resolve keyword '' into field. Choices are: creation_date, id, info, last_modified, link_to_label, person, person_id, profile_groups, samples, workspace, workspace_id"
}

Remaining general errors

Object id given in a non-UUID format:

{
"message": "“%(value)s” is not a valid UUID."
}

Transmitted JSON did not pass validation by JSON schema:

{
"message": "Invalid JSON request"
}

Face detection

This query allows you to detect multiple faces in the image and get information about these faces (such as gender, age, emotions, Liveness, mask presence, etc.). You can use this query if you're interested in detection result only, without saving it in your local database.

Attention! This query will be available until 2024.

detect(image: CustomBinaryType!): JSON!

Input parameters:

image: CustomBinaryType!: Base64 encoded image

Output parameters:

JSON! : API returns a sample in JSON format that contains the following parameters:

  • image: Base64 encoded image
  • id: The ordinal number of a face in the image
  • confidence: Degree of detection confidence. It shows how confident the system is, from 0 (0%) to 1 (100%), that the bbox contains a face
  • class: Object class name, e.g., face
  • template: A unique set of biometric features extracted from a face image. Templates are used to compare two face images and to determine a degree of similarity.
  • bbox: A rectangle that represents face bounds in the image. Bbox coordinates are calculated relative to the coordinates of the original image.
  • quality: Face image quality assessment
  • keypoints: A collection of 21-point face landmarks pointing to the positions of face components.
  • rotation angles: Head rotation angles: Yaw (rotation along Y axis), pitch (rotation along Z axis) and roll (rotation along X axis). OMNI Platform algorithm allows to detect faces in the following range of angles: yaw [-60; 60], pitch [-60; 60], roll [-30; 30]
  • age: Age in years
  • gender: Gender of a person in the image
  • emotions: Facial emotions described in a form of confidence
  • liveness: Integrated liveness algorithm allows to detect if a person in the image is real or fake.
  • mask presence: The system can detect if a person in the image is wearing a mask.

Example Request:

query{
detect(image:"your image in Base64 format")
}

Example Response:

API returns the following result:
  {
"data": {
"detect": {
"$image": "/9j/2wBDAAYEBQYFBAYGBQYHBwYIChAKCgkJChQODwwQFxQYGBcUFhYaHSUfGhsjHBYWICwgIyYnKSopGR8tMC0oMCUoKSj/2wBDAQcHBwoIChMKChMoGhYaKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCj/wAARCAMIAlgDASIAAhEBAxEB/8QAHQABAAIDAQEBAQAAAAAAAAAAAAMEAgUGAQcICf/EAD4QAAIBAwQBAwMDAwIEBgEEAwECAAMEEQUSITFBBiJRBxNhFDJxI0KBFZEzUqGxCBYkU2LBchc0Q5JU0fD/xAAaAQEBAQEBAQEAAAAAAAAAAAAAAQIDBAUG/8QAKREBAQACAwACAgIDAQEAAwEAAAECEQMhMRJBBFETYQUiMnEzFCNCUv/aAAwDAQACEQMRAD8A/VMREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBESK4uaNshevVSmo7LHEbEsTVHXrAjclYPT/9xeV/3mp1T1/6f04sta/pbwM43TFzxntamFrq4JxPl2q/Wf09aWm+hWWtW8IpzOKv/wDxB0kGylYM5brHiZvNj9NfxZP0KWUeR/vPQcjiflnXPrXf31qEsdOr0Kx4FQniaq3+q/rS2tjSS5tCjc7nzkSTl39N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",
"objects@common_capturer_uld_fda": [
{
"keypoints": {
"left_eye_brow_left": {
"x": 0.2940800476074219,
"y": 0.4313203084100153
},
"left_eye_brow_up": {
"x": 0.35902130126953125,
"y": 0.42319158180472777
},
"left_eye_brow_right": {
"x": 0.43263498942057294,
"y": 0.43451883375030204
},
"right_eye_brow_left": {
"x": 0.565786844889323,
"y": 0.4343290034028673
},
"right_eye_brow_up": {
"x": 0.6382040913899739,
"y": 0.42528478878060566
},
"right_eye_brow_right": {
"x": 0.7065006001790365,
"y": 0.43291253158726645
},
"left_eye_left": {
"x": 0.32950632731119794,
"y": 0.47530125096901177
},
"left_eye_right": {
"x": 0.4282377624511719,
"y": 0.47997795183634023
},
"right_eye_left": {
"x": 0.5691919962565104,
"y": 0.47942470275249677
},
"right_eye_right": {
"x": 0.6719444274902344,
"y": 0.4766456368043251
},
"left_ear_bottom": {
"x": 0.25934483846028644,
"y": 0.5818203405006644
},
"nose_left": {
"x": 0.436883544921875,
"y": 0.6018702320216858
},
"nose": {
"x": 0.49127588907877606,
"y": 0.6079880625931258
},
"nose_right": {
"x": 0.5529693603515625,
"y": 0.6020684389723945
},
"right_ear_bottom": {
"x": 0.7602718098958333,
"y": 0.5807907261799291
},
"mouth_left": {
"x": 0.4122229258219401,
"y": 0.6909481717139175
},
"mouth": {
"x": 0.4969175720214844,
"y": 0.6967798606636598
},
"mouth_right": {
"x": 0.5805330403645833,
"y": 0.6914502959890464
},
"chin": {
"x": 0.4999645487467448,
"y": 0.8165891981616462
},
"left_pupil": {
"x": 0.38032012939453125,
"y": 0.47217351382540673
},
"right_pupil": {
"x": 0.6200020853678385,
"y": 0.47379448487586584
},
"fitter_type": "fda"
},
"confidence": 0.9137135148048401,
"id": 0,
"bbox": [
0.18,
0.22809278350515463,
0.8766666666666667,
0.7744845360824743
],
"class": "face",
"liveness": {
"confidence": 0.9981284141540527,
"value": "REAL",
"message": ""
},
"gender": "MALE",
"age": 23,
"emotions": {
"angry": 0.020445719123569125,
"disgusted": 0.000006799623868433724,
"scared": 0.00007188241130726871,
"happy": 0.0017645616973303066,
"neutral": 0.9051782012203881,
"sad": 0.07035732539867154,
"surprised": 0.0021755105248652835
},
"quality": {
"total_score": 0.98,
"is_sharp": true,
"sharpness_score": 0.99,
"is_evenly_illuminated": true,
"illumination_score": 0.97,
"no_flare": true,
"is_left_eye_opened": true,
"left_eye_openness_score": 0.99,
"is_right_eye_opened": true,
"right_eye_openness_score": 0.99,
"is_rotation_acceptable": true,
"max_rotation_deviation": -6,
"not_masked": true,
"not_masked_score": 1,
"is_neutral_emotion": true,
"neutral_emotion_score": 0.98,
"is_eyes_distance_acceptable": true,
"eyes_distance": 143,
"is_margins_acceptable": false,
"margin_outer_deviation": 0,
"margin_inner_deviation": 8,
"is_not_noisy": true,
"noise_score": 1,
"watermark_score": 0.01,
"has_watermark": false,
"dynamic_range_score": 2,
"is_dynamic_range_acceptable": true,
"background_uniformity_score": 1,
"is_background_uniform": true
},
"mask": {
"confidence": 0.005096018314361572,
"value": false
},
"templates": {
"$template12v1000": "qjdp2U7ABD4AQhD1AVROQgbF78UgBaBeovQ+8CAiAe9gsSRLcQ9QAjzpIOBAkdcSShBUEk+wRavTLgBpLbQCRATe4t3cvtfeHksg8CAuIxA/MfALNu8e1MAOHxACPFPg80AXrSJX8PEC4L5SKQIfEARzEx0E+RRwJwouIlITbmAzAXZFsFli0Uz50Cd6MwvBvx7fzQRhEj8EEDcqHx1D/A0f8zDwX+D/4GrWBA1Rvs7gHg0UADmfG/1BItwCBhBwAnUA/3AGUDowkyOvwMDelA9EuiZAVA0EIO2gRkEN8/s+kQtW8ZFQQQ5b10P1Ee0QNBvPAHYtQHJzsENwkiQDcUZAWQIvEAAQAAIf4BAxECEBAADiEAAAIPAAEAEAIBDgMPABEBvUyZM="
},
"angles": {
"yaw": -2.9129645824432373,
"roll": 0.8536121249198914,
"pitch": -23.191497802734375
}
}
]
}
}
}

Create a sample

This mutation allows you to create samples and get information about faces in created samples (such as gender, age, emotions, keypoints, liveness, mask presence, etc.). The created sample is automatically saved at OMNI Platform.

createSample(
anonymousMode: Boolean = false
image: CustomBinaryType = null
sampleData: JSON = null): [SampleOutput!]!

Input parameters:

anonymousMode: Boolean = false : If you have to work with anonymous data, you can set anonymousMode to true (by default, it's set to false). In this case, the image is not saved at OMNI Platform.

multifacePolicy: ALLOW_MULTIFACE / NOT_ALLOW_MULTIFACE / BEST_QUALITY_FACE : Allows you to create samples of several faces in the image (there must be several faces in the image) (ALLOW_MULTIFACE), only one face in the image (there must be one face in the image) (NOT_ALLOW_MULTIFACE) or of face crops with the best quality (BEST_QUALITY_FACE).

image: CustomBinaryType : Base64 encoded image

sampleData: JSON : Sample data is the face detection result, not saved at the database.

Output parameters:

SampleOutput! : API returns JSON file with the following fields:

  • id : Sample ID
  • creationDate : Sample creation date in ISO 8601 format with time zone
  • lastModified : Last sample modification date in ISO 8601 format with time zone
  • data : Image and/or template and/or detection result in sample format
  • template : Biometric template in BlobMetaType format
    • BlobMetaType : Binary data information with meta information:
      • id : Meta information ID
      • blob : Binary data in BlobType format
        • BlobType : Binary data information:
          • id: ID of binary data
          • creationDate : Date of creation of binary data in ISO 8601 format with time zones
          • lastModified : Date of last modification of binary data in ISO 8601 format with time zones
          • data : Binary data encoded in base64 format
      • meta : Meta information
        • type : Face recognition method version
        • format : Binary data type
        • sample_id : Sample ID
      • creationDate : Meta information creation date in ISO 8601 format with time zones
      • lastModified : Date of last modification of meta information in ISO 8601 format with time zones
      • type : Binary data type

The returned sample is automatically saved at OMNI Platform Server (if anonymousMode is set to false) and can be used to verify a face to a face or seach a person in the database.

Incorrect input errors:

  • No data has been entered to create a sample:
    {
    "message": "One of the parameters sampleData or sourceImage is required",
    "code": "0xnf5825dh"
    }
  • Invalid transmitted sample data:
    {
    "message": "argument should be a bytes-like object or ASCII string, not 'NoneType'"
    }
  • Transmitted wrong pupils coordinates:
    {
    "message": "0x8905a659: Assertion '( transform_m(0, 0) * transform_m(0, 0) + transform_m(0, 1) * transform_m(0, 1) + transform_m(1, 0) * transform_m(1, 0) + transform_m(1, 1) * transform_m(1, 1) ) > 1e-5' failed, error code: 0x8905a659. wrap code: 0x7df96daf."
    }

Example Request:

mutation{
createSample(
anonymousMode: false
image: "вставьте изображение в формате Base64"
multifacePolicy: NOT_ALLOW_MULTIFACE
) {
creationDate
data
id
lastModified
template {
blob {
creationDate
data
id
lastModified
}
creationDate
id
lastModified
meta
type
}
}

Example Response:

API returns the following result:
{
"data": {
"createSample": [
{
"creationDate": "2024-02-08T10:48:31.326810+00:00",
"data": {
"$image": {
"id": "32640cb7-9182-469d-a930-b6641374c79c"
},
"objects@common_capturer_uld_fda": [
{
"keypoints": {
"left_eye_brow_left": {
"x": 0.31430198669433596,
"y": 0.3468163808186849
},
"left_eye_brow_up": {
"x": 0.3698768361409505,
"y": 0.33452288309733075
},
"left_eye_brow_right": {
"x": 0.43212239583333334,
"y": 0.34032857259114585
},
"right_eye_brow_left": {
"x": 0.5590576171875,
"y": 0.34072428385416664
},
"right_eye_brow_up": {
"x": 0.6234002685546876,
"y": 0.3326952616373698
},
"right_eye_brow_right": {
"x": 0.6848043314615886,
"y": 0.34784807840983073
},
"left_eye_left": {
"x": 0.3423467254638672,
"y": 0.39708162943522135
},
"left_eye_right": {
"x": 0.4287478637695312,
"y": 0.39618136088053385
},
"right_eye_left": {
"x": 0.5617838033040364,
"y": 0.39730979919433596
},
"right_eye_right": {
"x": 0.6520235188802084,
"y": 0.3996103668212891
},
"left_ear_bottom": {
"x": 0.2781038411458333,
"y": 0.5540571085611979
},
"nose_left": {
"x": 0.44076873779296877,
"y": 0.5231631469726562
},
"nose": {
"x": 0.48781300862630206,
"y": 0.5237169901529948
},
"nose_right": {
"x": 0.5385655721028646,
"y": 0.5257181803385417
},
"right_ear_bottom": {
"x": 0.7370088704427084,
"y": 0.5560048421223959
},
"mouth_left": {
"x": 0.4143603515625,
"y": 0.6266395060221354
},
"mouth": {
"x": 0.48948699951171876,
"y": 0.6253179931640624
},
"mouth_right": {
"x": 0.5696072896321615,
"y": 0.6272165934244792
},
"chin": {
"x": 0.49408701578776043,
"y": 0.7802508036295573
},
"left_pupil": {
"x": 0.3868127187093099,
"y": 0.39231636047363283
},
"right_pupil": {
"x": 0.6072465515136719,
"y": 0.3944199371337891
},
"fitter_type": "fda"
},
"confidence": 0.9636713862419128,
"id": 0,
"bbox": [
0.205,
0.17,
0.8016666666666666,
0.7566666666666667
],
"class": "face",
"liveness": {
"confidence": 0.9912452697753906,
"value": "REAL",
"message": ""
},
"age": 32,
"gender": "MALE",
"emotions": {
"angry": 0.04899218482524756,
"disgusted": 0.000002880204601808204,
"scared": 0.0000023642013279035936,
"happy": 0.017762264777812644,
"neutral": 0.9207975870518205,
"sad": 0.012293673780254373,
"surprised": 0.00014904515893539918
},
"quality": {
"total_score": 0.91,
"is_sharp": true,
"sharpness_score": 0.99,
"is_evenly_illuminated": true,
"illumination_score": 0.99,
"no_flare": true,
"is_left_eye_opened": true,
"left_eye_openness_score": 0.99,
"is_right_eye_opened": true,
"right_eye_openness_score": 0.99,
"is_rotation_acceptable": true,
"max_rotation_deviation": -6,
"not_masked": true,
"not_masked_score": 1,
"is_neutral_emotion": true,
"neutral_emotion_score": 0.94,
"is_eyes_distance_acceptable": true,
"eyes_distance": 132,
"is_margins_acceptable": false,
"margin_outer_deviation": 0,
"margin_inner_deviation": 83,
"is_not_noisy": true,
"noise_score": 1,
"watermark_score": 0.01,
"has_watermark": false,
"dynamic_range_score": 1.74,
"is_dynamic_range_acceptable": true,
"background_uniformity_score": 1,
"is_background_uniform": true
},
"mask": {
"confidence": 0.001966804265975952,
"value": false
},
"templates": {
"$template12v1000": {
"id": "a1e41935-0f03-4214-a3ee-be11ecf35a1b"
}
},
"angles": {
"yaw": -3.6769766807556152,
"roll": 1.7637859582901,
"pitch": -15.877679824829102
}
}
]
},
"id": "2ebc86c7-2132-4ed7-9d0d-c6008b7da0bd",
"lastModified": "2024-02-08T10:48:31.326857+00:00",
"template": {
"blob": {
"creationDate": "2024-02-08T10:48:31.306168+00:00",
"data": "qjdp2SAr3gcNcaDHUD8jMFGUE8ACvfCxExIA0FsBMeT3+0ACeiQPAFMUkD4A9307KQ9Rz0wAIT1PL2C+Pg4CwbCQ8H9bHhDaHSBAXRkR8gExc0fwHxAj0HTp8EZTYEf9AACyDB/1YLASMC2yCqCgRSX/UMJRBnGxMAISLPNQIF7QbSxtA3BR9DDNdhFU8QPQLQDiTeAQkQ7K4HUhXgvxAq4lwAUhp53g2TL0FPcgIDAgIBDUPdPivdMU75HhBfEwEOBP9DR1IsLXAE81B5fu8kDu3esL81wMEJH+AMAxDJsfBakG4QDyAEBr/w1ecL+SAA5S0Q4BAgfg0wwTtCzh+SIuQuMQAB0CDzAB8jAwECEh4ADwAP8QABEAEAAQIRAAAAAQABvUyZM=",
"id": "73d7cb45-1beb-486b-91c4-120fa8351fb4",
"lastModified": "2024-02-08T10:48:31.306199+00:00"
},
"creationDate": "2024-02-08T10:48:31.307925+00:00",
"id": "a1e41935-0f03-4214-a3ee-be11ecf35a1b",
"lastModified": "2024-02-08T10:48:31.333662+00:00",
"meta": {
"type": "template12v1000",
"format": "NDARRAY",
"sample_id": "2ebc86c7-2132-4ed7-9d0d-c6008b7da0bd"
},
"type": "template12v1000"
}
}
]
}
}

Face verification

Query verify() is used to compare two samples and verify whether two face images belong to the same person or whether one face image belongs to the person.

verify(sourceImage: CustomBinaryType = null
sourceSampleData: JSON = null
sourceSampleId: ID = null
targetSampleId: ID!): MatchResult!

Input parameters:

sourceImage: CustomBinaryType : Base64 encoded image

sourceSampleData: JSON : Face detection result, not saved at the database.

sourceSampleId: ID : Sample ID to be compared with target sample ID

targetSampleId: ID : Sample ID to be compared with a source image, source sample data or source sample ID

Output parameters:

MatchResult : Verification result that contains the following parameters:

  • distance: Distance between compared vectors of biometric face templates. The lower the value, the higher the confidence in correct recognition.


  • faR : False acceptance rate shows the system resistance to false acceptance errors. Such an error occurs when the biometric system recognizes a new face as previously detected one, i.e. images of different people are mistaken for images of the same person. This rate is measured by the number of false-acceptance recognitions divided by the total number of recognition attempts.

  • frR : False rejection occurs when a system fails to recognize a previously detected face, i.e. two images of the same person are mistaken for images of different people. The rate shows the percentage of recognition attempts with false rejection result.

  • score: Score is the probability of correct recognition. Score value of float in a range [0..1]

Incorrect input errors:

  • A comparison object is not passed or an ambiguous interpreted combination is passed:
    {
    "message": "One of the parameters sourceSampleData or sourceSampleId or sourceImage is required",
    "code": "0x963fb254"
    }
  • No sample found by transmitted id:
    {
    "message": "Sample matching query does not exist."
    }
  • Transmitted source sample data is invalid:
    {
    "message": "'objects@common_capturer_uld_fda'"
    }

Example Request:

{
verify(sourceSampleId:"fa76e8a4-3c90-4007-a72f-94d5fc655c36", targetSampleId:"a2d852e8-aa00-4403-bc5d-f8b94cc183ca")
{
distance
faR
frR
score
}
}

Example Response:

API returns the following result:
{
"data": {
"verify": {
"distance": 0,
"faR": 0,
"frR": 1,
"score": 1
}
}
}

Face identification

This query allows you to search for a person in the database. Function search() is used to compare one sample with all other samples in the database.

search(confidenceThreshold: Float = 0
maxNumOfCandidatesReturned: Int = 5
scope: ID = null
sourceImage: CustomBinaryType = null
sourceSampleData: JSON = null
sourceSampleIds: [ID!] = null): [SearchType!]!

Input parameters:

confidenceThreshold: Float = 0 : To exclude matches with low confidence from the returned result, use the confidenceThreshold parameter (min: 0, max: 1; default: 0)

maxNumOfCandidatesReturned: Int = 5 : To set the max number of returned candidates, specify the value for the maxNumOfCandidatesReturned parameter (min: 1, max: 100). By default, 5 closest candidates are returned.

scope: ID : By default, a person is searched in an entire database. To get matches from a specific List, set the List id in the scope parameter.

sourceImage: CustomBinaryType : Base64 encoded image

sourceSampleData: JSON : Face detection result, not saved at the database.

sourceSampleIds: [ID!] : Sample IDs

Output parameters:

SearchType! : The result is a list of candidates for each requested sample in descending order of confidence. Search result contains the following parameters:

  • template
  • searchResult
    PersonSearchResult
    • sample: SampleOutput! (id: ID!, creationDate: DateTime, lastModified: DateTime, data: JSON!, template: BlobMetaType)
    • profile: ProfileOutputData! (id: ID!, info: JSON!, lastModified: DateTime!, creationDate: DateTime!, personId: ID!, mainSample: SampleOutput)
    • matchResult: MatchResult! (distance: Float!, faR: Float!, frR: Float!, score: Float!)
note

The source data is compared with Profiles from the server, not with the samples. So, before you start searching, make sure you have created at least 1 profile.

Example Request:

{
search(sourceSampleIds:"fa76e8a4-3c90-4007-a72f-94d5fc655c36"){
template
searchResult{
matchResult{
distance
faR
frR
score}
sample{
id
}
profile{
id
info
}
}
}
}

Example Response:

API returns the following result:
{
"data": {
"search": [
{
"template": "T5JnWuAN4j5MHWRP7tDj7/AOcg9S8AWw4AAQZwJAHeMRw1MUGfkxFTTVUALbWmAHBHJTBKM9LfMgwCUvXlQgAizEAzwP0BvkQDHQfykA4ZDvHrkDFhCvD3Eh73TSD+UQTMDSQBPj4DAtYBEi/wDQMH9A8PMObwQQAFHDAgMOAQHjMB+vEHc2Q/ACH/EHAw+9MPUDA+ImodYPbeKv7Q9/Xw8wD39CPQpQd/wrfwPcZRDSIgkj0PEA8L0NZNoAIdACER8Q/hAQPQAa8UDdovBN6eXBAHUwQOC7DjECPjBQ5FJBE+MNPeAB1OUPEW787jBCAsHQkBCSRXD0MHEP4E0O49IgQ7MBGyBEDyMldtHx4RT0MH9MMReb0g==",
"searchResult": [
{
"matchResult": {
"distance": 0,
"faR": 0,
"frR": 1,
"score": 1
},
"sample": {
"id": "805be807-dd89-4265-9ee7-bbdc19473136"
},
"profile": {
"id": "fd606132-9757-419b-97d6-d8cdd67ed476",
"info": {
"age": 25,
"gender": "MALE",
"main_sample_id": "805be807-dd89-4265-9ee7-bbdc19473136"
}
}
},
{
"matchResult": {
"distance": 9356,
"faR": 0.31920063495635986,
"frR": 0,
"score": 0.0000018477439880371094
},
"sample": {
"id": "c18b3a5a-ccfb-4785-9248-b7ce90052754"
},
"profile": {
"id": "218db30f-b6ff-4a46-a83d-a0701005a12b",
"info": {
"age": 23,
"gender": "FEMALE",
"main_sample_id": "c18b3a5a-ccfb-4785-9248-b7ce90052754"
}
}
}
]
}
]
}
}

Note that if the database contains no profiles created before search start, the profile field in the returned result will be blank.

The searchInActivities query allows you to search for a person by activity.

searchInActivities (confidenceThreshold: Float = 0
maxNumOfCandidatesReturned: Int = 5
sourceImage: CustomBinaryType = null
sourceSampleData: JSON = null
sourceSampleIds: [ID!] = null
): [ActivitySearchType!]!

Input parameters:

confidenceThreshold: Float = 0: To exclude matches with low confidence from the returned result, use the confidenceThreshold parameter (min: 0, max: 1; default: 0)

maxNumOfCandidatesReturned: Int = 5: To set the max number of returned candidates, specify the value for the maxNumOfCandidatesReturned parameter (min: 1, max: 100). By default, 5 closest candidates are returned.

sourceImage: CustomBinaryType: Base64 encoded image

sourceSampleData: JSON: face detection result, not saved at the database.

sourceSampleIds: [ID!]: Sample IDs

Output parameters:

ActivitySearchType!: The result is a list of candidates for each requested sample in descending order of confidence. Search result contains the following parameters:

  • template: String!
  • searchResult: [ActivitySearchResult!]!
    • activity: ActivityOutput ( id: ID! , data: JSON , lastModified: DateTime! , creationDate: DateTime! , bestShotId: ID, cameraId: ID!, locationId: String, profileId: ID, status: ActivityType!, timeStart: String, timeEnd: String )
    • matchResult: MatchResult! ( distance: Float! , faR: Float! , frR: Float! , score: Float! )
note

The search is performed only on activities with the FINALIZED and FAILED status, for which a biometric template has been extracted.

Example Request:

{
searchInActivities(sourceSampleIds: ["fa76e8a4-3c90-4007-a72f-94d5fc655c36"]) {
searchResult {
activity {
id
creationDate
cameraId
bestShotId
}
matchResult {
distance
faR
frR
score
}
}
}
}

Example Response:

API returns the following result:
{
"data": {
"searchInActivities": [
{
"searchResult": [
{
"activity": {
"id": "87c3079b-c93d-49ef-a4d6-f8a4ddb0d1a1",
"creationDate": "2023-02-22T08:53:22.984437+00:00",
"cameraId": "7b896604-5a11-4604-8677-742297b192ab",
"bestShotId": "fabc0b78-054b-4169-96ec-6e39cc6f16c9"
},
"matchResult": {
"distance": 7975,
"faR": 0.026017505675554276,
"frR": 0.004508852958679199,
"score": 0.6593803763389587
}
},
{
"activity": {
"id": "ac7f1848-3270-47dd-9ed4-e119f24aef68",
"creationDate": "2023-02-22T06:29:58.757351+00:00",
"cameraId": "49a1f363-ed9b-428f-bd98-5901dde99618",
"bestShotId": "a47ba56d-5983-48e3-8439-d6b9231c3919"
},
"matchResult": {
"distance": 8044,
"faR": 0.030948175117373466,
"frR": 0.004176795482635498,
"score": 0.653989315032959
}
}
]
}
]
}
}

Incorrect input errors

  • A comparison object is not passed or an ambiguous interpreted combination is passed:

    {
    "message": "One of the parameters sourceSampleData or sourceSampleId or sourceImage is required",
    "code": "0x963fb254"
    }
  • The confidenceThreshold value is transmitted out of range:

    {
    "message": "Confidence threshold must be between 0 and 1",
    "code": "0xf47f116a"
    }
  • The maxNumOfCandidatesReturned value is transmitted out of range:

    {
    "message": "Max num of candidates must be between 1 and 100",
    "code": "0xf8be6762"
    }
  • Transmitted source sample data is invalid:

    {
    "message": "'objects@common_capturer_uld_fda'"
    }