Saltar para o conteúdo principal

Visão geral

A Pesquisa facial é uma pesquisa biométrica 1:N: a Didit identifica o maior rosto detetado na sua user_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.status fica como Declined apenas quando é acionado um aviso FACE_IN_BLOCKLIST ou POSSIBLE_FACE_IN_BLOCKLIST. As correspondências duplicadas por si só devolvem Approved — inspecione matches e warnings, não apenas o status.
  • 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. Passe save_api_request=false para 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 a POST /v3/face-search/, como um objeto singular face_search no nível raiz:
Não existe nenhum array plural 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 o request_id devolvido como ID de sessão. Os dados persistidos surgem como uma entrada FACE_SEARCH em features[] e como um item em liveness_checks[] que contém os matches guardados (com valores match_image_url recentemente assinados) e warnings — not como um objeto face_search.
Quando 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.
Notas sobre os campos:
  • matches[] está limitado a 5 entradas acima do limiar mínimo de similaridade, ordenadas por similaridade decrescente (search_type=blocklisted_or_approved classifica primeiro as entradas na lista de bloqueio, depois na lista de permissões e, em seguida, por similaridade).
  • source indica 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, status e api_service são null para correspondências de imported, list_entry e retained_template.
  • As correspondências de retained_template contêm vendor_user_id, vendor_data e biometric_template_id, e são sempre null para match_image_url, user_details e 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 campo is_blocklisted é sempre false para um template retido; um rosto na lista de bloqueio é comunicado separadamente como uma correspondência de list_entry. Elimine o template com DELETE /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) e null quando o rosto correspondente veio de uma sessão de verificação de fluxo normal.
  • user_details provém da verificação de documentos da sessão correspondente. Para correspondências com source: imported, é preenchido a partir do perfil de utilizador (full_name definido, document_type/document_number nulos); é null quando 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 campos risk, additional_data, log_type, short_description e long_description; o payload em tempo de execução inclui adicionalmente feature, 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

O face_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

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.
Última modificação em 7 de novembro de 2026