> ## 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 및 감시 목록

> 1,300개 이상의 글로벌 감시 목록으로 실시간 AML 스크리닝. 제재, PEP, 부정적 언론 보도 확인. 두 가지 점수 체계, 건당 $0.20, 월 최소 요금 없음. Didit API.



## OpenAPI

````yaml ko/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`가 0이 아니고 승인 임계값 이상일 때마다 `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/`에서 사용 가능), 콘솔에
        표시되고, `status.updated` webhook이 발생하며, 적중 항목의 검토 상태를 나중에 업데이트할 수 있습니다.
        `save_api_request=false`인 경우 아무것도 저장되지 않으며 `request_id`는 일시적인 상관 관계 ID로
        사용됩니다. `include_ongoing_monitoring=true`는 프로필을 지속적으로 재스크리닝하며
        `save_api_request=true`가 필요합니다(`400`으로 강제됨).


        **멱등성.** 타임아웃 또는 일시적 오류 발생 후 재시도할 때 `Idempotency-Key` 헤더를 전송하십시오. 키의 범위는
        애플케이션 및 정확한 요청 본문으로 제한됩니다. 처음에 완료된 요청은 응답을 저장하며, 이후 동일한 재시도는 해당 응답을 그대로
        반환하고 다른 AML 스크리닝을 실행하거나 요금을 청구하지 않습니다. 원래 요청이 아직 실행 중인 경우 동일한 키로 나중에 다시
        시도하십시오. 다른 본문에 동일한 키가 재사용되면 API는 `409`를 반환합니다.


        **결제.** 첫 번째 성공적인 스크리닝 후 AML API 크레딧 1개가 청구됩니다. 멱등성 재요청으로 반환된 응답에는 다시
        청구되지 않으며, 잔액이 부족하면 새로운 스크리닝이 수행되기 전에 `403`이 반환됩니다.


        **샌드박스.** 샌드박스 애플케이션의 키는 스크리닝 및 결제를 완전히 건너뛰고 모의 결과(`sandbox_scenario`를
        전달하지 않는 한 적중 항목이 없는 `Approved`)를 반환합니다. `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/ 또는 [Sandbox & Test
                    Data](/ko/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`는 설정한 임계값을 반영하며, 내부 포함 기준선 이상의 모든 적중 항목은
            신원 `match_score`, 엔티티 `risk_score`, 일치 세부 정보를 설명하는
            `score_breakdown`과 함께 `aml.hits`에 나열됩니다.
          content:
            application/json:
              schema:
                type: object
                properties:
                  request_id:
                    type: string
                    format: uuid
                    description: >-
                      `save_api_request=true`일 때 유지된 세션 ID(`GET
                      /v3/session/{sessionId}/decision/`와 함께 사용 가능), 그렇지 않으면 임시
                      상관관계 UUID입니다.
                  aml:
                    type: object
                    properties:
                      status:
                        type: string
                        enum:
                          - Approved
                          - In Review
                          - Declined
                        description: >-
                          `score` > `aml_score_review_threshold`인 경우 `Declined`,
                          `score` > `aml_score_approve_threshold`인 경우 `In
                          Review`, 그 외의 경우(사용 가능한 점수가 없는 경우 포함) `Approved`.
                      total_hits:
                        type: integer
                        description: '`hits`의 항목 수입니다.'
                      entity_type:
                        type: string
                        enum:
                          - person
                          - company
                        description: 스크리닝된 엔터티 유형의 에코 값입니다.
                      hits:
                        type: array
                        items:
                          type: object
                          description: >-
                            스크리닝 일치 항목 1건입니다. `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자리의 16진수
                                문자가 붙습니다. 대상을 다시 스크리닝할 때 동일하게 일치된 엔터티는 동일한 `id`를
                                유지합니다. AML 적발 항목 검토 endpoint에 `hit_id`로 전달합니다.
                            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` 및 기타 전기 정보 배열(각각 nullable).
                            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: 문서 번호 비교를 위한 골든 키 결과입니다.
                                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: >-
                          `score`가 0이 아니고 `aml_score_approve_threshold` 이상일 때마다
                          `POSSIBLE_MATCH_FOUND` 경고가 포함됩니다(점수가 정확히 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: 이상 없는 스크리닝 — 일치 항목 0건
                  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) 일치 가능성 1건입니다. 위험 점수 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: >-
                    `save_api_request=false` 상태에서
                    `include_ongoing_monitoring=true`를 설정했습니다.
                  value:
                    error:
                      - >-
                        Ongoing monitoring can only be enabled when the API
                        request is saved.
        '403':
          description: >-
            권한이 거부되었습니다. `x-api-key` 헤더가 누락되었거나 호출한 조직의 잔액이 호출 비용을 충당할 수 없을 때
            반환됩니다. 잘못되었거나 취소되었거나 만료된 키는 `401`을 반환합니다. 키가 누락된 경우 `{"detail":
            ...}`과 함께 `403`을 반환하고, 잘못되었거나 취소되었거나 만료된 키는 `401`을 반환합니다. 크레딧이 부족한
            경우 어떠한 스크리닝이나 제공업체 호출도 진행되기 전에 `{"error": ...}`과 함께 `403`을 반환합니다.
          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: >-
            속도 제한을 초과했습니다. POST/PATCH/DELETE endpoint는 API 키당 분당 300회의 쓰기 요청 한도를
            공유합니다(거래 생성 및 이벤트 수집은 별도로 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: >-
        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.