> ## 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.

# Verificação de identidade: guia de início rápido

> Crie o seu primeiro fluxo de KYC com a Didit em minutos: configure o fluxo, inicie sessões e receba webhooks. $10 de crédito gratuito/mês.

Este guia de início rápido leva-o desde a criação de uma conta Didit até uma verificação de identidade em produção: crie a sua conta, construa um fluxo de verificação a partir de um modelo, configure um webhook e copie a sua chave de API, inicie uma sessão de verificação com uma única chamada de API e receba a decisão em tempo real.Esta página complementa a lição da Academy abaixo: uma gravação de ecrã de 19 minutos que constrói um fluxo de verificação na consola propriamente dita, desde o modelo até ao fluxo publicado, incluindo regras, ramificações, preços e a ligação partilhável.[Build Your First Verification Flow — Didit Academy](https://www.youtube.com/embed/7-nJ3JE20i4?rel=0\&playsinline=1)

Prompt de Início Rápido
        Copiar o prompt para a área de transferência



      
      

\<pre>

\````# Goal — ship your first Didit verification end-to-end

You are integrating Didit (https://docs.didit.me) into my project. Take me from zero to a working KYC / KYB flow: account, workflow, session, hosted UI, webhook, decision.

For the full canonical recipe (5K-token version covering SDK pick, webhook HMAC verification, every status, decision parsing), use:

https://docs.didit.me/integration/integration-prompt

That page has a "Copy Prompt" button — copy its prompt and follow it. The summary below is enough to bootstrap if you can't fetch the full prompt.

\## My application context

\<my_stack>
Stack: [framework + language, e.g. Next.js 15 + TypeScript]
Surface: [web | iOS | Android | React Native | Flutter | backend-only]
Use case: [KYC at signup | KYB at business onboarding | age gate | re-auth]
Database: [Postgres | MySQL | Mongo]
\</my_stack>

\## Steps

1\. **Register programmatically (2 calls)** — `POST https://apx.didit.me/auth/v2/programmatic/register/` then `POST https://apx.didit.me/auth/v2/programmatic/verify-email/` with the 6-char code. Save `response.application.api_key` as `DIDIT_API_KEY`.

2\. **Create a workflow** —
\```bash
curl -X POST https://verification.didit.me/v3/workflows/ \
-H "x-api-key: $DIDIT_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"workflow_label": "Standard KYC",
"workflow_type": "kyc",
"features": [
  \{"feature": "OCR"},
  \{"feature": "LIVENESS", "config": {"face_liveness_method": "PASSIVE"}},
  \{"feature": "FACE_MATCH"},
  \{"feature": "AML"}
]
}'
\```
Persist `workflow.id`.

3\. **Create a session** —
\```bash
curl -X POST https://verification.didit.me/v3/session/ \
-H "x-api-key: $DIDIT_API_KEY" \
-H "Content-Type: application/json" \
-d '{"workflow_id": "$WORKFLOW_ID", "vendor_data": "user-42", "callback": "https://myapp.com/kyc/return"}'
\```
Response contains `session_id`, `url`, `session_token`. Redirect the user to `url` (or open in the SDK / an iframe).

4\. **Register a webhook destination** — `POST https://verification.didit.me/v3/webhook/destinations/` with `{"label": "Production", "url": "...", "subscribed_events": ["status.updated","data.updated","user.status.updated","user.data.updated"], "webhook_version": "v3"}` (`label` and `url` are required). Save the returned `secret_shared_key` as `DIDIT_WEBHOOK_SECRET` (`GET /v3/webhook/destinations/{destination_uuid}/` returns it again).

5\. **Receive webhooks** — verify the `X-Signature-V2` header (HMAC-SHA256 of canonical JSON; see /integration/webhooks). De-dupe on `event_id`. Respond within 5 seconds. Apply decision to your DB based on `status`.

6\. **Retrieve the decision (fallback)** — `GET https://verification.didit.me/v3/session/{session_id}/decision/`. V3 returns plural arrays (`id_verifications[]`, `liveness_checks[]`, `face_matches[]`, `aml_screenings[]`, ...). Never assume singular V2 fields.

\## Failure modes
\- Missing API key → `403 {"detail": "You do not have permission to perform this action."}` on verification.didit.me. Wrong, revoked or expired key → `401`. JWT problems on apx.didit.me → `403`.
\- Invalid `workflow_id` → `400`.
\- Webhook handler slower than 5s, or answering 5xx or 404 → Didit retries twice, after about 1 and 4 minutes, then drops the delivery. Resend it from the destination's delivery log.

\## Sources of truth (cross-check before shipping)
\- /openapi-25.json — verification API
\- /openapi-auth.json — programmatic auth
\- /reference/data-models — V3 decision shape
\- /integration/integration-prompt — canonical end-to-end prompt````

\</pre>



      
      

Colar em

**1. Crie a sua conta Didit**1) Aceda a [business.didit.me](https://business.didit.me)
2) Registe-se com SSO ou e-mail e palavra-passe
3) Crie a sua **Organização** — é aqui que a sua equipa gere fluxos, chaves de API e a atividade de verificação**2. Construa um fluxo de verificação**Navegue até **Fluxos** na barra lateral e clique em **Criar novo**. Escolha um tipo de fluxo:| Tipo | Descrição |
| - | - |
| **Fluxo simples** | Os passos são executados numa ordem definida — ideal para fluxos de onboarding padrão |
| **Fluxo baseado em nós** | Lógica de ramificação flexível — crie caminhos condicionais com base nos resultados da verificação |Escolha um modelo para começar:| Modelo | Caso de utilização |
| - | - |
| **KYC** | Onboarding padrão de utilizadores |
| **Verificação de idade adaptativa** | Verificação de idade por selfie com verificação por documento como alternativa |
| **Autenticação biométrica** | Reautenticação por selfie sem palavra-passe |
| **Verificação de endereço** | Fluxo de comprovativo de morada |Personalize ativando ou desativando blocos: Prova de vida, Correspondência facial, AML, NFC, Telefone, E-mail e muito mais.O vídeo abaixo retoma a lição da Academy aos 2:50, onde um novo fluxo é criado a partir de um modelo e configurado nó a nó.[Creating a new workflow from a template — Didit Academy](https://www.youtube.com/embed/7-nJ3JE20i4?start=170\&rel=0\&playsinline=1)**3. Configure o webhook e copie a chave de API**Aceda a **Programadores** na barra lateral e, em seguida, a **Chaves de API** e **Webhooks**:1. Adicione o seu **URL do webhook** — a Didit envia atualizações de estado para este endereço
2. Copie a sua **chave de API** — mantenha-a apenas no lado do servidor, nunca a exponha no código do lado do cliente
3. Guarde o **segredo de assinatura** do destino como `DIDIT_WEBHOOK_SECRET` no seu `.env` — é obrigatório para verificar o HMAC `X-Signature-V2` nos webhooks recebidos> [!TIP]
>
> Pode **testar webhooks diretamente** a partir desta página com diferentes dados e estados — não é necessário executar uma verificação completa. Isto permite validar se a sua integração está a funcionar corretamente antes de avançar para produção.**4. Inicie uma sessão de verificação****Opção A — Sessões alojadas** (recomendadas)O nosso método de integração preferencial. A Didit realiza testes A/B contínuos no fluxo alojado, pelo que a taxa de conclusão, a velocidade e a resistência a fraudes continuam a melhorar sem que tenha de implementar qualquer interface.Na Consola, clique em **"+"** → selecione um fluxo → gere uma ligação ou código QR. Ou crie sessões por via programática:```bash theme={null}
curl -X POST https://verification.didit.me/v3/session/ \
  -H "x-api-key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"workflow_id": "your-workflow-id"}'
```> [!NOTE]
>
> Encontre o seu `workflow_id` em **Fluxos** na barra lateral.Na lição da Academy sobre integração, isto situa-se na marca dos 3:36: a chamada de criação de sessão com o seu único campo obrigatório, seguida dos dados do fornecedor e do URL de retorno.[Create session: the one required field — Didit Academy](https://www.youtube.com/embed/fX03-WEu_EI?start=216\&rel=0\&playsinline=1)**Opção B — APIs autónomas** (avançadas)Chame endpoints diretamente a partir do seu servidor — não é necessária qualquer sessão. Ideal para fluxos de servidor para servidor ou personalizados:| Endpoint | Finalidade |
| - | - |
| `POST /v3/id-verification/` | Verificação de documentos |
| `POST /v3/face-match/` | Selfie vs. documento |
| `POST /v3/aml/` | Sanções e PEP |
| `POST /v3/passive-liveness/` | Deteção de deepfakes |Consulte a lista completa na [Referência da API](https://docs.didit.me/pt/standalone-apis/id-verification.md).**5. Receba resultados em tempo real**A Didit envia eventos de webhook para o seu endpoint — sem necessidade de consultas periódicas.| Evento | Acionador |
| - | - |
| `status.updated` | O estado da sessão de utilizador ou da sessão de empresa é alterado |
| `data.updated` | Os dados de verificação da sessão ou da sessão de empresa são alterados |
| `user.status.updated` | O estado do utilizador do fornecedor é alterado |
| `user.data.updated` | O perfil do utilizador do fornecedor ou os dados agregados são alterados |
| `business.status.updated` | O estado da empresa do fornecedor é alterado |
| `business.data.updated` | O perfil da empresa do fornecedor ou os dados agregados são alterados |
| `activity.created` | Evento de atividade registado |
| `transaction.created` | Transação criada |
| `transaction.status.updated` | O estado da transação é alterado |Consulte [Webhooks](https://docs.didit.me/pt/integration/webhooks.md) para obter informações sobre o formato do payload e a verificação da assinatura.**6. Faça a gestão e a monitorização**Utilize a Consola para:- Visualizar o progresso da sessão em tempo real
- Descarregar relatórios em PDF/CSV para conformidade
- Bloquear IDs ou rostos suspeitos
- Atualizar ou rejeitar sessões manualmenteA lição da Academy sobre a leitura de resultados analisa uma sessão real, passo a passo: avisos, pontuações, o registo de eventos, entregas de webhook e a exportação em PDF que a sua equipa de conformidade irá solicitar.[How to Read a Verification Result — Didit Academy](https://www.youtube.com/embed/7htTWCWsl60?rel=0\&playsinline=1)## Precisa de ajuda?> [card] [E-mail](mailto:hello@didit.me)
>
> [hello@didit.me](mailto:hello@didit.me)


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