# Detecção de múltiplas contas (1:N)

<https://unifokal.com/docs/modulos/face-unica>

## Detecção de múltiplas contas (1:N)

O módulo `face_unica` busca o rosto da selfie na **sua base** e responde se ele já abriu outra conta. A comparação roda **só dentro da sua organização**: a base é sua, nunca compartilhada entre clientes. Não existe captura nova: ele usa a selfie que o flow já capturou, e o que entra no índice é o **vetor biométrico** (embedding), não a imagem.

A resposta é uma de três: `unique` (rosto inédito, entra no índice), `duplicate` (o rosto já pertence a **outra** conta: portão duro, reprova) e `possible_duplicate` (semelhança na banda de dúvida, ou match forte sem conta identificável dos dois lados: vai para `review` humano, nunca recusa automática). O `match` devolve a **referência** da conta casada (`verification_id` e o seu `reference_id`), nunca a selfie da outra conta. A decisão também sai direto no resumo: `"checks": { ... "face_unica": "unique" }`.

```
// face_unica no check_details: rosto inédito na sua base
{ "module": "face_unica", "passed": true, "outcome": "approved", "score": 95,
  "data": { "decision": "unique", "best_similarity": null, "candidates": 0, "match": null } }

// face_unica: o rosto já pertence a OUTRA conta (portão duro: reprova)
{ "module": "face_unica", "passed": false, "outcome": "failed", "score": 5,
  "data": { "decision": "duplicate", "best_similarity": 0.71, "candidates": 2,
            "match": { "verification_id": "ver_01H…", "reference_id": "usr_1207",
                       "similarity": 0.71 } } }

// face_unica: banda de dúvida entre os dois limiares: review humano, nunca recusa automática
{ "module": "face_unica", "passed": null, "outcome": "pending", "score": 50,
  "data": { "decision": "possible_duplicate", "best_similarity": 0.39, "candidates": 1,
            "match": { "verification_id": "ver_01H…", "reference_id": "usr_88",
                       "similarity": 0.39 } } }
```

Mande o `reference_id` na criação da sessão: é ele que permite ao módulo saber que um match forte é a **mesma conta** se reverificando (aí não é duplicata) ou **outra** (aí é). Sem ele, match forte vira `possible_duplicate` em vez de recusa, para nunca barrar o titular legítimo. O preço por checagem está na [tabela de preços](https://unifokal.com/precos), junto com a ingestão retroativa da base.
