> ## 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: verificação de identidade REST

> Referência da API REST da Didit: KYC, KYB, AML, biometria e monitorização de transações. OpenAPI; preço por utilização, $10 grátis/mês.



Prompt de integração da API independente
        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. Perceber a diferença é essencial para escolher a integração certa para o seu caso de utilização.### [Sessões alojadas](https://docs.didit.me/pt/sessions-api/create-session.md)Fluxos de verificação completos com uma interface pré-criada e otimizada. Os utilizadores interagem com a interface alojada da Didit através de redirecionamento, iframe ou SDK nativo.### [APIs independentes](https://docs.didit.me/pt/standalone-apis/id-verification.md)Chamadas diretas à API de servidor para servidor. Envia dados (imagens, documentos, nomes) e recebe resultados de verificação estruturados, sem interface para o utilizador final.***## Sessões alojadas (recomendado para fluxos voltados para o utilizador)As sessões alojadas são a **abordagem recomendada** para a maioria das integrações. Quando cria uma sessão, a Didit gera um `verification_url` que apresenta ao seu utilizador. O utilizador conclui todo o fluxo de verificação na interface otimizada da Didit, e você recebe os resultados por webhook ou através da API.### Como funciona**1. Criar sessão**O seu servidor chama `POST /v3/session/` com um ID de fluxo. A Didit devolve um `verification_url` e um `session_token`.**2. Apresentar ao utilizador**Redirecione o utilizador, incorpore-o através de iframe ou inicialize um SDK nativo com o token de sessão.**3. O utilizador conclui a verificação**O utilizador segue o fluxo guiado na interface otimizada da Didit: captura do documento de identidade, prova de vida e quaisquer passos adicionais.**4. Receber resultados**A Didit envia um webhook para o seu servidor com a decisão de verificação, ou consulta periodicamente através da API de recuperação.### Porque são recomendadas as sessões| Vantagem | Detalhes |
| - | - |
| **UX otimizada** | A interface de verificação é testada continuamente a nível global com testes A/B, para obter as taxas de conclusão mais elevadas |
| **Gestão da câmara** | Seleção inteligente da câmara, captura automática, verificações de qualidade e compatibilidade com dispositivos incluídas |
| **Fluxo guiado** | Instruções passo a passo, feedback em tempo real e recuperação de erros para o utilizador |
| **Fluxos com várias funcionalidades** | Encadeie várias funcionalidades (documento de identidade + prova de vida + AML + telefone + e-mail) num único fluxo |
| **Segurança** | Proteção contra spoofing, deteção ativa de prova de vida e impressão digital do dispositivo incorporadas no fluxo |
| **Conformidade** | Registos de auditoria ao nível da sessão, recolha de consentimento e políticas de conservação de dados geridos automaticamente |
| **Localização** | 54 idiomas com deteção automática do navegador |
| **Nativo para dispositivos móveis** | SDKs nativos para iOS, Android, React Native e Flutter |
| **Sem manutenção** | A Didit trata de todas as atualizações da interface, erros de navegadores e dispositivos e casos limite da câmara |### Quando usar sessões- **Onboarding de utilizadores / KYC**: novos utilizadores registam-se e precisam de verificar a sua identidade
- **Verificação de idade**: confirme que os utilizadores cumprem os requisitos mínimos de idade
- **Reverificação**: reverifique periodicamente os utilizadores existentes
- **Autenticação biométrica**: os utilizadores autenticam-se com o rosto para ações sensíveis
- **Conformidade em vários passos**: fluxos que exigem documento de identidade + prova de vida + AML + telefone de uma só vez
- **Qualquer cenário em que o utilizador final esteja presente** e interaja diretamente### Endpoints de sessão| Endpoint | Finalidade |
| - | - |
| [Criar sessão](https://docs.didit.me/pt/sessions-api/create-session.md) | Gerar um URL de verificação para um utilizador |
| [Obter sessão](https://docs.didit.me/pt/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/sessions-api/list-sessions.md) | Consultar e filtrar todas as sessões |
| [Eliminar sessão](https://docs.didit.me/pt/sessions-api/delete-session.md) | Remover uma sessão e todos os dados associados |
| [Gerar PDF](https://docs.didit.me/pt/sessions-api/generate-pdf.md) | Exportar um relatório de verificação em PDF |
| [Partilhar sessão](https://docs.didit.me/pt/sessions-api/share-session/share.md) | Gerar um token de partilha para KYC reutilizável com um parceiro |
| [Importar sessão partilhada](https://docs.didit.me/pt/sessions-api/share-session/import.md) | Importar uma sessão partilhada por um parceiro (KYC reutilizável) |***## APIs autónomas (para processamento servidor a servidor)As APIs autónomas permitem-lhe chamar funcionalidades de verificação individuais **diretamente a partir do seu servidor**, sem qualquer interface para o utilizador final. Envia os dados (imagens, documentos, nomes) e recebe resultados estruturados.### Como funciona**1. Enviar dados**O seu servidor chama um endpoint autónomo (por exemplo, `POST /v3/id-verification/`) com os dados necessários: imagens, documentos ou campos JSON.**2. Receber resultados**A Didit processa o pedido de forma síncrona e devolve os resultados de verificação estruturados na resposta.### Quando usar APIs autónomas| Caso de utilização | Exemplo |
| - | - |
| **Processamento no backend** | Já tem imagens de documentos da sua própria interface de captura e precisa de as verificar |
| **Verificação em lote** | Processamento em massa de documentos de identidade carregados por uma equipa de operações |
| **UX personalizada** | Criou o seu próprio fluxo de captura e quer usar a Didit apenas para a análise |
| **Verificações servidor a servidor** | Triagem AML de uma lista de clientes, sem qualquer interação do utilizador |
| **Pipelines automatizados** | Reverificações de conformidade baseadas em CI/CD ou cron (por exemplo, monitorização AML diária) |
| **Integração com sistemas existentes** | Ligação da verificação da Didit ao seu sistema de gestão documental existente |
| **Chamadas de uma única funcionalidade** | Só precisa de uma funcionalidade (por exemplo, apenas triagem AML ou apenas correspondência facial) |### APIs autónomas disponíveis**Identidade e documentos**| API | O que faz |
| - | - |
| [Verificação de identidade](https://docs.didit.me/pt/standalone-apis/id-verification.md) | Extrai e valida dados de documentos de identidade (imagens da frente e do verso) |
| [Comprovativo de morada](https://docs.didit.me/pt/standalone-apis/proof-of-address.md) | Verifica documentos de morada (faturas de serviços públicos, extratos bancários, documentos oficiais) |
| [Validação de morada](https://docs.didit.me/pt/standalone-apis/address-validation.md) | Confirma que uma morada existe e devolve-a normalizada, com coordenadas |
| [Validação de base de dados](https://docs.didit.me/pt/core-technology/database-validation/overview.md) | Cruza os dados do utilizador com bases de dados governamentais |**Document AI**| API | O que faz |
| - | - |
| [Document AI](https://docs.didit.me/pt/standalone-apis/document-ai.md) | Extrai os campos que define 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/standalone-apis/passive-liveness.md) | Verifica se está presente uma pessoa real (proteção contra spoofing) a partir de uma única imagem |
| [Correspondência facial](https://docs.didit.me/pt/standalone-apis/face-match.md) | Compara dois rostos para determinar se pertencem à mesma pessoa |
| [Pesquisa facial](https://docs.didit.me/pt/standalone-apis/face-search.md) | Pesquisa um rosto em todas as sessões verificadas anteriormente (1:N) |
| [Estimativa de idade](https://docs.didit.me/pt/standalone-apis/age-estimation.md) | Estima a idade de uma pessoa a partir de uma imagem facial |**Conformidade e risco**| API | O que faz |
| - | - |
| [Triagem AML](https://docs.didit.me/pt/standalone-apis/aml-screening.md) | Analisa pessoas ou empresas em relação a sanções, PEP e listas de vigilância |**Verificação bancária**| API | O que faz |
| - | - |
| [Verificação de conta](https://docs.didit.me/pt/standalone-apis/bank-account-check.md) | Verifica se uma conta bancária pertence à pessoa ou empresa que indicar, antes de enviar dinheiro para a mesma |**Verificação de Empresas (KYB)**| API | O que faz |
| - | - |
| [Pesquisa no registo de empresas (KYB)](https://docs.didit.me/pt/standalone-apis/kyb-registry-search.md) | Pesquisa registos de empresas por nome, número de registo e país; até \$0.50 por pedido bem-sucedido |
| [Seleção no registo de empresas (KYB)](https://docs.didit.me/pt/standalone-apis/kyb-registry-select.md) | Obtém o perfil completo do registo (administradores, beneficiários efetivos, moradas) de uma empresa selecionada |***## Comparação lado a lado| | Sessões alojadas | APIs autónomas |
| - | - | - |
| **Esforço de integração** | Baixo: redirecionamento, iframe ou SDK | Médio: trata da captura e do envio dos dados |
| **Interação com o utilizador** | Sim: o utilizador conclui o fluxo na interface da Didit | Não: apenas comunicação servidor a servidor |
| **Câmara/captura** | Tratadas pela Didit (otimizadas) | Fornece as imagens/dados |
| **Fluxos com várias funcionalidades** | Sim: encadeie funcionalidades num fluxo | Uma funcionalidade por chamada de API |
| **Otimização de UX** | Testada continuamente com testes A/B | Controla a UX |
| **Localização** | 54 idiomas, detetados automaticamente | N/D (sem interface) |
| **Webhooks** | Notificações automáticas de estado | N/D (resposta síncrona) |
| **Tempo de resposta** | Assíncrono (o utilizador conclui ao seu ritmo) | Síncrono (segundos) |
| **Ideal para** | Onboarding e verificação com utilizadores | Processamento no backend e automatização |
| **Visibilidade na consola** | Ciclo de vida completo da sessão no painel | Aparece na secção Verificações manuais |***## Posso usar as duas?**Sim.** Muitas equipas combinam as duas abordagens:1) **Sessões para onboarding**: os novos utilizadores passam pelo fluxo completo de verificação alojado durante o registo
2) **Triagem AML autónoma para monitorização contínua**: uma tarefa cron faz novamente a triagem de todos os utilizadores aprovados todas as noites face às listas de vigilância atualizadas
3) **Pesquisa facial autónoma para deteção de duplicados**: quando uma nova sessão é aprovada, o seu servidor chama a Pesquisa facial para verificar duplicados
4) **Verificação de identidade autónoma para operações**: a sua equipa de conformidade carrega documentos manualmente para revisões de casos-limite### Exemplo: arquitetura combinada| A sua aplicação | API da Didit | Tipo |
| - | - | - |
| **Fluxo de registo de utilizadores** | API de Sessões (interface alojada) | Voltada para o utilizador |
| **Nova triagem AML noturna** | API autónoma de Triagem AML | Servidor a servidor |
| **Revisão de documentos pela equipa de operações** | API autónoma de Verificação de identidade | Servidor a servidor |
| **Deteção de rostos duplicados** | API autónoma de Pesquisa facial | Servidor a servidor |***## Como começar### [Início rápido com sessões](https://docs.didit.me/pt/integration/api-full-flow.md)Crie a sua primeira sessão de verificação alojada em 5 minutos.### [Autenticação da API](https://docs.didit.me/pt/getting-started/api-authentication.md)Obtenha a sua chave de API e comece a fazer pedidos autenticados.### [Configurar webhooks](https://docs.didit.me/pt/integration/webhooks.md)Receba notificações em tempo real quando o estado da verificação mudar.### [Criar um fluxo](https://docs.didit.me/pt/console/workflows.md)Crie fluxos de verificação personalizados na Business Console.***


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