Verificação de identidade
Verificação de identidade
Esta API é paga à parte.
A API de verificação de identidade comprova que uma pessoa controla o CPF informado antes de uma ação sensível. Ela é independente de abertura de conta e de uma conta bancária: você cria a jornada, entrega o link à pessoa e consome a aprovação uma única vez no seu backend.
Pré-requisitos
- credencial master M2M (
client_credentials), nunca sessão de usuário ou credencial delegada; - header
X-Tenant-Id; - escopo
identity_verification.manage; - feature
identity_verificationhabilitada para criar jornadas; callbackUricadastrada em Verificações de identidade no painel, com comparação exata.
Para baixar as evidências KYC, a credencial precisa do escopo dedicado
kyc.read.
Criar a verificação
Não envie Idempotency-Key: cada POST abre intencionalmente uma prova nova e
consome uma unidade da cota quando responde 201. Reaproveitar uma prova facial
para uma segunda finalidade reduziria a segurança do vínculo.
Resposta 201:
Entregue verificationLink somente à pessoa dona do CPF. Não use
callbackUri como prova de aprovação: consulte o recurso ou processe o webhook
e, depois, chame o endpoint de consumo.
Cada tenant tem 10 criações concluídas com 201 por mês-calendário em BRT.
Cada 201 conta, mesmo se a verificação falhar, expirar ou nunca for consumida,
e não há estorno de cota. Ao fechar a cota, a API responde HTTP 429 com
identity_verification_monthly_limit_exceeded. O erro rate_limited também
usa HTTP 429, mas é um controle de tráfego separado e não informa o consumo
mensal.
Acompanhar o estado
A resposta também traz purpose, referenceId, document, provider,
expiresAt e, quando aplicável, failureReason, completedAt,
consumableUntil e consumedAt. verificationLink aparece somente em
PENDING.
Consumir a aprovação
O consumo liga a prova à ação que você está prestes a executar:
purpose e referenceId precisam ser exatamente os valores da criação. A
primeira chamada válida marca consumedAt. Repetir exatamente o mesmo
verificationId e corpo é idempotente e devolve o mesmo resultado. Uma
referência ou finalidade diferente, uma tentativa concorrente, estado diferente
de APPROVED ou janela vencida responde 409.
Faça o consumo e a ação sensível na mesma unidade lógica do seu backend. Não
autorize a ação apenas porque o GET mostrou APPROVED: sem o consumo, duas
requisições concorrentes poderiam reutilizar a mesma prova.
Callback e webhook
callbackUri devolve o navegador ao seu app; ela não substitui notificação de
servidor. O valor precisa coincidir exatamente com o cadastrado para o tenant —
sem wildcard, comparação por prefixo ou normalização de query string.
Nos estados terminais APPROVED, FAILED e EXPIRED, a plataforma envia
identity.verification.completed. Valide o X-Signature contra os bytes brutos
do corpo e deduplique pelo id do envelope. Veja o payload completo em
Webhooks.
Evidências KYC
Esta rota exige kyc.read no lugar do escopo de gerenciamento e a feature
kyc_artifacts. Os arquivos podem conter biometria e material de identidade:
não registre URLs ou conteúdo em logs e aplique a mesma retenção da sua política
de KYC.