Dashboard
–
Total de verificações
–
Aprovadas
–
Rejeitadas
–
Taxa de aprovação
–
📈 Verificações nos últimos dias
🔑 Sua chave de API
••••••••••••••••••••••••••
Use no header X-Api-Key de todas as requisições. Não compartilhe esta chave.
Começar a integrar
📦
SDK JavaScript
Adicione verificação facial ao seu site com 2 linhas de código.
Ver documentação →
🔗
API REST
Integre via HTTP direto no seu backend, app mobile ou automações.
Ver documentação →
📡
Webhooks
Receba eventos em tempo real no seu servidor a cada verificação.
Configurar →
Verificações
Histórico completo de todas as verificações biométricas realizadas.
Data / HoraTipoStatusConfiançaSessão
SDK JavaScript
Adicione verificação facial ao seu site com menos de 5 linhas de código. O SDK abre um modal responsivo com o fluxo completo de verificação.
Instalação Passo 1

Adicione a tag <script> antes do fechamento do </body> com a sua chave de API.

HTML
<script
  src="https://seudominio.com/sdk.js"
  data-api-key="SUA_CHAVE_API">
</script>
Abrir o widget Passo 2

Chame IDDigital.open() de qualquer botão ou evento. O SDK cuida de todo o fluxo — câmera, captura, biometria e resultado.

JavaScript
IDDigital.open({
  onSuccess: function(resultado) {
    // Verificação aprovada ✓
    console.log('Usuário verificado:', resultado.name);
    // resultado.mode  → 'enrollment' | 'auth'
    // resultado.token → JWT de sessão
  },
  onError: function(erro) {
    // Verificação rejeitada ou erro
    if (erro.code === 'rejected') {
      console.log('Biometria não aprovada');
    }
  },
  onClose: function() {
    // Usuário fechou o modal sem concluir
  }
});
Exemplo completo
HTML
<!DOCTYPE html>
<html>
<body>
  <button onclick="verificar()">Verificar identidade</button>

  <script
    src="https://seudominio.com/sdk.js"
    data-api-key="pk_live_xxxx">
  </script>

  <script>
    function verificar() {
      IDDigital.open({
        onSuccess: (r) => {
          // Usuário verificado — libere o acesso
          window.location = '/dashboard?token=' + r.token;
        },
        onError: (e) => {
          alert('Verificação não aprovada. Tente novamente.');
        }
      });
    }
  </script>
</body>
</html>
Objeto de resultado (onSuccess)
CampoTipoDescrição
modestring'enrollment' (primeiro cadastro) ou 'auth' (autenticação recorrente)
statusstringSempre 'Approved' no onSuccess
namestringNome completo do usuário verificado
userIdstring (UUID)Identificador único do usuário na iDenta
tokenstring (JWT)Token de sessão válido por 8 horas para uso no seu backend
Erros (onError)
CódigoTipoDescrição
rejectedbiometriaSelfie não confere com o documento ou liveness falhou
missing_api_keyconfiguraçãoChave de API não informada no script tag
session_errorredeFalha ao criar sessão — verifique a chave e a conectividade
💡 O SDK detecta automaticamente se o usuário já tem cadastro (pelo CPF) e exibe o fluxo correto: cadastro biométrico na primeira vez, autenticação facial + OTP nas seguintes.
API REST
Integre diretamente via HTTP para backends, apps mobile e automações. Todas as rotas exigem autenticação por chave de API.
Autenticação

Envie sua chave no header X-Api-Key em todas as requisições.

HTTP
POST /api/widget/session
X-Api-Key: pk_live_sua_chave_aqui
Content-Type: application/json
⚠️ Nunca exponha sua chave no frontend. Em integrações server-side, mantenha a chave em variável de ambiente e faça as chamadas a partir do seu backend.
POST/api/widget/session

Cria uma sessão biométrica. Retorna o sessionId que identifica toda a jornada de um usuário.

Request
// Sem body — autenticação é pelo header X-Api-Key
POST /api/widget/session
X-Api-Key: pk_live_xxxx
Response 200
{
  "sessionId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
  "tenantId":  "11111111-1111-1111-1111-111111111111"
}
POST/api/captures

Envia uma imagem biométrica para análise. Cada chamada consome 1 crédito.

CampoTipoDescrição
sessionIdobr.UUIDID da sessão criada em /api/widget/session
tenantIdobr.UUIDID do seu tenant (retornado na criação de sessão)
imageTypeobr.stringselfie · doc-front · doc-back · cnh-digital
imageBase64obr.stringImagem em Base64 (JPEG ou PNG), com ou sem prefixo data:image/…
Request
{
  "sessionId":   "3fa85f64-...",
  "tenantId":    "11111111-...",
  "imageType":   "selfie",
  "imageBase64": "/9j/4AAQSkZJRgAB..."
}
Response 200
{
  "logId":      "abc123",
  "status":     "Approved",  // "Approved" | "Rejected"
  "confidence": 0.9431       // 0.0 → 1.0
}
GET/api/logs

Lista as verificações realizadas. Suporta paginação.

Query paramTipoDescrição
tenantIdobr.UUIDFiltra pelo seu tenant
pageopt.intPágina (default: 1)
sizeopt.intItens por página, máx 100 (default: 20)
Response 200
{
  "total": 142,
  "page":  1,
  "size":  20,
  "data": [
    {
      "id":         "uuid",
      "sessionId":  "uuid",
      "imageType":  "selfie",
      "status":     "Approved",
      "confidence": 0.9431,
      "createdAt":  "2026-05-06T20:00:00Z"
    }
  ]
}
GET/api/stats

Retorna métricas agregadas do seu tenant.

Response 200
{
  "total":    142,
  "approved": 128,
  "rejected": 14
}
GET/api/credits/{tenantId}

Consulta o saldo de créditos disponível.

Response 200
{
  "tenantId": "11111111-...",
  "balance":  247
}
Webhooks
Receba notificações automáticas no seu servidor sempre que uma verificação for concluída — sem precisar fazer polling.
Configurar URL de destino

Informe o endpoint HTTPS do seu servidor. A iDenta fará um POST com o payload do evento sempre que uma captura for processada.

Payload do evento

Cada requisição POST enviada para sua URL contém o seguinte JSON:

JSON
{
  "sessionId":  "3fa85f64-5717-4562-b3fc-2c963f66afa6",
  "tenantId":   "11111111-1111-1111-1111-111111111111",
  "imageType":  "selfie",
  "status":     "Approved",
  "confidence": 0.9431,
  "timestamp":  "2026-05-06T20:30:00Z"
}
Receber o webhook (Node.js)
Node.js / Express
const express = require('express');
const app     = express();
app.use(express.json());

app.post('/webhook/identa', (req, res) => {
  const { sessionId, status, confidence } = req.body;

  if (status === 'Approved') {
    // Libere o acesso do usuário
    console.log('Verificado! Sessão:', sessionId);
  }

  res.sendStatus(200); // Responda 200 para confirmar recebimento
});

app.listen(3000);
Receber o webhook (Python)
Python / Flask
from flask import Flask, request

app = Flask(__name__)

@app.route('/webhook/identa', methods=['POST'])
def webhook():
    data = request.get_json()

    if data['status'] == 'Approved':
        # Libere o acesso
        print(f"Verificado! Confiança: {data['confidence']}")

    return '', 200  # Responda 200
⚠️ Importante: Seu endpoint deve responder com status 200 em até 5 segundos. A iDenta fará até 3 tentativas em caso de timeout ou erro.
🔒 Para maior segurança, valide que a requisição veio realmente da iDenta verificando o tenantId no payload e usando HTTPS obrigatoriamente.
Suporte
Nossa equipe está disponível para ajudar com integrações, dúvidas técnicas e questões de conta.
📧 E-mail técnico
Resposta em até 4h em dias úteis
💬 WhatsApp
Seg–Sex, 9h–18h
Informações da conta
CampoValor
Tenant–
E-mail–
Tenant ID–
Status–
Créditos–
Perguntas frequentes
Como adquirir mais créditos?

Entre em contato pelo e-mail dev@identa.com.br informando a quantidade desejada. Processamos o pagamento e creditamos na sua conta em até 1 hora útil.

O crédito é consumido em verificações rejeitadas?

Sim, o crédito é consumido por chamada processada — independentemente de aprovação ou rejeição. Verificações que retornam erro de processamento (face não detectada, imagem inválida) também consomem crédito.

Posso usar o SDK em aplicativos mobile?

O SDK JavaScript é otimizado para web. Para apps nativos iOS/Android, utilize a API REST diretamente — capturando a imagem com a câmera nativa e enviando via /api/captures.

Os dados biométricos ficam armazenados?

A iDenta armazena embeddings biométricos (vetores matemáticos), não as imagens originais — em conformidade com a LGPD. Você pode solicitar exclusão de qualquer dado a qualquer momento.

✓ Copiado!