> ## Documentation Index
> Fetch the complete documentation index at: https://docs.didit.me/llms.txt
> Use this file to discover all available pages before exploring further.

# Referência da API Didit: API REST de verificação

> Referência da API REST da Didit: endpoints de KYC, KYB, AML, biometria e monitoramento de transações. OpenAPI, pague por uso, $10 grátis/mês.



Prompt de integração com as APIs independentes
        Copiar o prompt para a área de transferência



      
      

\<pre>

\``Integrate Didit standalone verification APIs into my backend for server-to-server identity checks.

\## Available Standalone APIs

\### Identity & Documents
\- POST /v3/id-verification/ — multipart/form-data: front_image (required), back_image (optional). Returns: { request_id, id_verification: { status, first_name, last_name, document_type, document_number, date_of_birth, nationality, expiration_date, issuing_state, address, parsed_address, warnings[] } }
\- POST /v3/poa/ — multipart/form-data: document (PDF/image). Returns: { request_id, poa: { status, document_type, issuer, poa_address, poa_parsed_address, issue_date, warnings[] } }
\- POST /v3/database-validation/ — JSON: { issuing_state, validation_type, first_name, last_name, date_of_birth, personal_number, ... }. Returns: { request_id, database_validation: { status, validations } }

\### Document AI
\- POST /v3/document-ai/ — multipart/form-data: document (PDF/image), fields (one JSON-encoded array string of { key, name, instruction, type: "text"|"number"|"date", required, is_full_name }, 1-30 items), expected_first_name + expected_last_name OR expected_company_name (+ expected_company_country), document_ai_name_match_score_threshold (default 80), per-risk *_action params. Returns: { request_id, document_ai: { status, extracted_data: { <key>: value|null }, detected_codes[], fields[], name_match_score, name_on_document, warnings[] } }. $0.20 per document.

\### Biometrics & Face
\- POST /v3/passive-liveness/ — multipart/form-data: user_image. Returns: { request_id, passive_liveness: { status, score, method } }
\- POST /v3/face-match/ — multipart/form-data: user_image + ref_image. Returns: { request_id, face_match: { status, score } }
\- POST /v3/face-search/ — multipart/form-data: user_image. Returns: { request_id, face_search: { status, total_matches, matches[] } }
\- POST /v3/age-estimation/ — multipart/form-data: user_image. Returns: { request_id, age_estimation: { status, age_estimation, score } }

\### Compliance
\- POST /v3/aml/ — JSON: { full_name, entity_type, date_of_birth, nationality, document_number, include_adverse_media, include_ongoing_monitoring }. Returns: { request_id, aml: { status, total_hits, hits[], score, entity_type } }

\### Business Verification (KYB)
\- POST /v3/kyb/search/ — JSON: { country_code (required), name, registration_number, tier: "basic" (default) | "shareholders" | "ubo", search_type: "contains", webhook_url, vendor_data, metadata }. `tier` picks the provider chain the search runs on; retrieve the candidate from select (Lite), shareholders or ubo. Up to $0.50 per successful request, separately from profile retrieval; empty results and failures are not charged. Returns: { request_id, kyb_registry: { companies[] ({ kyb_response_id, name, registration_number, status, type, fetch_status }), pagination, search_status, search_resolved } }. `kyb_response_id` is an opaque handle — pass it straight to select/shareholders/ubo, never parse it.
\- POST /v3/kyb/select/ — JSON: { kyb_response_id (from search), save_api_request, vendor_data, metadata }. **Lite** tier, priced per country ([per-country prices](https://docs.didit.me/getting-started/kyb-registry-pricing.md)). Returns: { request_id, kyb_registry: { status, company_name, registration_number, country_code, company_type, incorporation_date, registered_address, officers[], beneficial_owners[], fetch_status, data_resolved, ... } }
\- POST /v3/kyb/shareholders/ and POST /v3/kyb/ubo/ — same JSON shape as select. **Shareholders** and **UBOs** tiers, priced per country; delivered and billed as the highest tier the country's registries can serve. v3 only.

\### Contact Verification
\- POST /v3/email/send/ — JSON: { email }. Sends OTP code.
\- POST /v3/email/check/ — JSON: { email, code }. Verifies OTP.
\- POST /v3/phone/send/ — JSON: { phone, channel }. Sends OTP via SMS/WhatsApp/Telegram.
\- POST /v3/phone/check/ — JSON: { phone, code }. Verifies OTP.

\### Bank Verification
\- POST /v3/bank/account-check/ - JSON: { country (ISO 3166-1 alpha-3), account: { iban } or { account_number, sort_code | routing_number | ifsc | bsb | transit_institution | bank_code } or { clabe } or { cbu_cvu }, holder: { full_name } or { business_name }, vendor_data }. Checks that a bank account belongs to the name, with no session. Returns: { request_id, result: match | close_match | no_match | cannot_verify, holder_name (close_match only), account (masked), vendor_data, created_at }. Billed once per check the bank answers; errors are never billed.

\## Authentication
All requests require: Headers: { "x-api-key": DIDIT_API_KEY }
For file uploads: multipart/form-data. For JSON: Content-Type: application/json.

\## Common Parameters
\- save_api_request (bool, default true): if true, appears in Console > Manual Checks
\- vendor_data (string): your internal ID for tracking

\## Example: ID Verification (Node.js)
const FormData = require('form-data');
const fs = require('fs');
const form = new FormData();
form.append('front_image', fs.createReadStream('./id_front.jpg'));
form.append('back_image', fs.createReadStream('./id_back.jpg'));

const response = await fetch('https://verification.didit.me/v3/id-verification/', {
method: 'POST',
headers: { 'x-api-key': process.env.DIDIT_API_KEY, ...form.getHeaders() },
body: form
});
const result = await response.json();
// result.id_verification.status: "Approved" or "Declined"
// result.id_verification.first_name, .last_name, .document_number, etc.

\## Example: AML Screening
const response = await fetch('https://verification.didit.me/v3/aml/', {
method: 'POST',
headers: { 'x-api-key': process.env.DIDIT_API_KEY, 'Content-Type': 'application/json' },
body: JSON.stringify({
full_name: 'John Doe',
entity_type: 'person',
date_of_birth: '1990-01-15',
nationality: 'US'
})
});
const result = await response.json();
// result.aml.status, result.aml.total_hits, result.aml.hits

\## When to Use Standalone APIs vs Sessions
\- Standalone: you have images/data, server-to-server, batch processing, custom UX
\- Sessions: user-facing flows where Didit handles camera, UX, multi-step, 54 languages

\## Rate Limits
\- Free: 10/min. Paid: 600/min. Exceeded: HTTP 429.

\## Environment Variables
\- DIDIT_API_KEY — from Didit Console > API & Webhooks

\## Docs
\- API Reference: https://docs.didit.me/api-reference/overview
\- Sessions vs APIs: https://docs.didit.me/api-reference/overview
\- Webhooks: https://docs.didit.me/integration/webhooks``

\</pre>



      
      

Colar em

A Didit oferece **duas abordagens complementares** para a verificação de identidade. Entender a diferença entre elas é essencial para escolher a integração certa para o seu caso de uso.[/pt-br/sessions-api/create-session](https://docs.didit.me/pt-br/sessions-api/create-session.md)[/pt-br/standalone-apis/id-verification](https://docs.didit.me/pt-br/standalone-apis/id-verification.md)***## Sessões hospedadas (recomendadas para fluxos com o usuário)As sessões hospedadas são a **abordagem recomendada** para a maioria das integrações. Quando você cria uma sessão, a Didit gera uma `verification_url` que você apresenta ao seu usuário. O usuário conclui todo o fluxo de verificação na interface otimizada da Didit, e você recebe os resultados por webhook ou pela API.### Como funciona**1. Criar a sessão**Seu servidor chama `POST /v3/session/` com o ID de um fluxo de verificação (workflow). A Didit retorna uma `verification_url` e um `session_token`.**2. Apresentar ao usuário**Redirecione o usuário, incorpore via iframe ou inicialize um SDK nativo usando o token da sessão.**3. O usuário conclui a verificação**O usuário segue o fluxo guiado na interface otimizada da Didit: captura do documento, prova de vida e quaisquer etapas adicionais.**4. Receber os resultados**A Didit envia um webhook ao seu servidor com a decisão da verificação, ou você consulta periodicamente pela API de recuperação.### Por que as sessões são recomendadas| Vantagem | Detalhes |
| - | - |
| **UX otimizada** | A interface de verificação passa por testes A/B contínuos em todo o mundo para alcançar as maiores taxas de conclusão |
| **Gerenciamento da câmera** | Seleção inteligente de câmera, captura automática, verificações de qualidade e compatibilidade com dispositivos já incluídas |
| **Fluxo guiado** | Instruções passo a passo, feedback em tempo real e recuperação de erros para o usuário |
| **Fluxos com vários recursos** | Encadeie vários recursos (documento + prova de vida + AML + telefone + e-mail) em um único fluxo |
| **Segurança** | Antispoofing, prova de vida ativa e fingerprinting de dispositivo integrados ao fluxo |
| **Conformidade** | Trilhas de auditoria por sessão, coleta de consentimento e políticas de retenção de dados tratadas automaticamente |
| **Localização** | 54 idiomas com detecção automática pelo navegador |
| **Nativo para dispositivos móveis** | SDKs nativos para iOS, Android, React Native e Flutter |
| **Sem manutenção** | A Didit cuida de todas as atualizações da interface, dos bugs de navegadores e dispositivos e dos casos-limite relacionados à câmera |### Quando usar sessões- **Onboarding de usuários / KYC**: novos usuários se cadastram e precisam verificar a identidade
- **Verificação de idade**: confirme que os usuários atendem aos requisitos de idade mínima
- **Reverificação**: reverifique periodicamente os usuários existentes
- **Autenticação biométrica**: os usuários se autenticam com o rosto para ações sensíveis
- **Conformidade em várias etapas**: fluxos que exigem documento + prova de vida + AML + telefone de uma só vez
- **Qualquer cenário em que o usuário final esteja presente** e interaja diretamente### Endpoints de sessão| Endpoint | Finalidade |
| - | - |
| [Criar sessão](https://docs.didit.me/pt-br/sessions-api/create-session.md) | Gerar uma URL de verificação para um usuário |
| [Recuperar sessão](https://docs.didit.me/pt-br/sessions-api/retrieve-session.md) | Obter os resultados completos e a decisão de uma sessão |
| [Listar sessões](https://docs.didit.me/pt-br/sessions-api/list-sessions.md) | Consultar e filtrar todas as sessões |
| [Excluir sessão](https://docs.didit.me/pt-br/sessions-api/delete-session.md) | Excluir uma sessão e todos os dados associados |
| [Gerar PDF](https://docs.didit.me/pt-br/sessions-api/generate-pdf.md) | Exportar um relatório de verificação em PDF |
| [Compartilhar sessão](https://docs.didit.me/pt-br/sessions-api/share-session/share.md) | Gerar um token de compartilhamento para KYC reutilizável com um parceiro |
| [Importar sessão compartilhada](https://docs.didit.me/pt-br/sessions-api/share-session/import.md) | Importar uma sessão compartilhada por um parceiro (KYC reutilizável) |***## APIs independentes (para processamento servidor a servidor)As APIs independentes permitem chamar recursos de verificação individuais **diretamente do seu servidor**, sem nenhuma interface para o usuário final. Você envia os dados (imagens, documentos, nomes) e recebe resultados estruturados.### Como funciona**1. Enviar dados**Seu servidor chama um endpoint independente (por exemplo, `POST /v3/id-verification/`) com os dados necessários: imagens, documentos ou campos JSON.**2. Receber resultados**A Didit processa a requisição de forma síncrona e retorna os resultados estruturados da verificação na resposta.### Quando usar as APIs independentes| Caso de uso | Exemplo |
| - | - |
| **Processamento no backend** | Você já tem imagens de documentos capturadas pela sua própria interface e precisa verificá-las |
| **Verificação em lote** | Processamento em massa de documentos de identidade enviados por uma equipe de operações |
| **UX personalizada** | Você criou seu próprio fluxo de captura e quer usar a Didit apenas para a análise |
| **Verificações servidor a servidor** | Análise AML de uma lista de clientes, sem nenhuma interação do usuário |
| **Pipelines automatizados** | Reverificações de conformidade via CI/CD ou cron (por exemplo, monitoramento AML diário) |
| **Integração com sistemas existentes** | Conectar a verificação da Didit ao seu sistema de gestão de documentos atual |
| **Chamadas de um único recurso** | Você precisa de apenas um recurso (por exemplo, só a análise AML ou só a correspondência facial) |### APIs independentes disponíveis**Identidade e documentos**| API | O que faz |
| - | - |
| [Verificação de identidade](https://docs.didit.me/pt-br/standalone-apis/id-verification.md) | Extrai e valida dados de documentos de identidade (imagens da frente e do verso) |
| [Comprovante de endereço](https://docs.didit.me/pt-br/standalone-apis/proof-of-address.md) | Verifica documentos de endereço (contas de serviços públicos, extratos bancários, documentos governamentais) |
| [Validação de endereço](https://docs.didit.me/pt-br/standalone-apis/address-validation.md) | Confirma que um endereço existe e o retorna normalizado, com coordenadas |
| [Validação de banco de dados](https://docs.didit.me/pt-br/core-technology/database-validation/overview.md) | Compara os dados do usuário com bancos de dados governamentais |**Document AI**| API | O que faz |
| - | - |
| [Document AI](https://docs.didit.me/pt-br/standalone-apis/document-ai.md) | Extrai os campos que você definir de qualquer documento (PDF ou imagem), com correspondência de nomes e verificações de adulteração |**Biometria e rosto**| API | O que faz |
| - | - |
| [Prova de vida passiva](https://docs.didit.me/pt-br/standalone-apis/passive-liveness.md) | Verifica, a partir de uma única imagem, que uma pessoa real está presente (anti-spoofing) |
| [Correspondência facial](https://docs.didit.me/pt-br/standalone-apis/face-match.md) | Compara dois rostos para determinar se são da mesma pessoa |
| [Busca facial](https://docs.didit.me/pt-br/standalone-apis/face-search.md) | Busca um rosto em todas as sessões verificadas anteriormente (1:N) |
| [Estimativa de idade](https://docs.didit.me/pt-br/standalone-apis/age-estimation.md) | Estima a idade de uma pessoa a partir de uma imagem facial |**Conformidade e risco**| API | O que faz |
| - | - |
| [Análise AML](https://docs.didit.me/pt-br/standalone-apis/aml-screening.md) | Verifica pessoas ou empresas em listas de sanções, de PEP e de monitoramento |**Verificação bancária**| API | O que faz |
| - | - |
| [Verificação de conta](https://docs.didit.me/pt-br/standalone-apis/bank-account-check.md) | Confirma que uma conta bancária pertence à pessoa ou empresa indicada, antes de você enviar dinheiro para ela |**Verificação de Empresas (KYB)**| API | O que faz |
| - | - |
| [KYB Registry Search](https://docs.didit.me/pt-br/standalone-apis/kyb-registry-search.md) | Busca em registros de empresas por nome, número de registro e país; até \$0.50 por requisição bem-sucedida |
| [KYB Registry Select](https://docs.didit.me/pt-br/standalone-apis/kyb-registry-select.md) | Obtém o perfil completo do registro (administradores, beneficiários finais, endereços) de uma empresa selecionada |***## Comparação lado a lado| | Sessões hospedadas | APIs independentes |
| - | - | - |
| **Esforço de integração** | Baixo: redirecionamento, iframe ou SDK | Médio: você cuida da captura e do envio dos dados |
| **Interação do usuário** | Sim: o usuário conclui o fluxo na interface da Didit | Não: apenas servidor a servidor |
| **Câmera/captura** | Feita pela Didit (otimizada) | Você fornece as imagens/dados |
| **Fluxos com vários recursos** | Sim: encadeie recursos em um fluxo de verificação (workflow) | Um recurso por chamada de API |
| **Otimização da UX** | Testes A/B contínuos | Você controla a UX |
| **Localização** | 54 idiomas, com detecção automática | Não se aplica (sem interface) |
| **Webhooks** | Notificações automáticas de status | Não se aplica (resposta síncrona) |
| **Tempo de resposta** | Assíncrono (o usuário conclui no próprio ritmo) | Síncrono (segundos) |
| **Ideal para** | Onboarding e verificação voltados ao usuário | Processamento no backend e automação |
| **Visibilidade no console** | Ciclo de vida completo da sessão no painel | Aparece na seção Manual Checks |***## Posso usar os dois?**Sim.** Muitas equipes combinam as duas abordagens:1) **Sessões para onboarding**: novos usuários passam pelo fluxo de verificação hospedado completo durante o cadastro
2) **AML independente para monitoramento contínuo**: um cron job reanalisa todas as noites todos os usuários aprovados em relação às listas de monitoramento atualizadas
3) **Busca facial independente para detecção de duplicatas**: quando uma nova sessão é aprovada, seu servidor chama a API de busca facial para verificar se há duplicatas
4) **Verificação de identidade independente para operações**: sua equipe de conformidade envia documentos manualmente para revisões de casos atípicos### Exemplo: arquitetura combinada| Sua aplicação | API da Didit | Tipo |
| - | - | - |
| **Fluxo de cadastro do usuário** | Sessions API (interface hospedada) | Voltado ao usuário |
| **Reanálise AML noturna** | API AML independente | Servidor a servidor |
| **Revisão de documentos pela equipe de operações** | API de Verificação de identidade independente | Servidor a servidor |
| **Detecção de rostos duplicados** | API de Busca facial independente | Servidor a servidor |***## Primeiros passos[/pt-br/integration/api-full-flow](https://docs.didit.me/pt-br/integration/api-full-flow.md)[/pt-br/getting-started/api-authentication](https://docs.didit.me/pt-br/getting-started/api-authentication.md)[/pt-br/integration/webhooks](https://docs.didit.me/pt-br/integration/webhooks.md)[/pt-br/console/workflows](https://docs.didit.me/pt-br/console/workflows.md)***


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.