> ## 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 обновления статуса AML-совпадения: снятие и подтверждение

> Отмечайте отдельные AML-совпадения как подтверждённое совпадение, ложное срабатывание или неокончательное — по одному или массово — через Didit API.



Промпт для обновления статуса совпадения AML
        Скопировать промпт в буфер обмена



      
      

\<pre>

\`Set the review status (disposition) of AML screening hits on a Didit session — one hit, or many at once.

AML screening returns a list of HITS (potential sanction / PEP / watchlist / adverse-media matches). Each hit carries a review_status you can change to record your compliance decision. This does NOT change the overall session decision.

Two endpoints:

1\) Single hit
PATCH https://verification.didit.me/v3/session/{session_id}/update-aml-hit-status/
Body:
\- hit_id (string, required) — the "id" of the hit in the AML check's "hits" array (see GET /v3/session/{id}/decision/), for example "hit_7c1e9a40b2d35f86e0a4c912". A hit id returned in the earlier format is still accepted; the response always returns the current "id".
\- review_status (string, required) — one of "Unreviewed", "Confirmed Match", "False Positive", "Inconclusive".
\- node_id (string, optional) — graph node ID, only if the session has multiple AML checks.

2\) Bulk
PATCH https://verification.didit.me/v3/session/{session_id}/bulk-update-aml-hit-status/
Body:
\- hit_updates (array, required) — list of { "hit_id": "...", "review_status": "..." }.
\- node_id (string, optional).
All-or-nothing: if any hit_id is missing, returns 404 and nothing changes.

Authentication:
x-api-key (client API key) or a user-auth token. Privilege: write:sessions.

Status values:
\- Unreviewed — default for hits at/above the match threshold; still needs review.
\- Confirmed Match — a true match.
\- False Positive — not the same entity; default for hits below the match threshold.
\- Inconclusive — could not determine.

Reviewer decisions are PRESERVED across ongoing-monitoring re-screens.

curl — clear one hit as a false positive:
curl -X PATCH https://verification.didit.me/v3/session/<SESSION_ID>/update-aml-hit-status/ \
-H "x-api-key: <API_KEY>" \
-H "Content-Type: application/json" \
-d '{ "hit_id": "hit_7c1e9a40b2d35f86e0a4c912", "review_status": "False Positive" }'

curl — bulk:
curl -X PATCH https://verification.didit.me/v3/session/<SESSION_ID>/bulk-update-aml-hit-status/ \
-H "x-api-key: <API_KEY>" \
-H "Content-Type: application/json" \
-d '{ "hit_updates": [ { "hit_id": "hit_7c1e9a40b2d35f86e0a4c912", "review_status": "Confirmed Match" }, { "hit_id": "hit_3b8f20d6a91c4e75f0b2d6a8", "review_status": "False Positive" } ] }'

Side effects:
\- Fires a data.updated webhook.
\- Appends an activity entry (with actor attribution) to the session review trail.

Failure modes:
\- 400 — review_status not a valid value, hit_id empty, or hit_updates empty.
\- 403 — missing credentials (a wrong, revoked or expired key gets 401), or the caller lacks write:sessions.
\- 404 — session not found, no AML check, or a hit_id was not found.

Related: to change the overall AML step status (Approved/Declined/In Review) use PATCH /v3/session/{id}/features/{node_id}/update-status/ (see /sessions-api/update-feature-status).

For end-to-end Didit integration, paste in the full prompt at /integration/integration-prompt.`

\</pre>



      
      

Вставьте в

## Что это делаетAML-скрининг возвращает список **совпадений** (hits): потенциальных соответствий санкционным спискам, базам PEP, спискам наблюдения и негативным публикациям в СМИ. У каждого совпадения есть `review_status` (его решение), который при создании получает значение `Unreviewed` или `False Positive` в зависимости от оценки совпадения. Этот эндпоинт позволяет вашей команде (или вашей автоматизации) зафиксировать решение по каждому совпадению без изменения общего решения по сессии.Совпадения и их ID находятся в [решении по сессии](https://docs.didit.me/ru/sessions-api/retrieve-session.md): в массиве `hits` проверки AML, где `id` каждого совпадения — это `hit_id`, который вы передаёте в этот запрос.`id` совпадения имеет вид `hit_` и 24 шестнадцатеричных символа и не меняется при повторном скрининге субъекта. ID совпадения в прежнем формате по-прежнему принимается, но в ответе совпадение всегда указывается по его текущему `id`.## Статусы проверки| `review_status` | Значение |
| - | - |
| `Unreviewed` | Значение по умолчанию для совпадений на уровне порога совпадения или выше. Требуется решение. |
| `Confirmed Match` | Подтверждённое совпадение с проверяемым физическим или юридическим лицом. |
| `False Positive` | Это не то же лицо или организация. Значение по умолчанию для совпадений ниже порога совпадения. |
| `Inconclusive` | Определить не удалось. |> [!NOTE]
>
> Решения проверяющих **сохраняются при повторных проверках в рамках постоянного мониторинга**: совпадение, которому вы присвоили статус `False Positive`, сохраняет этот статус, когда провайдер повторно проверяет субъекта.## Обновление одного совпадения**`PATCH /v3/session/{sessionId}/update-aml-hit-status/`**```bash theme={null}
curl -X PATCH https://verification.didit.me/v3/session/4c5c7f3a-.../update-aml-hit-status/ \
  -H "x-api-key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "hit_id": "hit_7c1e9a40b2d35f86e0a4c912",
    "review_status": "False Positive"
  }'
```Для сессии с несколькими проверками AML (сценарии на основе графа) добавьте `?node_id=feature_aml_1` к URL или укажите `"node_id"` в теле запроса, чтобы выбрать конкретную проверку.## Обновление нескольких совпадений сразу**`PATCH /v3/session/{sessionId}/bulk-update-aml-hit-status/`**Передайте `hit_updates`: список пар `{ hit_id, review_status }`. Операция выполняется **все или ничего**: если какой-либо `hit_id` не найден, запрос возвращает `404`, и ни одно совпадение не изменяется.```bash theme={null}
curl -X PATCH https://verification.didit.me/v3/session/4c5c7f3a-.../bulk-update-aml-hit-status/ \
  -H "x-api-key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "hit_updates": [
      { "hit_id": "hit_7c1e9a40b2d35f86e0a4c912", "review_status": "Confirmed Match" },
      { "hit_id": "hit_3b8f20d6a91c4e75f0b2d6a8", "review_status": "False Positive" }
    ]
  }'
```Успешный массовый запрос отправляет одно событие webhook `data.updated` и создаёт одну запись активности, которая охватывает все изменения.## Что происходит после обновления- **Вебхук**: по сессии отправляется событие `data.updated`.
- **Журнал аудита**: изменение записывается в журнал проверки сессии с указанием инициатора (API-ключ или пользователь). Его можно увидеть в хронологии активности консоли.
- **Общий статус шага AML не меняется**: изменение решения по совпадению само по себе не меняет статус шага AML и решение по сессии. Чтобы изменить статус **шага** AML (`Approved` / `Declined` / `In Review`), используйте [обновление статуса функции](https://docs.didit.me/ru/sessions-api/update-feature-status.md). Чтобы изменить **решение** по сессии, используйте [обновление статуса сессии](https://docs.didit.me/ru/sessions-api/update-status.md).## Поддержка KYC и KYBРаботает как для сессий **Проверки пользователей (KYC)**, так и для сессий **Верификации бизнеса (KYB)**: Didit находит `sessionId` в обоих типах. Для KYB AML-скрининг проводится для компании и её ключевых лиц, и каждая проверка AML содержит свои совпадения.## РазрешениеТребуется привилегия `write:sessions` с клиентским API-ключом (`x-api-key`) или с заголовком авторизации пользователя.## Ошибки| Статус | Значение |
| - | - |
| `400` | `review_status` имеет недопустимое значение, `hit_id` пустой или `hit_updates` пустой. |
| `403` | Учетные данные отсутствуют или недействительны либо у вызывающего нет `write:sessions`. |
| `404` | Сессия не найдена, у сессии нет проверки AML или `hit_id` не найден (для массового запроса ничего не изменяется). |## Связанные материалы- [Обновление статуса функции](https://docs.didit.me/ru/sessions-api/update-feature-status.md): изменение статуса **шага** AML (или любого другого шага).
- [Обновление статуса сессии](https://docs.didit.me/ru/sessions-api/update-status.md): изменение общего решения по сессии.
- [Получение сессии](https://docs.didit.me/ru/sessions-api/retrieve-session.md): чтение массива `hits` AML и их ID.
- [Скрининг AML](https://docs.didit.me/ru/standalone-apis/aml-screening.md): как работают AML-скрининг и скоринг.


## OpenAPI

````yaml ru/openapi-25.json PATCH /v3/session/{sessionId}/update-aml-hit-status/
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/session/{sessionId}/update-aml-hit-status/:
    patch:
      tags:
        - Sessions
      summary: Обновить статус проверки AML-срабатывания
      description: >-
        Установите статус проверки для **одного совпадения AML** (потенциальное
        совпадение по санкциям / PEP / спискам наблюдения / негативным
        публикациям в СМИ), возвращённого AML-скринингом, без изменения общего
        решения по сессии. Укажите совпадение по его `hit_id` (поле `id` записи
        в массиве `hits` проверки AML — см. решение по сессии). Идентификатор
        совпадения, возвращённый в более раннем формате, по-прежнему
        принимается; ответ всегда указывает совпадение по его текущему `id`.


        Поле `review_status` принимает одно из значений: `Unreviewed`,
        `Confirmed Match`, `False Positive` или `Inconclusive`. Решения
        проверяющего сохраняются при обновлениях постоянного мониторинга,
        поэтому совпадение, отмеченное вами как `False Positive`, остаётся
        таковым при повторном скрининге провайдером.


        Успешный вызов отправляет webhook `data.updated` и добавляет запись об
        активности (с указанием исполнителя) в журнал проверки сессии. Для
        графовых сценариев с несколькими проверками AML передайте `node_id`,
        чтобы указать конкретную проверку.


        Аутентифицируйтесь с помощью вашего API-ключа (`x-api-key`) или
        заголовка авторизации пользователя — любой из них должен содержать
        разрешение `write:sessions`.
      operationId: patch_v3_session_update_aml_hit_status
      parameters:
        - in: path
          name: sessionId
          required: true
          description: >-
            UUID сессии верификации. Принимает ID сессий как пользователей
            (KYC), так и компаний (KYB) — сервис сопоставляет ID для обоих типов
            сессий.
          schema:
            type: string
            format: uuid
            example: 11111111-2222-3333-4444-555555555555
        - in: query
          name: node_id
          required: false
          description: >-
            ID узла графа сценария. Требуется, только если в сессии есть
            несколько AML-проверок (по одной на узел); опустите для сессий с
            одной AML-проверкой.
          schema:
            type: string
            example: feature_aml_1
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - hit_id
                - review_status
              properties:
                hit_id:
                  type: string
                  description: >-
                    Идентификатор `id` совпадения в массиве `hits` AML-проверки
                    (`hit_...`). Идентификатор совпадения, возвращённый в
                    прежнем формате, по-прежнему принимается.
                  example: hit_7c1e9a40b2d35f86e0a4c912
                review_status:
                  type: string
                  description: Новый статус проверки для совпадения.
                  enum:
                    - Unreviewed
                    - Confirmed Match
                    - False Positive
                    - Inconclusive
                  example: False Positive
                node_id:
                  type: string
                  description: >-
                    Необязательный ID узла графа. Используйте его (здесь или в
                    качестве query-параметра), если в сессии есть несколько
                    AML-проверок.
                  example: feature_aml_1
            example:
              hit_id: hit_7c1e9a40b2d35f86e0a4c912
              review_status: False Positive
      responses:
        '200':
          description: Статус проверки срабатывания обновлён.
          content:
            application/json:
              schema:
                type: object
                required:
                  - message
                  - hit_id
                  - review_status
                properties:
                  message:
                    type: string
                    description: Всегда `Hit status updated successfully`.
                  hit_id:
                    type: string
                    description: >-
                      `id` обновлённого совпадения в том виде, как его
                      возвращает решение по сессии, в том числе когда в запросе
                      совпадение было указано по id в прежнем формате.
                  review_status:
                    type: string
                    enum:
                      - Unreviewed
                      - Confirmed Match
                      - False Positive
                      - Inconclusive
                    description: Статус проверки, сохранённый в срабатывании.
              example:
                message: Hit status updated successfully
                hit_id: hit_7c1e9a40b2d35f86e0a4c912
                review_status: False Positive
        '400':
          description: >-
            Ошибка валидации — `hit_id` пуст или `review_status` не входит в
            список допустимых значений.
          content:
            application/json:
              example:
                review_status:
                  - '"Maybe" is not a valid choice.'
        '403':
          description: >-
            Отсутствуют учетные данные или недостаточно разрешений. При
            отсутствии ключа возвращается `403`; при неверном, отозванном или
            истекшем ключе возвращается `401`.
          content:
            application/json:
              examples:
                Invalid Credentials:
                  summary: Отсутствует или недействителен x-api-key
                  value:
                    detail: >-
                      Authentication credentials were not provided or are
                      invalid.
                Missing Privilege:
                  summary: У API-ключа отсутствует разрешение write:sessions
                  value:
                    detail: You do not have permission to perform this action.
        '404':
          description: >-
            Сессия не найдена, в сессии нет AML-проверки (при необходимости для
            указанного `node_id`), либо совпадение с `hit_id` отсутствует.
          content:
            application/json:
              examples:
                No AML Check:
                  summary: В сессии нет AML-проверки
                  value:
                    detail: The session does not have an AML check.
                Hit Not Found:
                  summary: Неизвестный hit_id
                  value:
                    detail: >-
                      Hit with ID 'hit_9d2e7f41c0a8b3e65d1f0c47' not found in
                      the AML check.
      security:
        - ApiKeyAuth: []
      x-codeSamples:
        - lang: curl
          label: curl
          source: |-
            curl -X PATCH \
              https://verification.didit.me/v3/session/11111111-2222-3333-4444-555555555555/update-aml-hit-status/ \
              -H 'x-api-key: YOUR_API_KEY' \
              -H 'Content-Type: application/json' \
              -d '{
                "hit_id": "abc123",
                "review_status": "False Positive"
              }'
        - lang: python
          label: Python
          source: |-
            from didit import Didit

            # Reads DIDIT_API_KEY.
            client = Didit()

            result = client.sessions.update_aml_hit_status(
                "11111111-2222-3333-4444-555555555555",
                hit_id="hit_7c1e9a40b2d35f86e0a4c912",
                review_status="False Positive",
            )
            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.sessions.updateAmlHitStatus("11111111-2222-3333-4444-555555555555",
            {
              hit_id: "hit_7c1e9a40b2d35f86e0a4c912",
              review_status: "False Positive",
            });

            console.log(result);
        - lang: go
          label: Go
          source: "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.Sessions.UpdateAMLHitStatus(ctx, \"11111111-2222-3333-4444-555555555555\", didit.SessionsUpdateAMLHitStatusParams{\n\tHitID:        \"hit_7c1e9a40b2d35f86e0a4c912\",\n\tReviewStatus: \"False Positive\",\n})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
        - lang: java
          label: Java
          source: >-
            import me.didit.Didit;

            import me.didit.types.SessionsUpdateAmlHitStatusParams;


            // Reads DIDIT_API_KEY.

            Didit client = new Didit();


            var result =
            client.sessions().updateAmlHitStatus("11111111-2222-3333-4444-555555555555",
            SessionsUpdateAmlHitStatusParams.builder()
                    .hitId("hit_7c1e9a40b2d35f86e0a4c912")
                    .reviewStatus(SessionsUpdateAmlHitStatusParams.ReviewStatus.of("False Positive"))
                    .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->sessions->updateAmlHitStatus('11111111-2222-3333-4444-555555555555',
            [
                'hit_id' => 'hit_7c1e9a40b2d35f86e0a4c912',
                'review_status' => 'False Positive',
            ]);

            print_r($result->toArray());
        - lang: ruby
          label: Ruby
          source: |-
            require "didit"

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

            result = didit.sessions.update_aml_hit_status(
              "11111111-2222-3333-4444-555555555555",
              hit_id: "hit_7c1e9a40b2d35f86e0a4c912",
              review_status: "False Positive"
            )
            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.Sessions.UpdateAmlHitStatusAsync("11111111-2222-3333-4444-555555555555",
            new SessionsUpdateAmlHitStatusParams

            {
                HitId = "hit_7c1e9a40b2d35f86e0a4c912",
                ReviewStatus = "False Positive",
            });

            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.