> ## 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: 일치 확인 및 오탐 처리

> Didit API로 AML 스크리닝 히트를 개별 또는 일괄로 확인된 일치, 오탐, 결론 불가 중 하나로 표시하세요.



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 스크리닝은 **히트** 목록을 반환합니다. 히트는 제재 목록, PEP 데이터베이스, 감시 목록, 부정적 언론 보도와 일치할 가능성이 있는 항목입니다. 각 히트에는 처리 결과를 나타내는 `review_status`가 있으며, 일치 점수에 따라 `Unreviewed` 또는 `False Positive`로 시작합니다. 이 endpoint를 사용하면 팀(또는 자동화 시스템)이 각 히트에 대한 결정을 기록할 수 있습니다. 세션 전체 결정은 변경되지 않습니다.히트와 해당 ID는 [세션 결정](https://docs.didit.me/ko/sessions-api/retrieve-session.md)에서 확인할 수 있습니다. AML 확인의 `hits` 배열에 있으며, 각 히트의 `id`가 여기서 전달하는 `hit_id`입니다.히트 `id`는 `hit_`로 시작하고 16진수 문자 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 확인이 있는 세션(그래프 워크플로)에서 특정 확인을 대상으로 하려면 URL에 `?node_id=feature_aml_1`을 추가하거나 본문에 `"node_id"`를 포함하세요.## 여러 히트 일괄 업데이트**`PATCH /v3/session/{sessionId}/bulk-update-aml-hit-status/`**`{ hit_id, review_status }` 쌍의 목록인 `hit_updates`를 전달합니다. 이 작업은 **전부 적용하거나 전부 적용하지 않습니다**. `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" }
    ]
  }'
```일괄 업데이트가 성공하면 `data.updated` 웹훅이 한 번 발생하고, 모든 변경 사항을 포함하는 활동 기록이 하나 생성됩니다.## 업데이트 이후 일어나는 일- **웹훅**: 세션에 대해 `data.updated` 이벤트가 발생합니다.
- **감사 추적 기록**: 변경 사항이 행위자(API 키 또는 사용자)와 함께 세션의 검토 기록에 남으며, 콘솔의 활동 타임라인에서 확인할 수 있습니다.
- **AML 단계 전체 상태는 변경되지 않습니다**: 히트의 처리 결과를 바꾼다고 해서 AML 단계 상태나 세션 결정이 자동으로 바뀌지는 않습니다. AML **단계** 상태(`Approved` / `Declined` / `In Review`)를 변경하려면 [기능 상태 업데이트](https://docs.didit.me/ko/sessions-api/update-feature-status.md)를 사용하세요. **세션** 결정을 변경하려면 [상태 업데이트](https://docs.didit.me/ko/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/ko/sessions-api/update-feature-status.md): AML **단계** 상태(또는 다른 단계의 상태)를 변경합니다.
- [세션 상태 업데이트](https://docs.didit.me/ko/sessions-api/update-status.md): 세션 전체 결정을 변경합니다.
- [세션 조회](https://docs.didit.me/ko/sessions-api/retrieve-session.md): AML `hits`와 해당 ID를 읽습니다.
- [AML 스크리닝](https://docs.didit.me/ko/standalone-apis/aml-screening.md): 스크리닝과 점수 산정 방식을 설명합니다.


## OpenAPI

````yaml ko/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 스크리닝에서 반환된 **단일 AML 일치 항목**(잠재적 제재 / 정치적 주요
        인물(PEP) / 감시 목록 / 부정적 언론 보도 일치)의 검토 상태를 설정합니다. `hit_id`(AML 검사의 `hits`
        배열에 있는 항목의 `id` — 세션 결정 참조)로 일치 항목을 식별합니다. 이전 형식으로 반환된 일치 항목 id도 계속
        허용되며, 응답에는 항상 일치 항목의 현재 `id`가 표시됩니다.


        `review_status`는 `Unreviewed`, `Confirmed Match`, `False Positive`,
        `Inconclusive` 중 하나입니다. 검토자 결정은 지속적인 모니터링 업데이트 전반에 걸쳐 유지되므로, `False
        Positive`로 표시한 일치 항목은 공급자가 재스크리닝할 때도 해당 상태로 유지됩니다.


        호출이 성공하면 `data.updated` webhook이 발생하고 세션의 검토 기록에 활동 항목(행위자 정보 포함)이
        추가됩니다. 여러 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입니다. 사용자(KYC) 및 기업(KYB) 세션 ID를 모두 지원하며, 서비스는 두 세션 유형 전체에서
            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: >-
                    AML 스크리닝의 `hits` 배열에 있는 일치 항목의 `id`(`hit_...`)입니다. 이전 형식으로
                    반환된 일치 항목 id도 계속 허용됩니다.
                  example: hit_7c1e9a40b2d35f86e0a4c912
                review_status:
                  type: string
                  description: 일치 항목에 대한 새로운 검토 상태입니다.
                  enum:
                    - Unreviewed
                    - Confirmed Match
                    - False Positive
                    - Inconclusive
                  example: False Positive
                node_id:
                  type: string
                  description: >-
                    선택적 그래프 노드 ID입니다. 세션에 여러 AML 확인이 있는 경우(여기 또는 쿼리 파라미터로)
                    사용합니다.
                  example: feature_aml_1
            example:
              hit_id: hit_7c1e9a40b2d35f86e0a4c912
              review_status: False Positive
      responses:
        '200':
          description: 적발(hit) 검토 상태가 업데이트되었습니다.
          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: >-
        Business Console의 Developers -> API keys에서 발급받은 귀하 애플리케이션의 API 키입니다. 기본
        키는 전체 접근 권한을 갖습니다. 이름이 지정된 키는 리소스별 none, read, write 범위로 권한을 제한할 수 있으며
        특정 워크플로나 승인된 세션, IP 주소 목록, 만료일 등으로 제한할 수도 있습니다. 401은 키가 잘못되었거나 폐기되었거나
        만료되었음을 의미합니다. 403은 키가 전송되지 않았거나, 키에 해당 리소스나 작업에 대한 접근 권한이 없거나, 요청이 허용된
        IP 목록 외부 주소에서 발생했음을 의미합니다. 세션 경로에서의 404는 해당 세션이 키의 허용 워크플로 또는 상태 범위를
        벗어났음을 의미합니다. 미디어 접근 권한이 없는 키는 이미지, 비디오, PDF URL을 null로 수신하며, 세션 write
        권한이 없는 키는 세션 링크와 token을 null로 수신합니다.
        https://docs.didit.me/console/api-keys 를 참고하십시오.

````

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