Pular para o conteúdo principal
Use estes campos de config dentro de cada item do array features em POST /v3/workflows/ e PATCH /v3/workflows/{settings_uuid}/.
A API v3 de workflows monta um workflow linear baseado em nós, a partir do array ordenado features. Envie os recursos na ordem exata de execução.
Qual mecanismo executa um recurso, o próprio da Didit ou o de um provedor terceirizado, não é um dos campos de configuração abaixo. Isso é gerenciado pelo Marketplace do console, que define provider_key e fallback_to_native no objeto config do recurso para você.

Regras de validação

  • OCR usa por padrão todos os países e tipos de documento compatíveis quando config.documents_allowed é omitido, null ou {}. Se você enviar um objeto documents_allowed personalizado, ele deve conter pelo menos um país válido e um tipo de documento habilitado. Cada configuração de documento pode definir sides como 1 para captura apenas da frente ou 2 para captura da frente e do verso.
  • QUESTIONNAIRE exige config.questionnaire_uuid.
  • KYB_DOCUMENTS exige config.kyb_required_document_groups.
  • SIGNATURE recusa signature_level: "qes" com qes_not_available até que assinaturas qualificadas estejam disponíveis, e recusa uma nova etapa com signature_level: "aes" com aes_not_available enquanto signature_availability.aes for false no fluxo. Os documentos devem existir quando uma sessão é criada: com signature_documents_source definido como workflow, a etapa precisa de documentos enviados no console, e uma etapa sem nenhum documento pode continuar como rascunho, mas não pode entrar em produção; com session, toda chamada de criação deve enviar sign.documents.
  • FACE_MATCH deve vir depois de OCR em requisições de fluxo simples.
  • NFC e DATABASE_VALIDATION exigem OCR quando aparecem no mesmo fluxo. AML precisa de um entre OCR, KYB_REGISTRY ou DOCUMENT_AI antes dele; com apenas DOCUMENT_AI à frente, o full_name analisado precisa poder ser preenchido, seja a partir de um campo anterior do Document AI já com a chave full_name, que é mapeado para você, seja a partir de uma entrada explícita em config.aml_field_sources (consulte AML).
  • Sub-recursos de KYB, como KYB_DOCUMENTS e KYB_KEY_PEOPLE, exigem KYB_REGISTRY em uma etapa anterior do fluxo.
  • Um fluxo é de pessoa (KYC) ou de empresa (KYB), nunca os dois. Um fluxo que usa qualquer recurso de KYB (KYB_REGISTRY, KYB_DOCUMENTS, KYB_KEY_PEOPLE) só pode combiná-lo com AML, DOCUMENT_AI, QUESTIONNAIRE, PHONE_VERIFICATION, EMAIL_VERIFICATION, IP_ANALYSIS e SIGNATURE. Ele não pode incluir recursos exclusivos de pessoa, como OCR, LIVENESS, FACE_MATCH, NFC, PROOF_OF_ADDRESS, DATABASE_VALIDATION ou AGE_ESTIMATION, e um fluxo de pessoa não pode incluir recursos de KYB. Em um fluxo de empresa, DOCUMENT_AI compara qualquer campo marcado com is_full_name com a empresa verificada, em vez de uma pessoa. Para verificar as pessoas por trás de uma empresa, crie um fluxo de KYC separado e faça referência a ele a partir do nó KYB_KEY_PEOPLE usando kyb_ubo_verification_workflow, kyb_officer_verification_workflow ou kyb_shareholder_verification_workflow.
  • Campos de ação usam DECLINE, REVIEW ou NO_ACTION, a menos que o campo abaixo indique uma restrição.
  • Campos de pontuação e de limiar são números de 0 a 100, a menos que um intervalo mais estreito seja indicado.

Regras de status comuns

Todo recurso aceita um array opcional status_rules. Use-o para substituir o status do recurso quando a condição de um campo for atendida.
Leia o exemplo acima assim: kyc.extra_fields.profession tem correspondência aproximada com Soft. Engineer com pontuação mínima de 80 → definir o status do recurso como Declined. Na Verificação de identidade, use como alvo valores extraídos de extra_fields, como kyc.extra_fields.profession, datas de validade das categorias da carteira de habilitação, como kyc.extra_fields.dl_class_code_b_from e kyc.extra_fields.dl_class_code_b_to, ou códigos de restrição/informação por categoria, como kyc.extra_fields.dl_class_code_b_notes (coluna 12 das carteiras de habilitação do Reino Unido). Esses valores vêm do objeto extra_fields do resultado do OCR; eles não fazem parte de expected_details.
dl_class_code_*_from e dl_class_code_*_to são sempre uma data ISO válida ou ficam ausentes de extra_fields: a Didit nunca retorna texto de OCR ilegível em um campo de data. Se a célula da tabela de categorias não puder ser lida, o campo é omitido em vez de ser enviado como string bruta; por isso, use o operador is_empty para direcionar datas de categoria ilegíveis em vez de presumir que o campo está sempre presente.
Para campos de data, use value_type: "relative_date" com um objeto de valor no formato { "direction": "past" | "future", "amount": number, "unit": "days" | "months" | "years" }. Por exemplo, operator: "less_than" com { "direction": "past", "amount": 3, "unit": "years" } corresponde a datas com mais de três anos em relação a hoje.

Comparar com uma etapa específica

Um fluxo de verificação em grafo pode executar o mesmo recurso mais de uma vez, por exemplo, três etapas de Verificação de identidade. Com value_type: "field", acrescente @<node_id> ao valor para lê-lo de uma etapa específica. O nó referenciado deve ser uma etapa de recurso que sempre é executada antes da etapa da própria regra, em todos os caminhos que chegam a ela, ou a própria etapa da regra. Um valor sem o sufixo é lido da etapa da própria regra.
Leia esta regra, definida na terceira etapa de Verificação de identidade, assim: o kyc.full_name desta etapa tem correspondência aproximada com o nome completo lido pela etapa ocr_1 com pontuação mínima de 80 → definir o status do recurso como Declined. No console, o seletor de variáveis lista cada etapa elegível pelo número dela na tela e armazena o sufixo para você.

OCR / Verificação de identidade

Valor do recurso: OCR.
A prova de vida do documento é configurada com os seis limiares document_liveness_* acima, e não com campos de ação por sinal. portrait_replacement_action, printed_copy_action e screen_capture_action são configurações no nível da conta e não são aceitas na configuração de recursos de um fluxo: a API remove chaves de configuração desconhecidas ao salvar, então enviá-las ali não tem efeito. Cada sinal tem um limiar de recusa e um limiar de revisão em uma escala de 0-100, na qual uma pontuação mais alta significa que é mais provável que o documento seja autêntico.
Exemplo:

Métodos por país

methods é indexado pelo código de país ISO 3166-1 alpha-3. Cada país tem até três objetos de método; tudo o que você omitir assume o valor padrão.
Para deixar os documentos fora da primeira tela e oferecê-los apenas quando uma carteira ou uma consulta não der certo, defina document.fallback_only. O exemplo usa a Finlândia, onde a Finnish Trust Network vem primeiro e a captura de documento é a alternativa. A Finlândia também precisa ter seus tipos de documento habilitados em documents_allowed (por exemplo, passaporte e carteira de identidade) para que a alternativa tenha documentos a oferecer.
As duas consultas acima estão available no catálogo atual, então essa configuração é salva como está. O bloco de carteira está desativado de propósito: nenhuma carteira está ativa em produção ainda, então wallet.enabled: true é rejeitado e faz todo o salvamento falhar, incluindo a configuração das consultas. Quando o catálogo marcar uma carteira como available em um país, adicione-a a esse país:
Validações que a API aplica ao salvar:
  • Um código de país desconhecido, uma chave desconhecida dentro de um país ou uma chave desconhecida dentro de um método é recusado: nada é descartado silenciosamente.
  • Um país sem nenhum método ativado é recusado, pois ninguém nele conseguiria se verificar.
  • Uma carteira ou consulta só pode recorrer à captura de documento quando a captura de documento está ativada para aquele país. fallback_to_document em um país onde document.enabled é false resulta em recusa em tempo de execução, porque não há para onde recorrer.
  • document.fallback_only: true é recusado com HTTP 400, a menos que document.enabled seja true e pelo menos uma carteira ou consulta de identidade nesse país recorra à captura de documento.
A implementação atual em staging aplica id_lookup.response_fields à saída da comparação, ao gênero opcional e aos retratos do registro retidos. Os campos de identidade obrigatórios continuam fazendo parte do registro da verificação. Isso não garante que todo payload intermediário do provedor seja excluído do processamento. A implantação em produção ainda não foi verificada para essa mudança; confirme o comportamento no seu ambiente de destino antes de depender da seleção de campos para requisitos de retenção.
Leia o catálogo de recursos antes de escrever methods, pela aba Países do console ou com a ferramenta MCP didit_workflow_get_id_verification_methods_catalog. Comportamento, cobertura e faturamento estão em Métodos de Verificação de identidade.

NFC / ePassport

Valor do recurso: NFC.

Prova de vida

Valor do recurso: LIVENESS.

Correspondência facial

Valor do recurso: FACE_MATCH.

Estimativa de idade

Valor do recurso: AGE_ESTIMATION.

Verificação de telefone

Valor do recurso: PHONE_VERIFICATION. A Verificação de telefone fica desativada até que a organização faça sua primeira recarga.
O enriquecimento com inteligência de telefone é um complemento opcional. Quando phone_enrichment_enabled é true, cada verificação de telefone concluída é enriquecida com inteligência de telefone e cobrada a $0.05 por requisição, além do custo padrão da verificação de telefone. As ações baseadas em pontuação só entram em vigor quando a pontuação do enriquecimento está disponível; as ações de índice de confiança, tipo de telefone e portabilidade se aplicam assim que o enriquecimento é executado.A verificação de presença em plataformas online é um segundo complemento, separado. Quando phone_social_enabled é true, cada verificação de telefone concluída também informa em quais plataformas online o número está registrado (mensagens, redes sociais, e-commerce e serviços profissionais) e é cobrada a $0.05 por requisição. Ela pode ser ativada com ou sem phone_enrichment_enabled: os dois complementos têm preço e faturamento independentes. Uma consulta que não encontra o número em nenhuma das plataformas que cobre é uma resposta válida e cobrável, e aciona phone_no_social_presence_action. Use phone.social_profiles_registered (o número de plataformas em que o número está registrado) para criar ramificações com base no resultado em um grafo de fluxo de trabalho.

Verificação de e-mail

Valor do recurso: EMAIL_VERIFICATION.
O enriquecimento de inteligência de e-mail é um complemento opcional. Quando email_enrichment_enabled é true, cada verificação de e-mail concluída é enriquecida com inteligência de e-mail e cobrada a $0.05 por requisição, além do custo padrão da verificação de e-mail. A ação baseada na pontuação entra em vigor assim que a pontuação do enriquecimento estiver disponível; as ações de vazamento se aplicam assim que o enriquecimento é executado.A verificação de presença online é um segundo complemento, separado. Quando email_social_enabled é true, cada verificação de e-mail concluída também informa em quais plataformas online o endereço está cadastrado (provedores de e-mail, redes sociais e serviços profissionais, de e-commerce e de entretenimento) e é cobrada a $0.05 por requisição. Ela pode ser ativada com ou sem email_enrichment_enabled: os dois complementos têm preços e cobranças independentes. Uma consulta que não encontra o endereço em nenhuma das plataformas que cobre é uma resposta válida e cobrável, e aciona email_no_social_presence_action. Use email.social_profiles_registered (o número de plataformas em que o endereço está cadastrado) para criar ramificações com base no resultado em um grafo de fluxo de trabalho.

Validação de banco de dados

Valor do recurso: DATABASE_VALIDATION. Exemplo:
É database_validation_countries que faz esta etapa funcionar. Um recurso DATABASE_VALIDATION salvo sem ele é aceito, mas depois não executa nenhuma verificação. Por isso, sempre envie pelo menos um país com pelo menos um ID de serviço.
Um ID de serviço que a etapa não consegue executar é rejeitado com um 400 que o identifica e explica o motivo, e nada é salvo. Isso inclui um ID que não está no catálogo, um ID que pertence a outro país, um serviço que ainda não está disponível e um serviço oferecido apenas pelo POST /v3/database-validation/ independente. Um serviço cujas entradas não são fornecidas por nenhuma etapa anterior é rejeitado da mesma forma, com a lista das entradas ausentes. Um serviço que o fluxo salvo já contém, mas que não pode mais ser executado, é removido quando você o salva novamente. Por exemplo, este fluxo da Argentina lê o número do DNI e o gênero da Verificação de identidade e os confere com o RENAPER sem selfie:
Use arg_renaper em vez disso, após uma etapa LIVENESS, para também comparar a selfie com a foto que o RENAPER mantém. Consulte RENAPER para ver a pontuação de correspondência facial e o limiar.

Verificação bancária

Valor do recurso: BANK_VERIFICATION.
A Verificação bancária ainda não está habilitada em produção. Até que esteja, salvar um fluxo de produção que inclua este nó é recusado.
O usuário verifica uma conta bancária, e o titular da conta informado pelo banco é comparado com a identidade estabelecida por uma etapa anterior do fluxo. O usuário faz isso por um de dois métodos: o login no banco (open_banking), em que ele entra na conta pelo próprio banco, ou a verificação de conta (account_lookup), em que ele digita os dados da conta e o banco confirma o nome registrado nela. bank_method_order e os methods de cada país definem quais métodos um país oferece e qual vem primeiro; veja Métodos de verificação bancária. A etapa produz evidências (uma pontuação do nome do titular, a comparação que gerou essa pontuação e códigos de motivo), e as chaves bank_*_action transformam essas evidências em um status. Duas coisas decidem se o nó faz alguma coisa. bank_countries é uma lista de permissão, então um mapa vazio não oferece nenhum banco e não executa nenhuma verificação. Além disso, o titular precisa ser comparado com alguma coisa: coloque uma etapa OCR, DATABASE_VALIDATION ou QUESTIONNAIRE antes dele, envie expected_details na criação da sessão ou mapeie os campos você mesmo com bank_field_sources. Sem nenhuma dessas opções, a propriedade só pode ser unknown, e é bank_reference_identity_missing_action que decide o que acontece nesse caso.
A Verificação bancária ainda está sendo liberada, então um nó BANK_VERIFICATION só é aceito em uma conta em que ela tenha sido habilitada. Em qualquer outra conta, o salvamento é rejeitado com uma mensagem informando isso. A rota que executa a etapa também não é configurada aqui: ela é definida pelo par provider_key e fallback_to_native, que o Marketplace do console configura para você.

Conectar uma conta

Quando o usuário não consegue verificar

O usuário sempre pode continuar sem um banco, e a etapa nunca o deixa sem saída. Veja Quando a pessoa não consegue verificar o banco. O efeito de continuar sobre a sessão é definido por bank_unsupported_action, bank_attempts_exhausted_action ou bank_skipped_action, conforme o motivo pelo qual o usuário continuou, a menos que uma tentativa avaliada antes já tenha decidido a etapa: consulte Ações de veredito.

Comparação do titular

Verificação de conta

Estas chaves se aplicam apenas à verificação de conta. O login no banco mantém suas próprias correspondências próximas e seu próprio bank_max_attempts.

Dados financeiros

bank_expected_currencies funciona apenas com o consentimento padrão ownership. As outras três chaves leem dados financeiros reais, então cada uma precisa do escopo de consentimento correspondente em bank_scopes, e o salvamento é recusado sem ele.

O que é armazenado

Ações de veredito

Toda chave aqui aceita DECLINE, REVIEW ou NO_ACTION, a menos que esteja marcada como restrita, e recorre ao padrão abaixo quando você a omite ou envia null. Nada que não seja evidência positiva de propriedade aprova por padrão, e somente evidência demonstrável contra o usuário recusa.

Mais controles

Estas chaves são opcionais. Cada chave de ação aceita DECLINE, REVIEW ou NO_ACTION. Exemplo de objeto config, para uma conta em que a Verificação bancária está ativada e a rota selecionada cobre o país listado:
bank_countries é o que faz esta etapa ter efeito, e é verificado em relação à rota em que o nó é executado, não a uma lista global. Um país em que essa rota não consegue estabelecer a propriedade da conta é rejeitado ao salvar e citado no erro; portanto, leia o erro em vez de presumir que o país foi aceito e será ignorado em tempo de execução.

AML

Valor do recurso: AML. Para a triagem de pessoas em KYC, use estes campos: Para a triagem de empresas em KYB, use estes campos:

Triagem de uma entidade extraída por uma etapa de Document AI

Uma etapa de AML normalmente lê quem deve ser triado a partir da etapa OCR (uma pessoa) ou da etapa KYB_REGISTRY (uma empresa). Um fluxo de verificação (workflow) cuja única etapa de extração é DOCUMENT_AI (documentos não padronizados, como uma certidão fiscal ou um contrato social) não tem nenhuma delas, por isso precisa indicar de onde vem cada dado de entrada da triagem. Exemplo: triagem da empresa indicada em uma acta constitutiva mexicana, sem nenhum documento de identidade no fluxo:
Sem uma etapa OCR e sem uma etapa KYB_REGISTRY antes dela, uma etapa AML precisa conseguir preencher full_name: não há pesquisa no provedor sem um nome. Um fluxo que não mapeia nada, ou que mapeia uma chave do Document AI que nenhuma etapa anterior extrai, é rejeitado ao salvar, em vez de ser salvo e ficar sem triar nada. A precisão do AML depende diretamente de quantos identificadores você fornece: uma triagem só com o nome é o que gera um alto volume de falsos positivos.

Análise de dispositivo e IP

Valor do recurso: IP_ANALYSIS. Exemplo:
Use recovered_device_action separadamente de duplicated_device_action quando quiser monitorar dispositivos identificados por recuperação com alta confiança antes de recusá-los automaticamente. Isso é útil durante a implantação, porque as correspondências por recuperação de dispositivo são projetadas para detectar redes de fraude, mas ainda devem ser calibradas com base no seu próprio tráfego.

Verificação de localização

Valor do recurso: GEOLOCATION. Verifica onde a pessoa está durante a verificação, pela posição do dispositivo ou pela localização do IP da conexão, em relação às áreas permitidas e bloqueadas, à localização do IP e ao endereço do documento. Consulte Verificação de localização para saber como a etapa funciona e o relatório dela para os campos de decisão. Coloque-a depois da Verificação de identidade ou do Comprovante de endereço se quiser a distância até o endereço de um documento, porque a distância só é medida quando há um endereço registrado. Com geolocation_position_source não definido, a distância até a localização do IP exige uma etapa de Análise de dispositivo e IP no mesmo fluxo. Todas as chaves são opcionais: uma etapa com config vazio pede ao dispositivo uma posição com precisão de 250 m e com no máximo 120 segundos, dá 3 tentativas à pessoa e não aplica nenhuma regra de área. Cada constatação tem sua própria chave de ação. Uma chave de ação que você deixa sem definir assume o padrão do geolocation_preset escolhido ou, se você não escolheu nenhum, o padrão por chave listado abaixo. Uma localização incerta ou recusada tem REVIEW como padrão, nunca DECLINE, porque uma permissão negada ou um raio amplo não é evidência de fraude. Uma ação definida explicitamente sempre prevalece sobre o preset. Um desafio reproduzido (LOCATION_REPLAY_DETECTED) e uma falha na atestação do dispositivo (LOCATION_INTEGRITY_FAILED) sempre resultam em recusa e não têm chave de ação.

Formatos de área

Cada item de geolocation_areas tem um id (de 1 a 64 caracteres de A-Z a-z 0-9 _ -, único na lista), um label opcional (até 80 caracteres), um type igual a allowed ou blocked e um kind que define o formato. Uma lista comporta no máximo 50 áreas e precisa de pelo menos uma área allowed enquanto is_geolocation_geofencing_enabled for true. geolocation_areas e geolocation_geofencing_by_country não podem ser enviados juntos, e geolocation_refusal_path: "end_session" exige que geolocation_permission_denied_action seja REVIEW ou DECLINE. A API recusa uma área que nunca poderia corresponder, como uma região de um país sem limites publicados, em vez de salvá-la. Exemplo:

Comprovante de endereço

Valor do recurso: PROOF_OF_ADDRESS.

Questionário

Valor do recurso: QUESTIONNAIRE.

Registro KYB

Valor do recurso: KYB_REGISTRY. kyb_registry_fields_config mapeia cada chave de campo configurável para {"enabled": bool, "required": bool}. enabled: false oculta o campo, enabled: true, required: false o exibe como opcional e enabled: true, required: true o torna obrigatório no envio. company_name, country_code e region são sempre exibidos e obrigatórios e não podem ser configurados. Quando o objeto é omitido, null ou {}, aplica-se o padrão: somente incorporation_date é obrigatório e todos os outros campos são opcionais.
Chaves de campo configuráveis: registration_number, incorporation_date, legal_address, vat_number, alternative_names, tax_number, company_type, legal_entity_identifier, location_of_registration, nature_of_business, registered_capital_amount, registered_capital_currency, website, email, phone, control_scheme. Veja campos configuráveis do formulário de registro para o comportamento do usuário final e validação de VAT e de identificação fiscal para saber como vat_number e tax_number são verificados.

Documentos KYB

Valor do recurso: KYB_DOCUMENTS.

Pessoas-chave KYB

Valor do recurso: KYB_KEY_PEOPLE.

Document AI

Valor do recurso: DOCUMENT_AI. Solicita um ou mais documentos ao usuário e extrai, com um modelo de visão, os campos nomeados que você define. Cada campo configurado se torna um valor document_ai.<key> que pode ser usado em ramificações, e o resultado da etapa é document_ai.status. Cada item em document_ai_documents é um documento: Cada item em fields de um documento é um campo: Exemplo:

Assinatura eletrônica

Valor do recurso: SIGNATURE. Faz com que a pessoa verificada, ou as pessoas-chave de uma empresa, assinem documentos, no nível Simples (padrão) ou Avançado (AES). Coloque-o depois das etapas que verificam o signatário: Verificação de identidade e Verificação de e-mail ou de telefone para o código. Veja Assinatura eletrônica. Os campos de um documento do fluxo são posicionados no editor de modelos do console. Para documentos da sessão, envie-os em sign.documents[].fields e envie os valores dos campos api.<key> em sign.field_values. Veja Criar sessão. Exemplo, para documentos enviados com cada sessão:
Última modificação em 1 de novembro de 2026