Visão geral
A Pesquisa facial é uma pesquisa biométrica 1:N: a Didit identifica o maior rosto detetado na suauser_image e pesquisa-o no índice de pesquisa facial da sua aplicação — rostos registados a partir de sessões de verificação, chamadas de API autónomas guardadas, carregamentos diretos de rostos no perfil de utilizador e as suas listas de bloqueio/permissão. Distingue-se da Correspondência facial, que é 1:1 — a Correspondência facial compara uma selfie com o retrato num documento específico, enquanto a Pesquisa facial pergunta “já vimos esta pessoa antes, em algum lado?”.
Vale a pena compreender dois comportamentos antes de analisar o relatório:
- Apenas as correspondências com a lista de bloqueio recusam. O
face_search.statusfica comoDeclinedapenas quando é acionado um avisoFACE_IN_BLOCKLISTouPOSSIBLE_FACE_IN_BLOCKLIST. As correspondências duplicadas por si só devolvemApproved— inspecionematchesewarnings, não apenas ostatus. - Persistência e registo opcionais. Quando
save_api_request=true(o valor predefinido), a chamada é persistida como uma sessão do tipo API e o rosto pesquisado é registado no seu índice de pesquisa facial. Os rostos registados por chamadas de Pesquisa facial são excluídos de resultados futuros de Pesquisa facial, pelo que pesquisas repetidas nunca correspondem entre si. Passesave_api_request=falsepara uma consulta única: nada é guardado e o rosto não é registado.
Onde aparecem os resultados
A Pesquisa facial é uma API autónoma. Os resultados da pesquisa são devolvidos de forma síncrona, apenas na resposta aPOST /v3/face-search/, como um objeto singular face_search no nível raiz:
face_searches[] em lado nenhum — a convenção de arrays plurais utilizada por id_verifications[], aml_screenings[] e liveness_checks[] no endpoint de decisão da sessão não se aplica.
Quando save_api_request=true (o valor predefinido), a chamada também é persistida como uma sessão do tipo API:
- Consola Empresarial — a sessão aparece na sua lista de sessões com a imagem da pesquisa, as correspondências e os avisos.
GET /v3/session/{sessionId}/decision/— recuperável utilizando orequest_iddevolvido como ID de sessão. Os dados persistidos surgem como uma entradaFACE_SEARCHemfeatures[]e como um item emliveness_checks[]que contém osmatchesguardados (com valoresmatch_image_urlrecentemente assinados) ewarnings— not como um objetoface_search.
save_api_request=false, o request_id é um UUID de correlação transitório: a sessão nunca é guardada, pelo que não pode ser obtida a partir da Consola ou do endpoint de decisão.
Esquema
Consulte Pesquisa facial na referência dos Modelos de Dados para consultar as tabelas canónicas de campos. A estrutura abaixo reflete o que o endpoint realmente devolve em tempo de execução.matches[]está limitado a 5 entradas acima do limiar mínimo de similaridade, ordenadas por similaridade decrescente (search_type=blocklisted_or_approvedclassifica primeiro as entradas na lista de bloqueio, depois na lista de permissões e, em seguida, por similaridade).sourceindica a origem onde o rosto correspondente foi registado:session— uma sessão de verificação ou uma chamada de API autónoma guardada;imported— um rosto carregado diretamente para um perfil de utilizador;list_entry— um rosto associado a uma das suas listas;retained_template— um template biométrico sem imagem retido pela aplicação após eliminar a sessão de origem.session_id,session_number,statuseapi_servicesãonullpara correspondências deimported,list_entryeretained_template.- As correspondências de
retained_templatecontêmvendor_user_id,vendor_dataebiometric_template_id, e são semprenullparamatch_image_url,user_detailse tudo o que esteja relacionado com a sessão: a sessão que gerou o rosto já não existe e o template não contém dados de imagem ou de identidade. O campois_blocklistedé semprefalsepara um template retido; um rosto na lista de bloqueio é comunicado separadamente como uma correspondência delist_entry. Elimine o template comDELETE /v3/biometric-templates/{biometric_template_id}/. api_serviceé o tipo de API autónoma da sessão correspondente (em maiúsculas, por exemplo,PASSIVE_LIVENESS) enullquando o rosto correspondente veio de uma sessão de verificação de fluxo normal.user_detailsprovém da verificação de documentos da sessão correspondente. Para correspondências comsource: imported, é preenchido a partir do perfil de utilizador (full_namedefinido,document_type/document_numbernulos); énullquando não existem dados de identidade (por exemplo, sessões apenas de prova de vida).- Os avisos utilizam uma estrutura reduzida em comparação com os avisos de fluxo: não existe
node_id. O contrato de resposta documentado (FaceSearchResponseSerializer) declara os cinco camposrisk,additional_data,log_type,short_descriptionelong_description; o payload em tempo de execução inclui adicionalmentefeature, que aqui é sempre"LIVENESS". Consulte Avisos de Pesquisa facial. - Correspondências do mesmo utilizador não são excluídas — ao contrário da deteção de duplicados em fluxos, o endpoint autónomo não filtra sessões anteriores com os mesmos
vendor_data, pelo que um utilizador legítimo que regresse corresponde às suas próprias sessões anteriores.
Valores de estado
Oface_search.status de nível raiz é derivado de warnings[]. O status ao nível da correspondência reflete o resultado da verificação da sessão correspondente e é independente.
Nota: quando a imagem da pesquisa não contém nenhum rosto detetável, a API devolve HTTP
400 com {"error": "No face detected in the image"} antes da criação de um objeto face_search — não existe um estado Declined para esse caso. Créditos insuficientes devolvem HTTP 403 antes de qualquer processamento de imagem.
Exemplos
Approved — correspondência duplicada, sem lista de bloqueio
Declined — correspondência na lista de bloqueio
Relacionado
- Avisos de Pesquisa facial — todos os códigos de aviso que a pesquisa pode emitir
- Referência da API de Pesquisa facial — parâmetros do pedido e modos de
search_type - Modelos de dados — Pesquisa facial — esquema canónico
- Webhooks — payloads de
status.updatedpara sessões persistidas
Quando
save_api_request=true, os valores de match_image_url são URLs assinados e de curta duração — chame novamente o endpoint de decisão da sessão com o request_id devolvido para obter novos URLs. Quando save_api_request=false, são caminhos de armazenamento interno e não podem ser descarregados diretamente. Armazene apenas o ID da sessão correspondente, o estado e similarity_percentage do seu lado — não conserve a imagem biométrica subjacente.