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

# API de Triagem AML: Sanções, PEP e Listas de Vigilância

> Triagem AML em tempo real da Didit: mais de 1,300 listas de vigilância globais, sanções, PEP e notícias adversas. $0.20 por verificação.



## OpenAPI

````yaml pt/openapi-25.json POST /v3/aml/
openapi: 3.0.0
info:
  version: 3.0.0
  title: Didit Verification API
  description: API de Verificação de identidade. Autentique-se com o cabeçalho x-api-key.
servers:
  - url: https://verification.didit.me
security: []
tags: []
paths:
  /v3/aml/:
    post:
      tags:
        - Standalone APIs
      summary: Triagem AML (independente)
      description: >-
        Faça a triagem de uma pessoa ou empresa em conjuntos de dados de PEP,
        sanções, listas de aviso/vigilância e notícias adversas numa única
        chamada.


        **Modelo de duas pontuações.** Cada resultado inclui um `match_score`
        (0–100, confiança na identidade) e um `risk_score` (0–100, risco da
        entidade). Os resultados cujo `match_score` seja inferior a
        `aml_match_score_threshold` (por predefinição **93**) são marcados como
        `review_status: "False Positive"` e ignorados para efeitos de risco; o
        `risk_score` mais elevado entre os restantes resultados torna-se
        `aml.score`. O `aml.status` final segue os seus limiares: `score` >
        `aml_score_review_threshold` (por predefinição **100**) → `Declined`;
        `score` > `aml_score_approve_threshold` (por predefinição **80**) → `In
        Review`; caso contrário, `Approved`. Sempre que `score` for diferente de
        zero e ≥ ao limiar de aprovação, é adicionado um aviso
        `POSSIBLE_MATCH_FOUND` (uma pontuação exatamente de 0 nunca emite
        aviso).


        **Pesos da pontuação de correspondência.** `aml_name_weight` +
        `aml_dob_weight` + `aml_country_weight` devem somar exatamente 100
        (valores predefinidos: 60/25/15). Os componentes omissos no pedido são
        excluídos e os pesos dos restantes são renormalizados; um
        `document_number` correspondente atua como chave de ouro que sobrepõe o
        `match_score` para 100.


        **Latência.** As triagens simples demoram normalmente alguns segundos a
        concluir. Com `include_adverse_media=true`, a API aguarda pelo
        enriquecimento de notícias adversas (uma pausa inicial de ~5 s mais até
        ~25 s de consultas periódicas) — configure um timeout do cliente de
        **pelo menos 60 segundos**.


        **Persistência.** `save_api_request` tem o valor predefinido **true**: a
        triagem é guardada como uma sessão (`request_id` funciona com `GET
        /v3/session/{sessionId}/decision/`), surge na consola, o webhook
        `status.updated` é disparado e os estados de revisão dos resultados
        podem ser atualizados posteriormente. Com `save_api_request=false`, nada
        é armazenado e `request_id` é um ID de correlação transitório.
        `include_ongoing_monitoring=true` continua a realizar novas triagens ao
        perfil e requer `save_api_request=true` (imposto com um `400`).


        **Idempotência.** Envie um cabeçalho `Idempotency-Key` ao tentar
        novamente após um timeout ou erro transitório. A chave está associada à
        sua aplicação e ao corpo exato do pedido. O primeiro pedido concluído
        armazena a sua resposta; tentativas posteriores idênticas devolvem essa
        mesma resposta e não executam nem faturam outra triagem AML. Se o pedido
        original ainda estiver em execução, tente novamente mais tarde com a
        mesma chave. Se a mesma chave for reutilizada com um corpo diferente, a
        API devolve `409`.


        **Faturação.** É debitado um crédito de API AML após a primeira triagem
        bem-sucedida. Respostas idempotentes reproduzidas não são cobradas
        novamente; saldo insuficiente devolve `403` antes de ocorrer qualquer
        nova triagem.


        **Sandbox.** As chaves de aplicações sandbox ignoram totalmente a
        triagem e a faturação e devolvem um resultado simulado — `Approved` sem
        qualquer resultado, a menos que passe `sandbox_scenario`.
        `save_api_request` funciona do mesmo modo que nas chaves de produção,
        pelo que uma triagem sandbox guardada pode ser consultada através de
        `GET /v3/session/{sessionId}/decision/` e `GET
        /v3/session/{sessionId}/generate-pdf/`.
      operationId: post_v3aml
      parameters:
        - name: Idempotency-Key
          in: header
          required: false
          description: >-
            Chave opcional de proteção contra repetições, até 255 carateres.
            Reutilizar a mesma chave com o mesmo corpo do pedido devolve a
            resposta original sem executar nem faturar uma segunda triagem.
            Reutilizar a chave com um corpo diferente devolve `409`.
          schema:
            type: string
            maxLength: 255
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - full_name
              properties:
                full_name:
                  type: string
                  minLength: 2
                  description: >-
                    Nome completo da pessoa ou empresa a analisar na triagem.
                    Mínimo de **2 caracteres** - o limite mínimo do próprio
                    fornecedor de triagem. Um nome mais curto ou em branco
                    retorna `400` neste campo antes de qualquer triagem ser
                    executada, pelo que nada é faturado.
                  example: Antonio Ejemplo Modelo
                entity_type:
                  type: string
                  enum:
                    - person
                    - company
                  default: person
                  description: Tipo de entidade a analisar. O valor predefinido é `person`.
                date_of_birth:
                  type: string
                  format: date
                  description: >-
                    Data de nascimento (pessoas) ou data de constituição
                    (empresas), `YYYY-MM-DD`. Melhora a precisão da
                    correspondência através do peso da data de nascimento.
                  example: '1972-02-29'
                nationality:
                  type: string
                  description: >-
                    Código de país ISO 3166-1 **alpha-2** (ex.: `ES`). Códigos
                    inválidos retornam `400`. Melhora a precisão da
                    correspondência através do peso do país.
                  example: ES
                document_number:
                  type: string
                  description: >-
                    Número do documento de identidade. Sem ponderação — funciona
                    como chave mestre: uma correspondência exata substitui a
                    `match_score` da ocorrência por 100, uma divergência estrita
                    penaliza-a. Enviado ao fornecedor de triagem como filtro de
                    pesquisa apenas se tiver entre **2 e 50 carateres**; um
                    valor fora desse intervalo é aceite e armazenado, e a
                    triagem é executada e faturada, apenas sem refinamento pelo
                    número de documento.
                aml_score_approve_threshold:
                  type: number
                  minimum: 0
                  maximum: 100
                  default: 80
                  description: >-
                    Limiar de pontuação de risco igual ou inferior ao qual o
                    resultado é `Approved`. Deve ser ≤
                    `aml_score_review_threshold` (caso contrário, `400`).
                aml_score_review_threshold:
                  type: number
                  minimum: 0
                  maximum: 100
                  default: 100
                  description: >-
                    Limiar de pontuação de risco acima do qual o resultado é
                    `Declined`. Pontuações entre os dois limiares produzem `In
                    Review`.
                aml_name_weight:
                  type: integer
                  minimum: 0
                  maximum: 100
                  default: 60
                  description: >-
                    Ponderação da semelhança do nome na pontuação de
                    correspondência por ocorrência. O somatório das três
                    ponderações tem de ser exatamente 100 (caso contrário,
                    `400`).
                aml_dob_weight:
                  type: integer
                  minimum: 0
                  maximum: 100
                  default: 25
                  description: >-
                    Ponderação da data de nascimento na pontuação de
                    correspondência por ocorrência.
                aml_country_weight:
                  type: integer
                  minimum: 0
                  maximum: 100
                  default: 15
                  description: >-
                    Ponderação do país/nacionalidade na pontuação de
                    correspondência por ocorrência.
                aml_match_score_threshold:
                  type: integer
                  minimum: 0
                  maximum: 100
                  default: 93
                  description: >-
                    Ponto de corte por ocorrência: as ocorrências com
                    `match_score` abaixo deste valor são `False Positive`
                    (excluídas da avaliação de risco); no valor ou acima são
                    possíveis correspondências `Unreviewed`.
                include_adverse_media:
                  type: boolean
                  default: false
                  description: >-
                    Pesquisar também em notícias por cobertura negativa.
                    Adiciona até ~30 s de latência enquanto os resultados são
                    recolhidos — utilize um tempo limite de cliente de ≥60 s.
                include_ongoing_monitoring:
                  type: boolean
                  default: false
                  description: >-
                    Continuar a fazer a nova triagem deste perfil e enviar
                    alterações via webhook. Requer `save_api_request=true` (caso
                    contrário, `400`).
                save_api_request:
                  type: boolean
                  default: true
                  description: >-
                    Persistir a triagem como uma sessão (visibilidade na
                    consola, endpoint de decisão, webhooks, revisão de
                    ocorrências). Defina como `false` para uma verificação sem
                    estado.
                vendor_data:
                  type: string
                  description: >-
                    O seu identificador para o utilizador submetido a triagem;
                    devolvido e armazenado com a sessão.
                metadata:
                  type: object
                  nullable: true
                  description: >-
                    JSON de formato livre armazenado com o pedido e devolvido na
                    resposta.
                sandbox_scenario:
                  type: string
                  description: >-
                    Slug de cenário exclusivo de sandbox. Apenas aceite quando a
                    chave de API pertence a uma aplicação em modo sandbox;
                    rejeitado em aplicações em produção. Uma triagem autónoma
                    não tem sessão para armar, pelo que o slug é incluído no
                    próprio pedido de triagem: `decline_aml_hit` devolve uma
                    correspondência com formato de produção e define a triagem
                    como `Declined`, `review_aml_possible_match` define-a como
                    `In Review`, e um cenário que não arme qualquer resultado de
                    AML mantém a triagem limpa. Consulte o catálogo de cenários
                    em GET /v1/sandbox/scenarios/ ou em [Sandbox & Test
                    Data](/pt/integration/sandbox-testing).
                  example: decline_aml_hit
            example:
              full_name: Antonio Ejemplo Modelo
              entity_type: person
              date_of_birth: '1972-02-29'
              nationality: ES
              include_adverse_media: false
              vendor_data: user-1234
      responses:
        '200':
          description: >-
            Triagem concluída. `aml.status` reflete os seus limiares; cada
            resultado igual ou superior ao piso interno de inclusão é listado em
            `aml.hits` com o seu `match_score` de identidade, o `risk_score` da
            entidade e um `score_breakdown` que explica a correspondência.
          content:
            application/json:
              schema:
                type: object
                properties:
                  request_id:
                    type: string
                    format: uuid
                    description: >-
                      ID da sessão persistida quando `save_api_request=true`
                      (utilizável com `GET /v3/session/{sessionId}/decision/`);
                      caso contrário, um UUID de correlação transitório.
                  aml:
                    type: object
                    properties:
                      status:
                        type: string
                        enum:
                          - Approved
                          - In Review
                          - Declined
                        description: >-
                          `Declined` quando `score` >
                          `aml_score_review_threshold`; `In Review` quando
                          `score` > `aml_score_approve_threshold`; caso
                          contrário, `Approved` (incluindo quando não existe
                          pontuação disponível).
                      total_hits:
                        type: integer
                        description: Número de entradas em `hits`.
                      entity_type:
                        type: string
                        enum:
                          - person
                          - company
                        description: Eco do tipo de entidade submetida a triagem.
                      hits:
                        type: array
                        items:
                          type: object
                          description: >-
                            Uma ocorrência de triagem. O `match_score` (0–100)
                            mede a confiança na identidade — as ocorrências
                            abaixo de `aml_match_score_threshold` são marcadas
                            com `review_status: "False Positive"` e excluídas da
                            avaliação de risco; as ocorrências iguais ou
                            superiores a esse limiar são possíveis
                            correspondências `"Unreviewed"`. O `risk_score`
                            (0–100) mede o nível de risco da entidade
                            correspondente e determina o `aml.score` de nível
                            superior.
                          properties:
                            id:
                              type: string
                              nullable: true
                              description: >-
                                Identificador estável da Didit para o resultado
                                (hit): `hit_` seguido de 24 carateres
                                hexadecimais. A mesma entidade correspondente
                                mantém o mesmo `id` quando o sujeito é novamente
                                analisado. Transmita-o como `hit_id` para os
                                endpoints de revisão de resultados AML.
                            url:
                              type: string
                              nullable: true
                              description: >-
                                URL de origem para a entidade correspondente,
                                quando disponível.
                            match:
                              type: boolean
                              nullable: true
                              description: >-
                                Flag legada de correspondência exata. Prefira
                                `match_score` + `review_status`.
                            score:
                              type: number
                              nullable: true
                              description: >-
                                OBSOLETO: pontuação de correspondência ponderada
                                no intervalo de 0–1. Utilize `match_score` em
                                alternativa.
                            match_score:
                              type: number
                              nullable: true
                              description: >-
                                Confiança da identidade (0–100). Comparada com
                                `aml_match_score_threshold` para separar Falsos
                                Positivos de Correspondências Possíveis.
                            risk_score:
                              type: number
                              nullable: true
                              description: >-
                                Pontuação de risco da entidade (0–100). O
                                `risk_score` mais elevado entre os resultados
                                que não sejam falsos positivos torna-se o
                                `aml.score` de nível superior.
                            target:
                              type: boolean
                              nullable: true
                            caption:
                              type: string
                              nullable: true
                              description: Nome de apresentação da entidade correspondente.
                            datasets:
                              type: array
                              nullable: true
                              items:
                                type: string
                                enum:
                                  - PEP
                                  - PEP Level 1
                                  - PEP Level 2
                                  - PEP Level 3
                                  - PEP Level 4
                                  - Sanctions
                                  - Adverse Media
                                  - Warnings and Regulatory Enforcement
                                  - Fitness and Probity
                                  - SIP
                                  - SIE
                                  - Insolvency
                                  - Other Lists
                              description: >-
                                Categorias de risco sob as quais a entidade está
                                listada: `PEP` (com o respetivo nível, `PEP
                                Level 1` a `PEP Level 4`), `Sanctions`, `Adverse
                                Media`, `Warnings and Regulatory Enforcement`,
                                `Fitness and Probity`, `SIP`, `SIE` ou
                                `Insolvency`. `Other Lists` quando a fonte da
                                entidade não indica nenhuma destas categorias.
                            features:
                              type: object
                              nullable: true
                            properties:
                              type: object
                              nullable: true
                              description: >-
                                Perfil da entidade: `name`, `alias`, `notes`,
                                `gender`, `birthDate`, `birthPlace`,
                                `nationality`, `position` e outras matrizes
                                biográficas (cada uma anulável).
                            rca_name:
                              type: string
                              nullable: true
                              description: >-
                                Nome do associado próximo relacionado que deu
                                origem à correspondência com a entidade, quando
                                o resultado for um RCA.
                            pep_matches:
                              type: array
                              description: >-
                                Entradas da lista PEP que fundamentam esta
                                correspondência.
                              items:
                                type: object
                                properties:
                                  list_name:
                                    type: string
                                  publisher:
                                    type: string
                                  source_url:
                                    type: string
                                  description:
                                    type: string
                                  matched_name:
                                    type: string
                                  pep_position:
                                    type: string
                                  date_of_birth:
                                    type: string
                                  place_of_birth:
                                    type: string
                                  aliases:
                                    type: array
                                    items:
                                      type: string
                                  education:
                                    type: array
                                    items:
                                      type: string
                                  other_sources:
                                    type: array
                                    items:
                                      type: string
                            sanction_matches:
                              type: array
                              items:
                                type: object
                              description: >-
                                Entradas da lista de sanções que fundamentam
                                esta correspondência (o mesmo formato de lista
                                de suporte que `pep_matches`, acrescido de
                                campos específicos de sanções).
                            warning_matches:
                              type: array
                              items:
                                type: object
                              description: >-
                                Entradas de aviso/lista de vigilância que
                                fundamentam este alerta.
                            adverse_media_matches:
                              type: array
                              description: >-
                                Artigos de notícias adversas. Preenchido apenas
                                quando `include_adverse_media=true`.
                              items:
                                type: object
                                properties:
                                  headline:
                                    type: string
                                  summary:
                                    type: string
                                  sentiment:
                                    type: string
                                  sentiment_score:
                                    type: number
                                  source_url:
                                    type: string
                                  thumbnail:
                                    type: string
                                    nullable: true
                                  country:
                                    type: string
                                    nullable: true
                                  author_name:
                                    type: string
                                    nullable: true
                                  publication_date:
                                    type: string
                                    nullable: true
                                  adverse_keywords:
                                    type: array
                                    items:
                                      type: string
                                  other_sources:
                                    type: array
                                    items:
                                      type: string
                            adverse_media_details:
                              type: object
                              nullable: true
                              description: >-
                                Sentimento agregado de notícias adversas para a
                                entidade (`sentiment`, `sentiment_score`, mapa
                                de frequência de `adverse_keywords`). Preenchido
                                apenas quando `include_adverse_media=true`.
                            first_seen:
                              type: string
                              format: date-time
                              nullable: true
                              description: >-
                                Quando a entidade apareceu pela primeira vez nos
                                conjuntos de dados.
                            last_seen:
                              type: string
                              format: date-time
                              nullable: true
                              description: >-
                                Atualização mais recente do conjunto de dados
                                que incluiu a entidade.
                            linked_entities:
                              type: array
                              description: >-
                                Relações conhecidas da entidade correspondente
                                (família, associados, empresas).
                              items:
                                type: object
                                properties:
                                  name:
                                    type: array
                                    items:
                                      type: string
                                  active:
                                    type: array
                                    items:
                                      type: string
                                  status:
                                    type: array
                                    items:
                                      type: string
                                  details:
                                    type: array
                                    items:
                                      type: string
                                  relation:
                                    type: array
                                    items:
                                      type: string
                            risk_view:
                              type: object
                              nullable: true
                              description: >-
                                Discriminação de risco por dimensão (`crimes`,
                                `countries`, `categories`, `custom_list`), cada
                                uma com `score`, `weightage`, `risk_level` e um
                                mapa `risk_scores`.
                            additional_information:
                              type: object
                              nullable: true
                              description: >-
                                Contexto adicional em formato livre, por
                                exemplo, um array `flag_summary` a explicar por
                                que motivo a entidade foi sinalizada.
                            review_status:
                              type: string
                              nullable: true
                              enum:
                                - False Positive
                                - Unreviewed
                                - Confirmed Match
                                - Inconclusive
                              description: >-
                                `False Positive` — `match_score` abaixo de
                                `aml_match_score_threshold`, excluído da
                                avaliação de risco. `Unreviewed` — possível
                                correspondência a aguardar revisão. `Confirmed
                                Match` / `Inconclusive` — definido manualmente
                                por um revisor (através da Business Console) em
                                sessões guardadas; essa capacidade de revisão
                                não faz parte desta especificação.
                            score_breakdown:
                              type: object
                              nullable: true
                              description: >-
                                Como `match_score` foi calculado. Nome, data de
                                nascimento e país contribuem cada um com
                                `<component>_score` ×
                                `<component>_weight_normalized` pontos; os pesos
                                são renormalizados quando um componente está em
                                falta nos dados analisados. O número do
                                documento não tem peso — funciona como uma
                                'chave mestra': `MATCH` define a pontuação como
                                100, `NEUTRAL` mantém-na inalterada,
                                `HARD_MISMATCH` aplica uma penalização.
                              properties:
                                name_score:
                                  type: integer
                                  nullable: true
                                  description: Semelhança de nome em bruto (0–100).
                                name_weight:
                                  type: integer
                                  nullable: true
                                  description: >-
                                    Ponderação de nome configurada
                                    (`aml_name_weight`).
                                name_weight_normalized:
                                  type: number
                                  nullable: true
                                  description: Peso do nome após renormalização (0–100).
                                name_contribution:
                                  type: number
                                  nullable: true
                                  description: >-
                                    Pontos com que o nome contribuiu para
                                    `total_score`.
                                dob_score:
                                  type: integer
                                  nullable: true
                                  description: >-
                                    Pontuação da data de nascimento como uma
                                    percentagem do seu peso (−100 a 100).
                                dob_weight:
                                  type: integer
                                  nullable: true
                                  description: >-
                                    Ponderação de data de nascimento configurada
                                    (`aml_dob_weight`).
                                dob_weight_normalized:
                                  type: number
                                  nullable: true
                                  description: >-
                                    Peso da data de nascimento após
                                    renormalização (0–100).
                                dob_contribution:
                                  type: number
                                  nullable: true
                                  description: >-
                                    Pontos com que a data de nascimento
                                    contribuiu para `total_score`.
                                country_score:
                                  type: integer
                                  nullable: true
                                  description: >-
                                    Pontuação do país como uma percentagem do
                                    seu peso (−100 a 100).
                                country_weight:
                                  type: integer
                                  nullable: true
                                  description: >-
                                    Ponderação de país configurada
                                    (`aml_country_weight`).
                                country_weight_normalized:
                                  type: number
                                  nullable: true
                                  description: Peso do país após renormalização (0–100).
                                country_contribution:
                                  type: number
                                  nullable: true
                                  description: >-
                                    Pontos com que o país contribuiu para
                                    `total_score`.
                                document_number_match_type:
                                  type: string
                                  nullable: true
                                  enum:
                                    - MATCH
                                    - NEUTRAL
                                    - HARD_MISMATCH
                                  description: >-
                                    Resultado de referência («golden-key») para
                                    a comparação do número do documento.
                                document_number_effect:
                                  type: string
                                  nullable: true
                                  description: >-
                                    Descrição legível do efeito do número do
                                    documento.
                                total_score:
                                  type: integer
                                  nullable: true
                                  description: >-
                                    Pontuação de correspondência ponderada final
                                    (0–100) — reflete `match_score`.
                      score:
                        type: number
                        nullable: true
                        description: >-
                          Pontuação de risco AML global (0–100): o `risk_score`
                          mais elevado entre as correspondências que não são
                          falsos positivos. Determina o `status` através dos
                          dois limiares.
                      screened_data:
                        type: object
                        description: >-
                          Eco do que foi submetido a triagem: `full_name`,
                          `date_of_birth`, `nationality`, `document_number`
                          (campos ausentes são `null`).
                        properties:
                          full_name:
                            type: string
                          date_of_birth:
                            type: string
                            nullable: true
                          nationality:
                            type: string
                            nullable: true
                          document_number:
                            type: string
                            nullable: true
                      warnings:
                        type: array
                        items:
                          type: object
                          properties:
                            feature:
                              type: string
                              description: Funcionalidade que gerou o aviso.
                            risk:
                              type: string
                              description: Identificador de risco legível por máquina.
                            additional_data:
                              type: object
                              nullable: true
                              description: >-
                                Contexto adicional para o aviso, quando
                                disponível.
                            log_type:
                              type: string
                              description: >-
                                `warning`, `information` ou `error` — como o
                                risco afetou o resultado.
                            short_description:
                              type: string
                              description: Resumo legível por humanos numa única linha.
                            long_description:
                              type: string
                              description: Explicação completa e legível por humanos.
                        description: >-
                          Contém um aviso `POSSIBLE_MATCH_FOUND` sempre que
                          `score` não for zero e ≥ `aml_score_approve_threshold`
                          (uma pontuação exatamente de 0 nunca gera aviso);
                          vazio caso contrário.
                  vendor_data:
                    type: string
                    nullable: true
                    description: Eco do `vendor_data` que enviou.
                  metadata:
                    type: object
                    nullable: true
                    description: Eco do objeto `metadata` que enviou.
                  created_at:
                    type: string
                    format: date-time
              examples:
                No hits (Approved):
                  summary: Triagem limpa — zero correspondências
                  value:
                    request_id: d27c5509-7a66-45a9-b05e-d69d9f4c336a
                    aml:
                      status: Approved
                      total_hits: 0
                      entity_type: person
                      hits: []
                      score: 0
                      screened_data:
                        full_name: Maximilian Mustermann-Doe
                        date_of_birth: '1992-03-14'
                        nationality: DE
                        document_number: null
                      warnings: []
                    vendor_data: user-1234
                    metadata:
                      internal_ref: abc-123
                    created_at: '2026-06-11T10:21:07.013938+00:00'
                PEP hit (Approved — risk below approve threshold):
                  summary: >-
                    Uma possível correspondência de PEP; a pontuação de risco 73
                    mantém-se abaixo do limiar de aprovação predefinido de 80
                  value:
                    request_id: 0b7e7a3e-65a1-4f3d-9c7a-1de2f9a40111
                    aml:
                      status: Approved
                      total_hits: 1
                      entity_type: person
                      hits:
                        - id: hit_7c1e9a40b2d35f86e0a4c912
                          url: https://news.example.org/articles/sample
                          match: false
                          score: 0.93
                          match_score: 93
                          risk_score: 73
                          target: null
                          caption: Antonio Ejemplo Modelo
                          datasets:
                            - PEP Level 1
                            - PEP
                          features: null
                          rca_name: ''
                          first_seen: '2026-01-07T00:00:00'
                          last_seen: '2026-01-07T00:00:00'
                          review_status: Unreviewed
                          properties:
                            name:
                              - Antonio Ejemplo Modelo
                              - Antonio Ejemplo
                            alias:
                              - Antonio Ejemplo Modelo
                              - Ejemplo Modelo, Pedro
                            notes:
                              - Prime Minister of Spain
                            gender:
                              - male
                            birthDate:
                              - '1972-02-29'
                            birthPlace:
                              - Madrid, Spain
                            nationality: null
                            position: null
                          risk_view:
                            crimes:
                              score: 0
                              weightage: 20
                              risk_level: Low
                              risk_scores: {}
                            countries:
                              score: 9.64
                              weightage: 30
                              risk_level: Low
                              risk_scores:
                                Spain: 25.71
                            categories:
                              score: 62.5
                              weightage: 50
                              risk_level: High
                              risk_scores:
                                PEP: 100
                                PEP Level 1: 100
                            custom_list: {}
                          score_breakdown:
                            name_score: 89
                            name_weight: 60
                            name_weight_normalized: 60
                            name_contribution: 53.4
                            dob_score: 100
                            dob_weight: 25
                            dob_weight_normalized: 25
                            dob_contribution: 25
                            country_score: 100
                            country_weight: 15
                            country_weight_normalized: 15
                            country_contribution: 15
                            document_number_match_type: NEUTRAL
                            document_number_effect: No document number provided for screening
                            total_score: 93
                          pep_matches:
                            - aliases: []
                              education: []
                              list_name: Presidency of the Government of Spain
                              publisher: Presidency of the Government of Spain
                              source_url: https://news.example.org/articles/sample
                              description: >-
                                The Presidency of the Government is the central
                                institutional body in Spain that supports the
                                Prime Minister and coordinates the general
                                action of the central government.
                              matched_name: Antonio Ejemplo Modelo
                              pep_position: ''
                              date_of_birth: '1972-02-29'
                              other_sources: []
                              place_of_birth: Madrid, Spain
                          sanction_matches: []
                          warning_matches: []
                          adverse_media_matches: []
                          adverse_media_details: null
                          linked_entities:
                            - name:
                                - Maria Begona Gomez Fernandez
                              active: []
                              status: []
                              details: []
                              relation:
                                - spouse
                          additional_information:
                            flag_summary:
                              - >-
                                Antonio Ejemplo Modelo has been flagged as a
                                Level 1 Politically Exposed Person (PEP) from
                                Spain, serving as the President of the
                                Government of Spain.
                      score: 73
                      screened_data:
                        full_name: Pedro Sanchez Perez-Castejon
                        date_of_birth: '1972-02-29'
                        nationality: ES
                        document_number: null
                      warnings: []
                    vendor_data: null
                    metadata: null
                    created_at: '2026-06-11T10:23:44.812000+00:00'
        '400':
          description: >-
            Erro de validação. Problemas ao nível do campo devolvem o envelope
            padrão do DRF (um array de mensagens por campo afetado); regras
            entre campos (soma dos pesos, ordenação dos limiares, monitorização
            sem guardar) devolvem `{"error": [...]}`.
          content:
            application/json:
              examples:
                Missing full_name:
                  summary: '`full_name` é o único campo obrigatório'
                  value:
                    full_name:
                      - This field is required.
                Short full_name:
                  summary: '`full_name` tem de ter pelo menos 2 carateres'
                  value:
                    full_name:
                      - Ensure this field has at least 2 characters.
                Invalid nationality:
                  summary: '`nationality` deve ser ISO 3166-1 alpha-2'
                  value:
                    nationality:
                      - Invalid ISO 3166-1 alpha-2 country code.
                Weights do not sum to 100:
                  summary: >-
                    `aml_name_weight` + `aml_dob_weight` + `aml_country_weight`
                    ≠ 100
                  value:
                    error:
                      - >-
                        AML weights must sum to 100. Current sum: 90 (name: 50,
                        dob: 25, country: 15)
                Thresholds out of order:
                  summary: Limiar de aprovação superior ao limiar de revisão
                  value:
                    error:
                      - >-
                        Approve threshold (90.0) cannot be greater than review
                        threshold (80.0)
                Monitoring without saving:
                  summary: >-
                    `include_ongoing_monitoring=true` com
                    `save_api_request=false`
                  value:
                    error:
                      - >-
                        Ongoing monitoring can only be enabled when the API
                        request is saved.
        '403':
          description: >-
            Permissão negada. Devolvido quando o cabeçalho `x-api-key` está em
            falta e também quando o saldo da organização que efetua a chamada
            não consegue cobrir a chamada; uma chave incorreta, revogada ou
            expirada devolve `401`. Uma chave em falta devolve `403` com
            `{"detail": ...}`; uma chave incorreta, revogada ou expirada devolve
            `401`. A insuficiência de créditos devolve `403` com `{"error":
            ...}` antes de qualquer triagem ou chamada ao fornecedor ocorrer.
          content:
            application/json:
              examples:
                Missing or invalid API key:
                  summary: Sem cabeçalho `x-api-key`, ou a chave é inválida/revogada
                  value:
                    detail: You do not have permission to perform this action.
                Not enough credits:
                  summary: O saldo da organização não cobre a chamada
                  value:
                    error: >-
                      You don't have enough credits to perform this request.
                      Please top up at https://business.didit.me
        '429':
          description: >-
            Limite de pedidos excedido. Os endpoints POST/PATCH/DELETE partilham
            um orçamento de 300 pedidos de escrita por minuto por chave de API
            (as criações de transações e a ingestão de eventos têm um orçamento
            separado de 600). A resposta inclui os cabeçalhos
            `X-RateLimit-Limit`, `X-RateLimit-Remaining`, `X-RateLimit-Reset` e
            `Retry-After`.
          content:
            application/json:
              examples:
                Write rate limit exceeded:
                  summary: Mais de 300 pedidos de escrita no minuto atual
                  value:
                    detail: >-
                      Write request rate limit exceeded. You can make up to 300
                      requests per minute.
              schema:
                type: object
                properties:
                  detail:
                    type: string
      security:
        - ApiKeyAuth: []
      x-codeSamples:
        - lang: curl
          label: curl
          source: |-
            curl -X POST https://verification.didit.me/v3/aml/ \
              -H 'x-api-key: YOUR_API_KEY' \
              -H 'Content-Type: application/json' \
              -H 'Idempotency-Key: aml-user-1234-2026-08-20' \
              -d '{
                "full_name": "Antonio Ejemplo Modelo",
                "entity_type": "person",
                "date_of_birth": "1972-02-29",
                "nationality": "ES",
                "include_adverse_media": false,
                "vendor_data": "user-1234"
              }'
        - lang: python
          label: Python
          source: |-
            from didit import Didit

            # Reads DIDIT_API_KEY.
            client = Didit()

            result = client.aml.screen(
                full_name="Antonio Ejemplo Modelo",
                entity_type="person",
                date_of_birth="1972-02-29",
                nationality="ES",
                include_adverse_media=False,
                vendor_data="user-1234",
            )
            print(result)
        - lang: javascript
          label: Node.js
          source: |-
            import Didit from "@didit-protocol/sdk-node";

            // Reads DIDIT_API_KEY.
            const didit = new Didit();

            const result = await didit.aml.screen({
              full_name: "Antonio Ejemplo Modelo",
              entity_type: "person",
              date_of_birth: "1972-02-29",
              nationality: "ES",
              include_adverse_media: false,
              vendor_data: "user-1234",
            });
            console.log(result);
        - lang: go
          label: Go
          source: "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.AML.Screen(ctx, didit.AMLScreenParams{\n\tFullName:            \"Antonio Ejemplo Modelo\",\n\tEntityType:          didit.Some(didit.AMLScreenParamsEntityType(\"person\")),\n\tDateOfBirth:         didit.String(\"1972-02-29\"),\n\tNationality:         didit.String(\"ES\"),\n\tIncludeAdverseMedia: didit.Bool(false),\n\tVendorData:          didit.String(\"user-1234\"),\n})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
        - lang: java
          label: Java
          source: |-
            import java.time.LocalDate;
            import me.didit.Didit;
            import me.didit.types.AmlScreenParams;

            // Reads DIDIT_API_KEY.
            Didit client = new Didit();

            var result = client.aml().screen(AmlScreenParams.builder()
                    .fullName("Antonio Ejemplo Modelo")
                    .entityType(AmlScreenParams.EntityType.of("person"))
                    .dateOfBirth(LocalDate.parse("1972-02-29"))
                    .nationality("ES")
                    .includeAdverseMedia(false)
                    .vendorData("user-1234")
                    .build());
            System.out.println(result);
        - lang: php
          label: PHP
          source: |-
            <?php

            require 'vendor/autoload.php';

            use Didit\DiditClient;

            // Reads DIDIT_API_KEY.
            $didit = new DiditClient();

            $result = $didit->aml->screen([
                'full_name' => 'Antonio Ejemplo Modelo',
                'entity_type' => 'person',
                'date_of_birth' => '1972-02-29',
                'nationality' => 'ES',
                'include_adverse_media' => false,
                'vendor_data' => 'user-1234',
            ]);
            print_r($result->toArray());
        - lang: ruby
          label: Ruby
          source: |-
            require "didit"

            # Reads DIDIT_API_KEY.
            didit = Didit::Client.new

            result = didit.aml.screen(
              full_name: "Antonio Ejemplo Modelo",
              entity_type: "person",
              date_of_birth: "1972-02-29",
              nationality: "ES",
              include_adverse_media: false,
              vendor_data: "user-1234"
            )
            puts result.to_h
        - lang: csharp
          label: .NET
          source: |-
            using System;
            using System.Text.Json;
            using Didit;

            // Reads DIDIT_API_KEY.
            using var client = new DiditClient();

            var result = await client.Aml.ScreenAsync(new AmlScreenParams
            {
                FullName = "Antonio Ejemplo Modelo",
                EntityType = new AmlScreenParamsEntityType("person"),
                DateOfBirth = "1972-02-29",
                Nationality = "ES",
                IncludeAdverseMedia = false,
                VendorData = "user-1234",
            });
            Console.WriteLine(JsonSerializer.Serialize(result));
components:
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: x-api-key
      description: >-
        A chave de API da sua aplicação, a partir de Programadores -> Chaves de
        API na Business Console. A chave principal tem acesso total. Uma chave
        nomeada pode ter o âmbito definido: nenhum, leitura ou escrita por
        recurso, limitada a alguns fluxos ou a sessões aprovadas, a uma lista de
        endereços IP e a uma data de validade. 401 significa que a chave está
        incorreta, revogada ou expirada; 403 significa que nenhuma chave foi
        enviada, que a chave não tem acesso a este recurso ou ação, ou que o
        pedido veio de um endereço fora da sua lista de IP; 404 numa rota de
        sessão significa que a sessão está fora dos fluxos ou estados da chave.
        Uma chave sem acesso a multimédia recebe URLs de imagens, vídeos e PDFs
        como nulos, e uma chave sem permissão de escrita em sessões recebe
        ligações de sessão e tokens como nulos. Consulte
        https://docs.didit.me/console/api-keys.

````

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