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

# AML-скрининг API: санкции, PEP и списки наблюдения

> Didit: AML-скрининг в реальном времени по 1,300+ спискам. Санкции, PEP, негативные СМИ. Два скора риска, $0.20 за проверку, без месячного минимума.



## OpenAPI

````yaml ru/openapi-25.json POST /v3/aml/
openapi: 3.0.0
info:
  version: 3.0.0
  title: Didit Verification API
  description: >-
    API верификации личности. Аутентификация выполняется с помощью заголовка
    x-api-key.
servers:
  - url: https://verification.didit.me
security: []
tags: []
paths:
  /v3/aml/:
    post:
      tags:
        - Standalone APIs
      summary: AML-скрининг (автономный)
      description: >-
        Выполняйте скрининг физического лица или компании по базам данных
        политически значимых лиц (PEP), санкций, списков предупреждений и
        наблюдения, а также негативных публикаций в СМИ за один вызов.


        **Модель двух оценок.** Каждое совпадение содержит `match_score` (0–100,
        уверенность совпадения личности) и `risk_score` (0–100, риск сущности).
        Совпадения, у которых `match_score` ниже `aml_match_score_threshold` (по
        умолчанию **93**), получают метку `review_status: "False Positive"` и
        игнорируются при расчёте риска; максимальный `risk_score` среди
        оставшихся совпадений становится значением `aml.score`. Итоговый
        `aml.status` рассчитывается по вашим порогам: `score` >
        `aml_score_review_threshold` (по умолчанию **100**) → `Declined`;
        `score` > `aml_score_approve_threshold` (по умолчанию **80**) → `In
        Review`; в остальных случаях: `Approved`. Если `score` не равен нулю и ≥
        порога одобрения, добавляется предупреждение `POSSIBLE_MATCH_FOUND` (при
        оценке, в точности равной 0, предупреждение не добавляется).


        **Веса оценки совпадения.** Сумма `aml_name_weight` + `aml_dob_weight` +
        `aml_country_weight` должна составлять ровно 100 (по умолчанию
        60/25/15). Отсутствующие в запросе компоненты перенормируются;
        совпадающий `document_number` действует как «золотой ключ»,
        переопределяющий `match_score` на 100.


        **Задержка.** Обычный скрининг обычно выполняется за несколько секунд.
        При `include_adverse_media=true` API ожидает обогащения данными о
        негативных публикациях в СМИ (начальная пауза ~5 с плюс до ~25 с
        опроса), поэтому настройте клиентский таймаут **не менее 60 секунд**.


        **Сохранение данных.** Параметр `save_api_request` по умолчанию равен
        **true**: скрининг сохраняется как сессия (`request_id` работает с `GET
        /v3/session/{sessionId}/decision/`), отображается в консоли,
        отправляется webhook `status.updated`, а статусы проверки совпадений
        можно обновить позже. При `save_api_request=false` ничего не
        сохраняется, и `request_id` является временным идентификатором
        корреляции. При `include_ongoing_monitoring=true` продолжается
        постоянный повторный скрининг профиля, что требует
        `save_api_request=true` (иначе возвращается ошибка `400`).


        **Идемпотентность.** Передавайте заголовок `Idempotency-Key` при
        повторных попытках после таймаута или временной ошибки. Ключ привязан к
        вашему приложению и точному телу запроса. Первый успешно завершённый
        запрос сохраняет свой ответ; последующие идентичные повторные попытки
        возвращают тот же ответ без запуска и тарификации нового AML-скрининга.
        Если исходный запрос всё ещё выполняется, повторите попытку позже с тем
        же ключом. Если тот же ключ используется с другим телом запроса, API
        возвращает `409`.


        **Биллинг.** Один кредит AML API списывается после первого успешного
        скрининга. За повторно воспроизведённые идемпотентные ответы средства
        повторно не взимаются; при недостаточном балансе возвращается `403` до
        запуска нового скрининга.


        **Песочница.** Ключи от приложений в песочнице полностью пропускают
        скрининг и биллинг, возвращая тестовый результат: `Approved` без
        совпадений, если не передан параметр `sandbox_scenario`. Параметр
        `save_api_request` работает так же, как и для продакшн-ключей, поэтому
        сохранённый скрининг из песочницы можно получить через `GET
        /v3/session/{sessionId}/decision/` и `GET
        /v3/session/{sessionId}/generate-pdf/`.
      operationId: post_v3aml
      parameters:
        - name: Idempotency-Key
          in: header
          required: false
          description: >-
            Необязательный ключ защиты от повторных попыток длиной до 255
            символов. Повторное использование того же ключа с тем же телом
            запроса возвращает исходный ответ без запуска и тарификации второго
            скрининга. Повторное использование ключа с другим телом возвращает
            `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: >-
                    Полное имя человека или наименование компании для скрининга.
                    Минимум **2 символа** - минимальный порог самого провайдера
                    скрининга. Более короткое или пустое имя вернёт `400` по
                    этому полю до запуска скрининга, поэтому списания средств не
                    произойдёт.
                  example: Antonio Ejemplo Modelo
                entity_type:
                  type: string
                  enum:
                    - person
                    - company
                  default: person
                  description: Тип субъекта для скрининга. По умолчанию `person`.
                date_of_birth:
                  type: string
                  format: date
                  description: >-
                    Дата рождения (физические лица) или дата регистрации
                    (компании), `YYYY-MM-DD`. Повышает точность совпадения за
                    счёт веса даты рождения.
                  example: '1972-02-29'
                nationality:
                  type: string
                  description: >-
                    Двухбуквенный код страны ISO 3166-1 **alpha-2** (например,
                    `ES`). Недопустимые коды возвращают `400`. Повышает точность
                    совпадения за счет веса страны.
                  example: ES
                document_number:
                  type: string
                  description: >-
                    Номер документа, удостоверяющего личность. Не имеет весового
                    коэффициента и выступает в качестве «золотого ключа»: точное
                    совпадение заменяет `match_score` совпадения на 100, а явное
                    несовпадение снижает его. Отправляется провайдеру скрининга
                    в качестве поискового фильтра, только если содержит **2-50
                    символов**; значение вне этого диапазона принимается и
                    сохраняется, а скрининг всё равно выполняется и
                    тарифицируется, просто без фильтрации по номеру документа.
                aml_score_approve_threshold:
                  type: number
                  minimum: 0
                  maximum: 100
                  default: 80
                  description: >-
                    Порог оценки риска, на уровне которого или ниже результат
                    переходит в `Approved`. Должен быть ≤
                    `aml_score_review_threshold` (иначе `400`).
                aml_score_review_threshold:
                  type: number
                  minimum: 0
                  maximum: 100
                  default: 100
                  description: >-
                    Порог оценки риска, выше которого результат переходит в
                    `Declined`. Оценки между двумя порогами приводят к `In
                    Review`.
                aml_name_weight:
                  type: integer
                  minimum: 0
                  maximum: 100
                  default: 60
                  description: >-
                    Вес схожести имени в оценке совпадения для каждого
                    совпадения. Сумма трёх весов должна составлять ровно 100
                    (иначе `400`).
                aml_dob_weight:
                  type: integer
                  minimum: 0
                  maximum: 100
                  default: 25
                  description: >-
                    Вес даты рождения в оценке совпадения для каждого
                    совпадения.
                aml_country_weight:
                  type: integer
                  minimum: 0
                  maximum: 100
                  default: 15
                  description: >-
                    Вес страны/гражданства в оценке совпадения для каждого
                    совпадения.
                aml_match_score_threshold:
                  type: integer
                  minimum: 0
                  maximum: 100
                  default: 93
                  description: >-
                    Порог отсечения для совпадений: совпадения с `match_score`
                    ниже этого значения считаются `False Positive` (исключаются
                    из оценки риска); со значением равным или выше считаются
                    возможными совпадениями со статусом `Unreviewed`.
                include_adverse_media:
                  type: boolean
                  default: false
                  description: >-
                    Также искать негативные публикации в СМИ. Добавляет до ~30 с
                    задержки во время сбора результатов — используйте таймаут
                    клиента ≥60 с.
                include_ongoing_monitoring:
                  type: boolean
                  default: false
                  description: >-
                    Продолжать повторный скрининг этого профиля и отправлять
                    изменения через webhook. Требует `save_api_request=true`
                    (иначе `400`).
                save_api_request:
                  type: boolean
                  default: true
                  description: >-
                    Сохранять скрининг как сессию (отображение в консоли,
                    endpoint решений, webhook, проверка срабатываний). Укажите
                    `false` для проверки без сохранения состояния.
                vendor_data:
                  type: string
                  description: >-
                    Ваш идентификатор пользователя, прошедшего скрининг;
                    возвращается в ответе и сохраняется вместе с сессией.
                metadata:
                  type: object
                  nullable: true
                  description: >-
                    JSON в свободной форме, сохраняемый с запросом и
                    возвращаемый в ответе.
                sandbox_scenario:
                  type: string
                  description: >-
                    Слаг сценария только для песочницы. Принимается, только если
                    API-ключ принадлежит приложению в режиме песочницы;
                    отклоняется для приложений в продакшн-среде. У отдельного
                    скрининга нет сессии для инициализации, поэтому слаг
                    указывается непосредственно в запросе на скрининг:
                    `decline_aml_hit` возвращает одно совпадение формата
                    продакшна и переводит скрининг в статус `Declined`,
                    `review_aml_possible_match` переводит его в статус `In
                    Review`, а сценарий, не задающий результат AML, оставляет
                    скрининг чистым. См. каталог сценариев в GET
                    /v1/sandbox/scenarios/ или [Песочница и тестовые
                    данные](/ru/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: >-
            Скрининг завершён. `aml.status` отражает ваши пороги; каждое
            совпадение на уровне или выше внутреннего порога включения
            перечислено в `aml.hits` вместе с оценкой совпадения личности
            `match_score`, оценкой риска сущности `risk_score` и объектом
            `score_breakdown`, поясняющим совпадение.
          content:
            application/json:
              schema:
                type: object
                properties:
                  request_id:
                    type: string
                    format: uuid
                    description: >-
                      Идентификатор сохраненной сессии при
                      `save_api_request=true` (доступен для использования с `GET
                      /v3/session/{sessionId}/decision/`); в противном случае
                      это временный корреляционный UUID.
                  aml:
                    type: object
                    properties:
                      status:
                        type: string
                        enum:
                          - Approved
                          - In Review
                          - Declined
                        description: >-
                          `Declined`, если `score` >
                          `aml_score_review_threshold`; `In Review`, если
                          `score` > `aml_score_approve_threshold`; в противном
                          случае `Approved` (в том числе когда оценка
                          недоступна).
                      total_hits:
                        type: integer
                        description: Количество записей в `hits`.
                      entity_type:
                        type: string
                        enum:
                          - person
                          - company
                        description: Эхо типа проверенной сущности.
                      hits:
                        type: array
                        items:
                          type: object
                          description: >-
                            Одно совпадение скрининга. `match_score` (0–100)
                            измеряет уверенность в совпадении личности —
                            совпадения ниже `aml_match_score_threshold`
                            помечаются как `review_status: "False Positive"` и
                            исключаются из оценки риска; совпадения на уровне
                            порога или выше считаются возможными совпадениями со
                            статусом `"Unreviewed"`. `risk_score` (0–100)
                            измеряет степень риска найденной сущности и
                            определяет итоговый `aml.score` верхнего уровня.
                          properties:
                            id:
                              type: string
                              nullable: true
                              description: >-
                                Стабильный идентификатор Didit для совпадения:
                                `hit_`, за которым следуют 24 шестнадцатеричных
                                символа. Та же найденная сущность сохраняет тот
                                же `id` при повторном скрининге субъекта.
                                Передавайте его как `hit_id` в endpoint проверки
                                совпадений AML.
                            url:
                              type: string
                              nullable: true
                              description: >-
                                Исходный URL сущности с совпадением, если
                                доступен.
                            match:
                              type: boolean
                              nullable: true
                              description: >-
                                Устаревший флаг точного совпадения.
                                Рекомендуется использовать `match_score` +
                                `review_status`.
                            score:
                              type: number
                              nullable: true
                              description: >-
                                УСТАРЕЛО: взвешенная оценка совпадения в
                                диапазоне 0–1. Используйте вместо этого
                                `match_score`.
                            match_score:
                              type: number
                              nullable: true
                              description: >-
                                Оценка уверенности идентификации (0–100).
                                Сравнивается с `aml_match_score_threshold` для
                                разделения ложных срабатываний и возможных
                                совпадений.
                            risk_score:
                              type: number
                              nullable: true
                              description: >-
                                Оценка риска сущности (0–100). Наибольший
                                `risk_score` среди совпадений, не являющихся
                                ложными срабатываниями, становится `aml.score`
                                верхнего уровня.
                            target:
                              type: boolean
                              nullable: true
                            caption:
                              type: string
                              nullable: true
                              description: Отображаемое имя найденной сущности.
                            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: >-
                                Категории риска, в которых числится сущность:
                                `PEP` (с указанием уровня, от `PEP Level 1` до
                                `PEP Level 4`), `Sanctions`, `Adverse Media`,
                                `Warnings and Regulatory Enforcement`, `Fitness
                                and Probity`, `SIP`, `SIE` или `Insolvency`.
                                Значение `Other Lists` используется, когда
                                источник сущности не указывает ни одну из этих
                                категорий.
                            features:
                              type: object
                              nullable: true
                            properties:
                              type: object
                              nullable: true
                              description: >-
                                Профиль сущности: `name`, `alias`, `notes`,
                                `gender`, `birthDate`, `birthPlace`,
                                `nationality`, `position` и другие
                                биографические массивы (каждый может принимать
                                значение null).
                            rca_name:
                              type: string
                              nullable: true
                              description: >-
                                Имя связанного близкого лица, через которое было
                                найдено совпадение сущности, если совпадение
                                относится к RCA.
                            pep_matches:
                              type: array
                              description: >-
                                Записи списка политически значимых лиц (PEP),
                                соответствующие этому совпадению.
                              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: >-
                                Записи санкционных списков, подтверждающие это
                                совпадение (та же структура записей
                                подтверждающего списка, что и в `pep_matches`,
                                плюс специфичные для санкций поля).
                            warning_matches:
                              type: array
                              items:
                                type: object
                              description: >-
                                Записи предупреждений и списка наблюдения,
                                послужившие основанием для этого совпадения.
                            adverse_media_matches:
                              type: array
                              description: >-
                                Статьи о негативных публикациях в СМИ.
                                Заполняется только при
                                `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: >-
                                Агрегированная тональность негативных публикаций
                                в СМИ для сущности (`sentiment`,
                                `sentiment_score`, частотная карта
                                `adverse_keywords`). Заполняется только при
                                `include_adverse_media=true`.
                            first_seen:
                              type: string
                              format: date-time
                              nullable: true
                              description: >-
                                Когда сущность впервые появилась в наборах
                                данных.
                            last_seen:
                              type: string
                              format: date-time
                              nullable: true
                              description: >-
                                Самое последнее обновление набора данных,
                                включившее данную сущность.
                            linked_entities:
                              type: array
                              description: >-
                                Известные связи сопоставленной сущности (семья,
                                связанные лица, компании).
                              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: >-
                                Разбивка риска по измерениям (`crimes`,
                                `countries`, `categories`, `custom_list`),
                                каждое из которых содержит `score`, `weightage`,
                                `risk_level` и карту `risk_scores`.
                            additional_information:
                              type: object
                              nullable: true
                              description: >-
                                Дополнительный контекст в свободной форме,
                                например массив `flag_summary`, объясняющий,
                                почему сущность помечена флагом.
                            review_status:
                              type: string
                              nullable: true
                              enum:
                                - False Positive
                                - Unreviewed
                                - Confirmed Match
                                - Inconclusive
                              description: >-
                                `False Positive` — `match_score` ниже
                                `aml_match_score_threshold`, исключено из оценки
                                рисков. `Unreviewed` — возможное совпадение,
                                ожидающее проверки. `Confirmed Match` /
                                `Inconclusive` — устанавливается проверяющим
                                вручную (через Business Console) для сохранённых
                                сессий; эта возможность проверки не входит в
                                данную спецификацию.
                            score_breakdown:
                              type: object
                              nullable: true
                              description: >-
                                Как рассчитывалась `match_score`. Имя, дата
                                рождения и страна вносят по `<component>_score`
                                × `<component>_weight_normalized` баллов; веса
                                пересчитываются (нормализуются заново), если
                                компонент отсутствует в проверяемых данных.
                                Номер документа не взвешивается — он выступает в
                                качестве «золотого ключа»: `MATCH` заменяет
                                оценку на 100, `NEUTRAL` оставляет её без
                                изменений, `HARD_MISMATCH` применяет штраф.
                              properties:
                                name_score:
                                  type: integer
                                  nullable: true
                                  description: Необработанное сходство имён (0–100).
                                name_weight:
                                  type: integer
                                  nullable: true
                                  description: Настроенный вес имени (`aml_name_weight`).
                                name_weight_normalized:
                                  type: number
                                  nullable: true
                                  description: Вес имени после перенормализации (0–100).
                                name_contribution:
                                  type: number
                                  nullable: true
                                  description: Баллы за имя, вошедшие в `total_score`.
                                dob_score:
                                  type: integer
                                  nullable: true
                                  description: >-
                                    Оценка даты рождения в процентах от её веса
                                    (от −100 до 100).
                                dob_weight:
                                  type: integer
                                  nullable: true
                                  description: >-
                                    Настроенный вес даты рождения
                                    (`aml_dob_weight`).
                                dob_weight_normalized:
                                  type: number
                                  nullable: true
                                  description: >-
                                    Вес даты рождения после перенормировки
                                    (0–100).
                                dob_contribution:
                                  type: number
                                  nullable: true
                                  description: >-
                                    Баллы за дату рождения, вошедшие в
                                    `total_score`.
                                country_score:
                                  type: integer
                                  nullable: true
                                  description: >-
                                    Оценка страны в процентах от её веса (от
                                    −100 до 100).
                                country_weight:
                                  type: integer
                                  nullable: true
                                  description: >-
                                    Настроенный вес страны
                                    (`aml_country_weight`).
                                country_weight_normalized:
                                  type: number
                                  nullable: true
                                  description: Вес страны после перенормировки (0–100).
                                country_contribution:
                                  type: number
                                  nullable: true
                                  description: Баллы за страну, вошедшие в `total_score`.
                                document_number_match_type:
                                  type: string
                                  nullable: true
                                  enum:
                                    - MATCH
                                    - NEUTRAL
                                    - HARD_MISMATCH
                                  description: >-
                                    Результат сравнения номеров документов по
                                    эталонному ключу (golden-key).
                                document_number_effect:
                                  type: string
                                  nullable: true
                                  description: Понятное описание влияния номера документа.
                                total_score:
                                  type: integer
                                  nullable: true
                                  description: >-
                                    Финальная взвешенная оценка совпадения
                                    (0–100) — дублирует `match_score`.
                      score:
                        type: number
                        nullable: true
                        description: >-
                          Общая оценка риска AML (0–100): наибольший
                          `risk_score` среди совпадений, не являющихся ложными
                          срабатываниями. Определяет `status` с помощью двух
                          порогов.
                      screened_data:
                        type: object
                        description: >-
                          Эхо проверенных данных: `full_name`, `date_of_birth`,
                          `nationality`, `document_number` (отсутствующие поля
                          содержат `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: Функция, вызвавшая предупреждение.
                            risk:
                              type: string
                              description: Машиночитаемый идентификатор риска.
                            additional_data:
                              type: object
                              nullable: true
                              description: >-
                                Дополнительный контекст предупреждения, если он
                                доступен.
                            log_type:
                              type: string
                              description: >-
                                `warning`, `information` или `error` — как этот
                                риск повлиял на результат.
                            short_description:
                              type: string
                              description: Однострочная понятная человеку сводка.
                            long_description:
                              type: string
                              description: Полное понятное человеку объяснение.
                        description: >-
                          Содержит предупреждение `POSSIBLE_MATCH_FOUND`, когда
                          `score` не равен нулю и ≥
                          `aml_score_approve_threshold` (оценка ровно 0 никогда
                          не вызывает предупреждение); в остальных случаях
                          пустой.
                  vendor_data:
                    type: string
                    nullable: true
                    description: Эхо отправленных вами `vendor_data`.
                  metadata:
                    type: object
                    nullable: true
                    description: Эхо-значение переданного вами `metadata`.
                  created_at:
                    type: string
                    format: date-time
              examples:
                No hits (Approved):
                  summary: Чистый скрининг — ноль совпадений
                  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: >-
                    Одно возможное совпадение с политически значимым лицом
                    (PEP); оценка риска 73 остаётся ниже стандартного порога
                    одобрения 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: >-
            Ошибка валидации. Проблемы на уровне полей возвращают стандартную
            структуру DRF (один массив сообщений на каждое некорректное поле);
            межполевые правила (сумма весов, порядок порогов, мониторинг без
            сохранения) возвращают `{"error": [...]}`.
          content:
            application/json:
              examples:
                Missing full_name:
                  summary: '`full_name` является единственным обязательным полем'
                  value:
                    full_name:
                      - This field is required.
                Short full_name:
                  summary: '`full_name` должно содержать не менее 2 символов'
                  value:
                    full_name:
                      - Ensure this field has at least 2 characters.
                Invalid nationality:
                  summary: '`nationality` должно соответствовать 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: Порог одобрения выше порога проверки
                  value:
                    error:
                      - >-
                        Approve threshold (90.0) cannot be greater than review
                        threshold (80.0)
                Monitoring without saving:
                  summary: >-
                    `include_ongoing_monitoring=true` при
                    `save_api_request=false`
                  value:
                    error:
                      - >-
                        Ongoing monitoring can only be enabled when the API
                        request is saved.
        '403':
          description: >-
            В доступе отказано. Возвращается, если заголовок `x-api-key`
            отсутствует, а также если баланс вызывающей организации не покрывает
            вызов; неверный, отозванный или истекший ключ возвращает `401`.
            Отсутствующий ключ возвращает `403` с `{"detail": ...}`; неверный,
            отозванный или истекший ключ возвращает `401`. При нехватке кредитов
            возвращается `403` с `{"error": ...}` до начала любого скрининга или
            вызова провайдера.
          content:
            application/json:
              examples:
                Missing or invalid API key:
                  summary: >-
                    Отсутствует заголовок `x-api-key`, либо ключ
                    недействителен/отозван
                  value:
                    detail: You do not have permission to perform this action.
                Not enough credits:
                  summary: Баланс организации недостаточен для совершения вызова
                  value:
                    error: >-
                      You don't have enough credits to perform this request.
                      Please top up at https://business.didit.me
        '429':
          description: >-
            Превышен лимит запросов. Endpoint'ы POST/PATCH/DELETE делят общий
            лимит в 300 запросов на запись в минуту на один API-ключ (для
            создания транзакций и отправки событий действует отдельный лимит в
            600). Ответ содержит заголовки `X-RateLimit-Limit`,
            `X-RateLimit-Remaining`, `X-RateLimit-Reset` и `Retry-After`.
          content:
            application/json:
              examples:
                Write rate limit exceeded:
                  summary: Более 300 запросов на запись в текущую минуту
                  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: >-
        API-ключ вашего приложения из раздела «Разработчикам» -> «API-ключи» в
        Business Console. Основной ключ имеет полный доступ. Именованный ключ
        может иметь ограниченную область действия: без доступа, чтение или
        запись для каждого ресурса, ограничение определенными сценариями или
        одобренными сессиями, списком IP-адресов и сроком действия. 401
        означает, что ключ неверен, отозван или его срок действия истек; 403
        означает, что ключ не был передан, у ключа нет доступа к этому ресурсу
        или действию, либо запрос поступил с адреса вне его списка IP-адресов;
        404 на маршруте сессии означает, что сессия не входит в сценарии или
        статусы ключа. Ключ без доступа к медиа получает URL изображений, видео
        и PDF как null, а ключ без прав на запись сессий получает ссылки на
        сессии и токены как null. См. https://docs.didit.me/console/api-keys.

````

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