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

> 一次调用即可为多位用户开启或关闭 AML 持续监控，支持费用预估试运行、可轮询的任务状态及每位用户的处理结果。Didit 提供支持。



为用户切换 AML 监控的提示词
        将提示词复制到剪贴板



      
      

\<pre>

\`Goal: Enable or disable ongoing AML monitoring for one or many Didit User entities in a single call, with the same semantics as the Business Console. Preview the cost first with estimate_only, then run the change and read the per-user outcome.

Endpoint: POST https://verification.didit.me/v3/users/aml-monitoring/
Auth header: x-api-key: <DIDIT_API_KEY>
Content-Type: application/json

Request body:
\- is_enabled: boolean (required) - true to enable monitoring, false to disable it.
\- estimate_only: boolean (default false) - when true, returns the cost preview and performs NO writes: no screening, no billing, no job.
\- vendor_data_list: string[] - your own identifiers, matched exactly as sent.
\- didit_internal_id_list: string[] (UUIDs) - the didit_internal_id returned by the create, get and list endpoints.
Provide at least one list; the two are OR'd. At most 1000 identifiers per request across both lists - split larger selections into several calls.

Semantics:
\- One monitored screening per user: a person who verified several times is monitored and billed once. Disabling turns monitoring off across all of the user's screenings.
\- Users without any AML screening are screened first (billed as a regular AML screening) when the profile has a full name, date of birth and country; otherwise the user is reported as skipped_no_identity_data.
\- Blocked users are skipped (skipped_blocked). Sandbox applications never create screenings (skipped_sandbox).
\- Enabling is refused with 403 when the organization balance does not cover the estimate; the response carries the estimate.

curl (estimate first):
curl -X POST 'https://verification.didit.me/v3/users/aml-monitoring/' \
-H 'x-api-key: YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-d '{"is_enabled": true, "estimate_only": true, "vendor_data_list": ["user-123", "user-456"]}'

Response 200 (estimate_only):
\{
"users_total": 2, "already_enabled": 0, "with_existing_aml": 1, "needing_screening": 1,
"skipped_no_identity_data": 0, "skipped_blocked": 0,
"estimated_screening_cost_usd": 0.2, "estimated_annual_monitoring_cost_usd": 0.14,
"balance_sufficient": true, "unmatched": []
}

curl (enable):
curl -X POST 'https://verification.didit.me/v3/users/aml-monitoring/' \
-H 'x-api-key: YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-d '{"is_enabled": true, "vendor_data_list": ["user-123", "user-456"]}'

Response 200 (20 users or fewer - processed inline, already COMPLETED) or 202 (more than 20 - running in the background):
\{
"job_id": "<uuid>", "status": "COMPLETED", "is_enabled": true, "target_type": "user",
"total": 2, "processed": 2,
"outcomes": {"enabled": 1, "screened_and_enabled": 1, "already_enabled": 0, "disabled": 0, "skipped_no_identity_data": 0, "skipped_blocked": 0, "skipped_sandbox": 0, "failed_provider": 0, "failed_insufficient_balance": 0},
"results": [
\{"didit_internal_id": "<uuid>", "vendor_data": "user-123", "outcome": "enabled"},
\{"didit_internal_id": "<uuid>", "vendor_data": "user-456", "outcome": "screened_and_enabled"}
],
"estimate": { ...same shape as above, without unmatched... },
"unmatched": [],
"error": null,                     // generic message when status is FAILED
"created_at": "<datetime>", "completed_at": "<datetime>"
}
On 202, poll GET /v3/aml-monitoring/jobs/{job_id}/ every couple of seconds until status is COMPLETED or FAILED; results fills in as users are processed.

Per-user outcome values: enabled, screened_and_enabled, already_enabled, disabled, skipped_no_identity_data, skipped_blocked, skipped_sandbox, failed_provider, failed_insufficient_balance.

Failure modes:
\- 400 - is_enabled missing, no selector, or more than 1000 identifiers across both lists.
A selection that matches nothing is NOT an error: the job completes with total 0 and every identifier is listed under unmatched (same convention as the batch delete endpoints).
\- 401 - missing/invalid x-api-key.
\- 403 - insufficient balance to enable monitoring for this selection (body: error + estimate).

Idempotency: re-sending an enable returns already_enabled for users that are already monitored, with no second screening and no second bill. Disabling an unmonitored user returns disabled and changes nothing.

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

\</pre>



      
      

粘贴到

## 概述为所选的[用户实体](https://docs.didit.me/zh/entities/users/overview.md)启用或禁用[持续 AML 监控](https://docs.didit.me/zh/core-technology/aml-screening/continuous-monitoring-aml-screening.md)，其效果与 Business Console 中的 **AML Ongoing monitoring** 操作完全一致。Console 与本端点运行的是同一底层操作，因此规则、计费和结果均相同。请先发送 `estimate_only: true`，以查看选中的用户数量、需要新建 AML 筛查的用户数量、一次性筛查费用以及年度监控费用。试运行不会写入任何数据。## 适用场景- **程序化入驻**：对通过 API 导入或创建的用户开启监控，无需手动重新筛查。
- **离职处理**：对已离开您平台的用户停止监控及其年度续费。
- **成本控制**：在确认之前，预览所选用户的确切成本影响。## 选择的处理方式- **每位用户一次监控筛查。** 同一用户即使多次验证，也只会被监控并计费一次。禁用时，会关闭该用户所有筛查的监控。
- **没有 AML 筛查的用户会先进行筛查。** Didit 会为其新建一次 AML 验证（可在用户的 **Verifications** 标签页中查看），按常规 AML 筛查计费，并在该验证上启用监控。这需要用户的姓名、出生日期和国家/地区；缺少其中任何一项的用户会被标记为 `skipped_no_identity_data`，而不会被静默忽略。
- **被封禁的用户会被跳过**（`skipped_blocked`）。沙盒应用从不创建筛查（`skipped_sandbox`）。
- **会预先检查余额。** 当余额不足以支付预估费用时，启用操作会被拒绝并返回 `403`，响应中会包含预估费用，以便您了解需要充值的金额。
- **年度续费。** 新启用监控的用户将在其下一个续费日期按年度监控价格计费，该日期与 Console 中 **Ongoing monitoring** 列显示的日期相同。禁用会停止续费，但不会对已计费的周期退款。## 选择与批次大小可通过 `vendor_data_list`、`didit_internal_id_list` 或两者同时选择用户，两个列表之间为逻辑或关系。单个请求最多接受 **1000 个标识符**（两个列表合计）。与您应用中任何用户都不匹配的标识符会按原样返回在 `unmatched` 中，且绝不会导致请求失败：如果选择中没有任何匹配项，任务会以空任务完成（`total: 0`），并列出所有标识符，这与批量删除端点的约定一致。## 同步或后台处理包含 **20 名用户或以下**的选择会同步处理，调用返回 `200` 及已完成的任务。更大的选择会返回 `202` 和状态为 `PENDING` 的任务，此时请轮询[获取 AML 监控任务](https://docs.didit.me/zh/management-api/aml-monitoring/get-job.md)，直到 `status` 变为 `COMPLETED` 或 `FAILED`。无论哪种方式，任务都会为每位用户包含一条 `results` 记录，其中含有对应的 `outcome`。| `outcome` | 含义 |
| - | - |
| `enabled` | 已在现有 AML 筛查上启用监控。 |
| `screened_and_enabled` | 已新建 AML 筛查（计费），并在其上启用监控。 |
| `already_enabled` | 监控已处于启用状态；未做任何更改，也未计费。 |
| `disabled` | 已关闭该用户所有筛查的监控。 |
| `skipped_no_identity_data` | 用户缺少进行筛查所需的姓名、出生日期或国家/地区。 |
| `skipped_blocked` | 用户已被封禁。 |
| `skipped_sandbox` | 沙盒应用；不会创建筛查。 |
| `failed_provider` | 筛查无法完成。请稍后重试。 |
| `failed_insufficient_balance` | 任务运行期间余额耗尽。 |## Webhook切换监控本身不会发出任何 Webhook。监控启用后，重新筛查会继续触发[持续 AML 监控](https://docs.didit.me/zh/core-technology/aml-screening/continuous-monitoring-aml-screening.md)中所述的常规 `status.updated` 和 `data.updated` 事件。## 权限应用的任何有效 API 密钥都可以调用此端点。Didit API 密钥的作用域为应用，而非角色：Console 中的[角色与权限](https://docs.didit.me/zh/console/roles-permissions.md)决定的是*人员*在 Console 中可以执行的操作，对 Management API 的流量不做评估。## 相关内容- [获取 AML 监控任务](https://docs.didit.me/zh/management-api/aml-monitoring/get-job.md)
- [为企业切换 AML 监控](https://docs.didit.me/zh/management-api/aml-monitoring/toggle-businesses.md)
- [持续 AML 监控](https://docs.didit.me/zh/core-technology/aml-screening/continuous-monitoring-aml-screening.md)
- [AML 筛查 API](https://docs.didit.me/zh/standalone-apis/aml-screening.md)
- [列出用户](https://docs.didit.me/zh/management-api/users/list.md)


## OpenAPI

````yaml zh/openapi-25.json POST /v3/users/aml-monitoring/
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/users/aml-monitoring/:
    post:
      tags:
        - AML Ongoing Monitoring
      summary: 为用户启用或停用持续 AML 监控
      description: >-
        为所选用户开启或关闭持续 AML 监控，语义与 Business Console 相同。每个用户恰好保留一份受监控的 AML
        筛查，因此即使某个档案验证了多次，也仅监控一次并计费一次；禁用则会关闭该档案所有筛查的监控。没有任何 AML
        筛查的用户，在具备所需的姓名、出生日期和国家/地区时会先进行筛查（按常规 AML 筛查计费）；否则将报告为
        `skipped_no_identity_data`。


        设置 `estimate_only: true` 可预览数量和费用而无需写入任何内容。20
        个或更少档案的选择将以内联方式解析，并在任务完成后返回 `200`；更大的选择将返回 `202` 并在后台运行：使用返回的 `job_id`
        轮询 [Get AML monitoring
        job](#get-/v3/aml-monitoring/jobs/-job_id-/)。当组织余额不足以支付预估费用时，开启操作将被拒绝并返回
        `403`。未匹配到任何内容的标识符列在 `unmatched` 中，绝不会导致请求失败：未匹配到任何内容的选择将作为空任务完成（`total`
        为 0），这与批量删除 endpoint 的约定一致。
      operationId: toggle_users_aml_monitoring
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - is_enabled
              description: >-
                使用 `vendor_data_list`、`didit_internal_id_list`
                或两者同时选择用户（两个列表为“或”逻辑）。两个列表合计每次请求最多 1000 个标识符。
              properties:
                is_enabled:
                  type: boolean
                  description: 为 true 表示启用监控，为 false 表示停用监控。
                estimate_only:
                  type: boolean
                  default: false
                  description: 为 true 时，返回费用估算且不执行任何写入：不进行筛查、不计费、不创建任务。
                vendor_data_list:
                  type: array
                  items:
                    type: string
                  description: 您要切换的用户自身标识符，完全按照发送的内容进行匹配。
                didit_internal_id_list:
                  type: array
                  items:
                    type: string
                    format: uuid
                  description: >-
                    要切换状态的用户的 Didit 内部 ID，即创建、获取和列表 endpoint 返回的
                    `didit_internal_id`。
            examples:
              Estimate first:
                summary: 预览费用而不进行写入
                value:
                  is_enabled: true
                  estimate_only: true
                  vendor_data_list:
                    - user-123
                    - user-456
              Enable:
                summary: 为两名用户启用监控
                value:
                  is_enabled: true
                  vendor_data_list:
                    - user-123
                    - user-456
              Disable:
                summary: 按 Didit 内部 ID 禁用监控
                value:
                  is_enabled: false
                  didit_internal_id_list:
                    - 3f1c0d3e-8f0a-4c2e-9a3d-9b1f5f4a2c11
      responses:
        '200':
          description: 估算结果（当 `estimate_only` 为 true 时）或以内联方式处理的选择的已完成任务。
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AMLMonitoringToggleResult'
        '202':
          description: 较大的选择集将在后台处理。使用 `job_id` 轮询 job endpoint；随着档案的处理，`results` 会逐步填充。
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AMLMonitoringJob'
        '400':
          description: 验证错误：`is_enabled` 缺失、无选择器，或者两个列表中的标识符总数超过 1000 个。
        '401':
          description: API 密钥缺失或无效。
        '403':
          description: 余额不足，无法为此项选择启用监控。响应包含 `estimate`，以便您充值正确的金额。
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                  estimate:
                    type: object
                    description: 费用预览。当 estimate_only 为 true 时直接返回（不写入任何内容）。
                    properties:
                      users_total:
                        type: integer
                        description: 所选条件匹配的档案。
                      already_enabled:
                        type: integer
                        description: 已处于监控状态的档案（启用时无需操作；禁用时将关闭这些档案的监控）。
                      with_existing_aml:
                        type: integer
                        description: 现有 AML 筛查将被切换为受监控状态的档案（不进行新的筛查）。
                      needing_screening:
                        type: integer
                        description: 没有任何 AML 筛查记录、将首先进行筛查的档案（按常规 AML 筛查计费）。
                      skipped_no_identity_data:
                        type: integer
                        description: 因缺少身份数据而无法进行筛查的档案。
                      skipped_blocked:
                        type: integer
                        description: 将被跳过的已拉黑用户（对于企业始终为 0）。
                      estimated_screening_cost_usd:
                        type: number
                        example: 0.2
                        description: 新增筛查的一次性费用。
                      estimated_annual_monitoring_cost_usd:
                        type: number
                        example: 0.07
                        description: 即将纳入监控的档案的年度监控成本。
                      balance_sufficient:
                        type: boolean
                        description: 组织余额是否足以支付筛查以及第一年的监控费用。
      security:
        - ApiKeyAuth: []
      x-codeSamples:
        - lang: curl
          label: curl
          source: >-
            curl -X POST
            'https://verification.didit.me/v3/users/aml-monitoring/' \
              -H 'x-api-key: YOUR_API_KEY' \
              -H 'Content-Type: application/json' \
              -d '{"is_enabled": true, "vendor_data_list": ["user-123", "user-456"]}'
        - lang: python
          label: Python
          source: |-
            from didit import Didit

            # Reads DIDIT_API_KEY.
            client = Didit()

            result = client.users.set_aml_monitoring(
                is_enabled=True,
                estimate_only=True,
                vendor_data_list=["user-123", "user-456"],
            )
            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.users.setAmlMonitoring({
              is_enabled: true,
              estimate_only: true,
              vendor_data_list: ["user-123", "user-456"],
            });
            console.log(result);
        - lang: go
          label: Go
          source: "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.Users.SetAMLMonitoring(ctx, didit.UsersSetAMLMonitoringParams{\n\tIsEnabled:      true,\n\tEstimateOnly:   didit.Bool(true),\n\tVendorDataList: didit.Some([]string{\"user-123\", \"user-456\"}),\n})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
        - lang: java
          label: Java
          source: >-
            import java.util.List;

            import me.didit.Didit;

            import me.didit.types.UsersSetAmlMonitoringParams;


            // Reads DIDIT_API_KEY.

            Didit client = new Didit();


            var result =
            client.users().setAmlMonitoring(UsersSetAmlMonitoringParams.builder()
                    .isEnabled(true)
                    .estimateOnly(true)
                    .vendorDataList(List.of("user-123", "user-456"))
                    .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->users->setAmlMonitoring([
                'is_enabled' => true,
                'estimate_only' => true,
                'vendor_data_list' => ['user-123', 'user-456'],
            ]);
            print_r($result->toArray());
        - lang: ruby
          label: Ruby
          source: |-
            require "didit"

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

            result = didit.users.set_aml_monitoring(
              is_enabled: true,
              estimate_only: true,
              vendor_data_list: ["user-123", "user-456"]
            )
            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.Users.SetAmlMonitoringAsync(new
            UsersSetAmlMonitoringParams

            {
                IsEnabled = true,
                EstimateOnly = true,
                VendorDataList = new string[] { "user-123", "user-456" },
            });

            Console.WriteLine(JsonSerializer.Serialize(result));
components:
  schemas:
    AMLMonitoringToggleResult:
      oneOf:
        - type: object
          required:
            - users_total
            - already_enabled
            - with_existing_aml
            - needing_screening
            - skipped_no_identity_data
            - skipped_blocked
            - estimated_screening_cost_usd
            - estimated_annual_monitoring_cost_usd
            - balance_sufficient
            - unmatched
          description: 费用预览。当 estimate_only 为 true 时直接返回（不写入任何内容）。
          properties:
            users_total:
              type: integer
              description: 所选条件匹配的档案。
            already_enabled:
              type: integer
              description: 已处于监控状态的档案（启用时无需操作；禁用时将关闭这些档案的监控）。
            with_existing_aml:
              type: integer
              description: 现有 AML 筛查将被切换为受监控状态的档案（不进行新的筛查）。
            needing_screening:
              type: integer
              description: 没有任何 AML 筛查记录、将首先进行筛查的档案（按常规 AML 筛查计费）。
            skipped_no_identity_data:
              type: integer
              description: 因缺少身份数据而无法进行筛查的档案。
            skipped_blocked:
              type: integer
              description: 将被跳过的已拉黑用户（对于企业始终为 0）。
            estimated_screening_cost_usd:
              type: number
              example: 0.2
              description: 新增筛查的一次性费用。
            estimated_annual_monitoring_cost_usd:
              type: number
              example: 0.07
              description: 即将纳入监控的档案的年度监控成本。
            balance_sufficient:
              type: boolean
              description: 组织余额是否足以支付筛查以及第一年的监控费用。
            unmatched:
              type: array
              items:
                type: string
              description: 请求中与该应用中的任何档案均不匹配的标识符，与发送时完全一致。
        - type: object
          required:
            - job_id
            - status
            - is_enabled
            - target_type
            - total
            - processed
            - outcomes
            - results
            - error
            - created_at
            - completed_at
            - estimate
            - unmatched
          properties:
            job_id:
              type: string
              format: uuid
            status:
              type: string
              enum:
                - PENDING
                - PROCESSING
                - COMPLETED
                - FAILED
            is_enabled:
              type: boolean
              description: 当任务启用监控时为 true，停用监控时为 false。
            target_type:
              type: string
              enum:
                - user
                - business
              description: 该作业切换哪个配置文件系列。
            total:
              type: integer
              description: 该任务处理的档案。
            processed:
              type: integer
              description: 截至目前已处理的档案。
            outcomes:
              type: object
              description: 每条记录的结果计数器。每个选定的个人资料都会准确归入一个计数器；不会静默跳过任何内容。
              properties:
                enabled:
                  type: integer
                  description: 已在现有 AML 筛查上启用监控。
                screened_and_enabled:
                  type: integer
                  description: 已创建新的 AML 筛查（已计费）并对其启用了监控。
                already_enabled:
                  type: integer
                  description: 监控已处于活动状态；未发生任何更改，也未计费。
                disabled:
                  type: integer
                  description: 已在该档案的所有 AML 筛查中关闭监控。
                skipped_no_identity_data:
                  type: integer
                  description: 已跳过：资料缺少进行筛查所需的姓名、出生日期和国家/地区（用户）或名称（企业）。
                skipped_blocked:
                  type: integer
                  description: 已跳过：用户已被封禁。
                skipped_sandbox:
                  type: integer
                  description: 已跳过：沙盒应用，不创建筛查。
                failed_provider:
                  type: integer
                  description: 无法完成筛查；请稍后重试。
                failed_insufficient_balance:
                  type: integer
                  description: 任务运行时余额耗尽。
            results:
              type: array
              description: >-
                每个已处理的档案对应一个条目，按处理顺序排列。在任务运行期间逐步增加；状态变为 COMPLETED 时完成。仅对通过 API
                启动的任务进行记录。
              items:
                type: object
                properties:
                  didit_internal_id:
                    type: string
                    format: uuid
                    description: 个人资料的 Didit 内部 ID。
                  vendor_data:
                    type: string
                    nullable: true
                    description: 您为资料指定的自身标识符。
                  outcome:
                    type: string
                    enum:
                      - enabled
                      - screened_and_enabled
                      - already_enabled
                      - disabled
                      - skipped_no_identity_data
                      - skipped_blocked
                      - skipped_sandbox
                      - failed_provider
                      - failed_insufficient_balance
            error:
              type: string
              nullable: true
              description: 状态为 FAILED 时的通用失败消息；详细原因保留在平台端。
            created_at:
              type: string
              format: date-time
            completed_at:
              type: string
              format: date-time
              nullable: true
            estimate:
              type: object
              description: 费用预览。当 estimate_only 为 true 时直接返回（不写入任何内容）。
              properties:
                users_total:
                  type: integer
                  description: 所选条件匹配的档案。
                already_enabled:
                  type: integer
                  description: 已处于监控状态的档案（启用时无需操作；禁用时将关闭这些档案的监控）。
                with_existing_aml:
                  type: integer
                  description: 现有 AML 筛查将被切换为受监控状态的档案（不进行新的筛查）。
                needing_screening:
                  type: integer
                  description: 没有任何 AML 筛查记录、将首先进行筛查的档案（按常规 AML 筛查计费）。
                skipped_no_identity_data:
                  type: integer
                  description: 因缺少身份数据而无法进行筛查的档案。
                skipped_blocked:
                  type: integer
                  description: 将被跳过的已拉黑用户（对于企业始终为 0）。
                estimated_screening_cost_usd:
                  type: number
                  example: 0.2
                  description: 新增筛查的一次性费用。
                estimated_annual_monitoring_cost_usd:
                  type: number
                  example: 0.07
                  description: 即将纳入监控的档案的年度监控成本。
                balance_sufficient:
                  type: boolean
                  description: 组织余额是否足以支付筛查以及第一年的监控费用。
            unmatched:
              type: array
              items:
                type: string
              description: 请求中与该应用中的任何档案均不匹配的标识符，与发送时完全一致。它们不属于任务的一部分。
    AMLMonitoringJob:
      type: object
      properties:
        job_id:
          type: string
          format: uuid
        status:
          type: string
          enum:
            - PENDING
            - PROCESSING
            - COMPLETED
            - FAILED
        is_enabled:
          type: boolean
          description: 当任务启用监控时为 true，停用监控时为 false。
        target_type:
          type: string
          enum:
            - user
            - business
          description: 该作业切换哪个配置文件系列。
        total:
          type: integer
          description: 该任务处理的档案。
        processed:
          type: integer
          description: 截至目前已处理的档案。
        outcomes:
          type: object
          description: 每条记录的结果计数器。每个选定的个人资料都会准确归入一个计数器；不会静默跳过任何内容。
          properties:
            enabled:
              type: integer
              description: 已在现有 AML 筛查上启用监控。
            screened_and_enabled:
              type: integer
              description: 已创建新的 AML 筛查（已计费）并对其启用了监控。
            already_enabled:
              type: integer
              description: 监控已处于活动状态；未发生任何更改，也未计费。
            disabled:
              type: integer
              description: 已在该档案的所有 AML 筛查中关闭监控。
            skipped_no_identity_data:
              type: integer
              description: 已跳过：资料缺少进行筛查所需的姓名、出生日期和国家/地区（用户）或名称（企业）。
            skipped_blocked:
              type: integer
              description: 已跳过：用户已被封禁。
            skipped_sandbox:
              type: integer
              description: 已跳过：沙盒应用，不创建筛查。
            failed_provider:
              type: integer
              description: 无法完成筛查；请稍后重试。
            failed_insufficient_balance:
              type: integer
              description: 任务运行时余额耗尽。
        results:
          type: array
          description: >-
            每个已处理的档案对应一个条目，按处理顺序排列。在任务运行期间逐步增加；状态变为 COMPLETED 时完成。仅对通过 API
            启动的任务进行记录。
          items:
            type: object
            properties:
              didit_internal_id:
                type: string
                format: uuid
                description: 个人资料的 Didit 内部 ID。
              vendor_data:
                type: string
                nullable: true
                description: 您为资料指定的自身标识符。
              outcome:
                type: string
                enum:
                  - enabled
                  - screened_and_enabled
                  - already_enabled
                  - disabled
                  - skipped_no_identity_data
                  - skipped_blocked
                  - skipped_sandbox
                  - failed_provider
                  - failed_insufficient_balance
        error:
          type: string
          nullable: true
          description: 状态为 FAILED 时的通用失败消息；详细原因保留在平台端。
        created_at:
          type: string
          format: date-time
        completed_at:
          type: string
          format: date-time
          nullable: true
        estimate:
          type: object
          description: 费用预览。当 estimate_only 为 true 时直接返回（不写入任何内容）。
          properties:
            users_total:
              type: integer
              description: 所选条件匹配的档案。
            already_enabled:
              type: integer
              description: 已处于监控状态的档案（启用时无需操作；禁用时将关闭这些档案的监控）。
            with_existing_aml:
              type: integer
              description: 现有 AML 筛查将被切换为受监控状态的档案（不进行新的筛查）。
            needing_screening:
              type: integer
              description: 没有任何 AML 筛查记录、将首先进行筛查的档案（按常规 AML 筛查计费）。
            skipped_no_identity_data:
              type: integer
              description: 因缺少身份数据而无法进行筛查的档案。
            skipped_blocked:
              type: integer
              description: 将被跳过的已拉黑用户（对于企业始终为 0）。
            estimated_screening_cost_usd:
              type: number
              example: 0.2
              description: 新增筛查的一次性费用。
            estimated_annual_monitoring_cost_usd:
              type: number
              example: 0.07
              description: 即将纳入监控的档案的年度监控成本。
            balance_sufficient:
              type: boolean
              description: 组织余额是否足以支付筛查以及第一年的监控费用。
        unmatched:
          type: array
          items:
            type: string
          description: 请求中与该应用中的任何档案均不匹配的标识符，与发送时完全一致。它们不属于任务的一部分。
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: x-api-key
      description: >-
        您的应用 API 密钥，可在 Business Console 的“开发者 -> API
        密钥”中获取。主密钥拥有完整访问权限。指定名称的密钥可设置作用域：针对每个资源设为无权限、只读或读写，限定于特定工作流或已通过的会话、限定于
        IP 地址列表，以及设置到期日期。401 表示密钥错误、已撤销或已过期；403 表示未发送密钥、密钥无权访问该资源或操作，或请求来自其 IP
        列表之外的地址；在会话路由上返回 404 表示该会话不在该密钥允许的工作流或状态范围内。没有媒体访问权限的密钥获取到的图片、视频和 PDF
        URL 将为 null；没有会话写入权限的密钥获取到的会话链接和 token 将为 null。请参阅
        https://docs.didit.me/console/api-keys。

````

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