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

# Início rápido: verificação de identidade em minutos

> Crie seu primeiro fluxo de KYC com a Didit em minutos: conta, fluxo sem código, sessão e webhooks. $10 de crédito grátis por mês.

Este início rápido leva você de uma conta nova na Didit a uma verificação de identidade em funcionamento: crie sua conta, monte um fluxo de verificação a partir de um modelo, configure um webhook e copie 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 acompanha a lição da Academy abaixo: uma gravação de tela de 19 minutos que monta um fluxo de verificação no console real, do modelo ao fluxo publicado, com regras, ramificações, preços e o link compartilhável.[Monte seu primeiro fluxo de verificação — Didit Academy](https://www.youtube.com/embed/7-nJ3JE20i4?rel=0\&playsinline=1)

Prompt de início rápido
        Copy prompt to clipboard



      
      

\<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 `{"url": "...", "subscribed_events": ["status.updated","data.updated","user.status.updated","user.data.updated"], "webhook_version": "v3"}`. Save the returned `secret`.

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 / wrong API key → `401 {"detail": "Invalid or missing API key"}` on verification.didit.me, `403` on apx.didit.me.
\- Invalid `workflow_id` → `400`.
\- Webhook handler slower than 5s → Didit retries with exponential backoff up to ~24h.

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



      
      

Paste into

**1. Crie sua conta na Didit**1) Acesse [business.didit.me](https://business.didit.me)
2) Cadastre-se com SSO ou com e-mail e senha
3) Crie sua **Organização** - é onde sua equipe gerencia fluxos, chaves de API e a atividade de verificação**2. Monte um fluxo de verificação**Vá até **Fluxos de trabalho** na barra lateral e clique em **Create New**. Escolha um tipo de fluxo:| Tipo | Descrição |
| - | - |
| **Simple Workflow** | As etapas rodam em uma ordem definida - ideal para fluxos de onboarding padrão |
| **Node-Based Workflow** | 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 uso |
| - | - |
| **KYC** | Onboarding padrão de usuários |
| **Adaptive Age Verification** | Verificação de idade por selfie, com documento de identidade como alternativa |
| **Biometric Authentication** | Reautenticação por selfie, sem senha |
| **Address Verification** | Fluxo de comprovante de endereço |Personalize ativando ou desativando blocos: prova de vida, correspondência facial, AML, NFC, telefone, e-mail e mais.O trecho abaixo retoma a lição da Academy aos 2:50, quando um novo fluxo é criado a partir de um modelo e configurado nó a nó.[Como criar um novo fluxo a partir de um modelo — 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**Vá até **API e Webhooks** na barra lateral:1. Adicione sua **Webhook URL** - a Didit envia as atualizações de status para ela
2. Copie sua **API Key** - mantenha-a apenas no servidor, nunca a exponha no código do frontend
3. Salve o **segredo de assinatura** do destino como `DIDIT_WEBHOOK_SECRET` no seu `.env` - ele é necessário para verificar o HMAC `X-Signature-V2` dos webhooks recebidos> [!TIP]
>
> Você pode **testar os webhooks diretamente** nesta página, com dados e status diferentes - sem precisar executar uma verificação completa. Assim você valida que a integração funciona corretamente antes de entrar em produção.**4. Inicie uma sessão de verificação****Opção A - Sessões hospedadas** (recomendada)É o nosso método de integração preferido. A Didit faz testes A/B contínuos do fluxo hospedado, de modo que a taxa de conclusão, a velocidade e a resistência a fraudes continuam melhorando sem que você precise publicar nenhuma interface.No console, clique em **"+"** → selecione um fluxo → gere um link ou um QR code. Ou crie sessões por programação:```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 seu `workflow_id` em **Fluxos de trabalho** na barra lateral.Na lição de integração da Academy, este é o ponto 3:36: a chamada de criação de sessão com seu único campo obrigatório, seguida de vendor data e da URL de callback.[Criar sessão: o único campo obrigatório — Didit Academy](https://www.youtube.com/embed/fX03-WEu_EI?start=216\&rel=0\&playsinline=1)**Opção B - APIs independentes** (avançada)Chame os endpoints diretamente do seu backend, sem precisar de uma sessão. Ideal para integrações servidor a servidor ou fluxos personalizados:| Endpoint | Finalidade |
| - | - |
| `POST /v3/id-verification/` | Verificação de documento |
| `POST /v3/face-match/` | Selfie vs documento de identidade |
| `POST /v3/aml/` | Sanções e PEP |
| `POST /v3/passive-liveness/` | Detecção de deepfake |Veja a lista completa na [referência da API](https://docs.didit.me/standalone-apis/id-verification.md).**5. Receba resultados em tempo real**A Didit envia eventos de webhook para o seu endpoint - sem necessidade de polling.| Evento | Gatilho |
| - | - |
| `status.updated` | O status de uma sessão de usuário ou de empresa muda |
| `data.updated` | Os dados de verificação de uma sessão ou sessão de empresa mudam |
| `user.status.updated` | O status de um usuário do fornecedor muda |
| `user.data.updated` | O perfil ou os dados agregados de um usuário do fornecedor mudam |
| `business.status.updated` | O status de uma empresa do fornecedor muda |
| `business.data.updated` | O perfil ou os dados agregados de uma empresa do fornecedor mudam |
| `activity.created` | Um evento de atividade é registrado |
| `transaction.created` | Uma transação é criada |
| `transaction.status.updated` | O status de uma transação muda |Veja [Webhooks](https://docs.didit.me/integration/webhooks.md) para o formato do payload e a verificação da assinatura.**6. Gerencie e monitore**Use o console para:- Acompanhar o progresso das sessões em tempo real
- Baixar relatórios em PDF/CSV para conformidade
- Incluir na lista de bloqueio documentos ou rostos suspeitos
- Atualizar ou rejeitar sessões manualmenteA lição da Academy sobre como ler os resultados percorre uma sessão real verificação por verificação: avisos, pontuações, o log de eventos, as entregas de webhook e a exportação em PDF que sua equipe de conformidade vai pedir.[Como ler o resultado de uma verificação — Didit Academy](https://www.youtube.com/embed/7htTWCWsl60?rel=0\&playsinline=1)## Precisa de ajuda?> **[WhatsApp](https://wa.me/+19544659728)**
>
> Resposta mais rápida - fale diretamente conosco.> **[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.