> ## Documentation Index
> Fetch the complete documentation index at: https://docs.didit.me/llms.txt
> Use this file to discover all available pages before exploring further.

# 数据库核验 API：官方登记数据库 KYC

> Didit 提供高性价比且快速的按次付费政府登记处核验 API。低至 $0.05/check，覆盖 60+ 个上线国家/地区，支持在官方库留有照片时进行生物识别人脸比对。

Didit 的**数据库核验**根据相应国家/地区的权威数据源核验个人的身份数据，包括最初签发该证件的国家民事登记处、税务机关、选民名册、征信机构或生物识别登记处。每次核查都会返回逐字段匹配结果（`identification_number`、`first_name`、`last_name`、`date_of_birth`，以及该服务所使用的地址字段），并返回综合结果，以及在可用时返回底层记录详情。这是防范合成身份欺诈的最强防线：被盗用的真实 DNI 或 CPF 无法通过登记处核对，而伪造的号码根本不会出现在官方数据库中。在登记处保存有官方照片的国家/地区（阿根廷通过 RENAPER，巴拿马通过 Tribunal Electoral SIB / SIB Plus），数据库核验可与我们的生物识别人脸比对结合使用，因此您不仅可以确认号码的真实性，还可以确认**摄像头前的人就是该证件的所有者**。

数据库核验集成提示词



      
      

\<pre>

\````# Goal
Integrate Didit Database Validation (verify identity data against authoritative national registries) into your app. Pick ONE mode.

\# Mode A — Session-based
Use this when Database Validation runs as a step in a hosted Didit flow. Fields are auto-fed into the registry lookup from the steps in front of it — ID Verification, NFC, Liveness, Phone/Email Verification, Proof of Address, Document AI or a Questionnaire. An ID Verification step is not required.

1\. Add the DATABASE_VALIDATION feature to the workflow (Business Console or POST /v3/workflows/). Optionally pin specific services per country.
2\. Create a session — POST /v3/session/ with { workflow_id, vendor_data, callback }. See /sessions-api/create-session.
3\. Open session.url for the user (or mount the Web/Mobile SDK).
4\. Fetch the decision — GET /v3/session/{sessionId}/decision/ or subscribe to session.status.updated.

Decision surface: `database_validations[]` array on the decision payload.

\# Mode B — Standalone API (server-to-server)
Use when you already have the identity data and want a one-shot registry check.

POST https://verification.didit.me/v3/database-validation/
multipart/form-data — x-api-key: YOUR_API_KEY

curl example (Brazil CPF):
\```bash
curl -X POST 'https://verification.didit.me/v3/database-validation/' \
-H "x-api-key: $DIDIT_API_KEY" \
-F "issuing_state=BRA" \
-F "identification_number=00000000191" \
-F "first_name=Jane" \
-F "last_name=Doe" \
-F "date_of_birth=1990-01-15" \
-F "vendor_data=user-1234"
\```
Returns: { request_id, database_validation: { match_type: "full_match"|"partial_match"|"no_match", validation_type, services_used, match_score, validations: [{ service, status, matched_fields, record_details }], warnings: [...] } }.

\# Important behaviour
\- Use `identification_number` (universal field) — Didit maps it to CPF/RUT/CURP/DNI/etc. by issuing_state.
\- Omit `services` to run the country's default service only. Pass `services=["bra_cpf"]` (etc.) to choose which services run — list several to run more than one.
\- Argentina (`arg_renaper`) and Panama (`pan_sib`) take an extra `selfie` (JPG/PNG/WebP up to 2 MB) and `gender` for biometric face-match against the registry photo.
\- Services flagged `requires_consent=true` in the catalog require `consent=true` (HTTP 400 otherwise).
\- Billing is **per successful service hit** — multi-service requests can produce multiple usage events.

\# Status / match_type
status: "Approved" | "In Review" | "Declined" (per the partial-match / no-match actions configured on the workflow)
match_type: "full_match" | "partial_match" | "no_match"

\# Warnings (LogWarningChoices.DATABASE_VALIDATION)
warnings[] risk codes include:
DATABASE_VALIDATION_NO_MATCH, DATABASE_VALIDATION_PARTIAL_MATCH, COULD_NOT_PERFORM_DATABASE_VALIDATION (biometric outcomes surface via per-service outcome_code, e.g. BIOMETRIC_NO_MATCH).
Full catalogue: /core-technology/database-validation/database-validation-warnings.

\# Failure modes to handle
\- HTTP 400 — service id not eligible for issuing_state, missing required field, missing consent for PAYGO services.
\- HTTP 502 with validation_errors[] — every selected upstream service failed; request is **not billed** and a COULD_NOT_PERFORM_DATABASE_VALIDATION log is written. Retry later or fall back to OCR-only.
\- match_type="no_match" — record not in registry; treat as synthetic identity per policy.
\- match_type="partial_match" — some fields match, others don't (e.g. DOB matches, name doesn't); route to review.

\# See also
\- Canonical schema: /reference/data-models#database-validation
\- Per-feature report: /core-technology/database-validation/database-validation-report
\- Risk catalogue: /core-technology/database-validation/database-validation-warnings
\- Outcome codes: /core-technology/database-validation/database-validation-outcome-codes
\- Full integration playbook: /integration/integration-prompt````

\</pre>

## 为什么选择 Didit- **最便宜的按次计费价格。** 每次核查最低仅需 **\$0.05**（多米尼加共和国），最高为 **\$7.00**（最昂贵的专业数据源）。价格按服务而非按国家/地区设定：收取高批发费率的登记处其定价也相应调整（芬兰国民身份证为 **\$2.10**）。请务必查阅[各项服务定价表](https://docs.didit.me/zh/getting-started/database-validation-pricing.md)以了解您计划调用的具体服务的费率。无每月最低消费，无平台费用，无席位计费，仅对成功的查询收费。
- **最快集成。** [注册](https://business.didit.me/)，从控制台获取 API 密钥，几分钟内即可调用 `POST /v3/database-validation/`。无需销售沟通，无需采购周期，无需概念验证文档，Didit 完全支持自助服务。
- **直接对接权威数据源。** RENAPER、Receita Federal (SERPRO)、Tribunal Electoral、RENAPO、RENAP、RNP、RNPN、Junta Central Electoral、Registraduría Nacional、SEGIP、Servicio de Registro Civil、Tribunal Supremo de Elecciones、Dirección General de la Policía，而非聚合器抓取的数据。
- **在登记处存档有官方照片时提供生物识别人脸比对。** 无需额外的集成工作，即可获得高于 OCR 的置信度。
- **生产就绪的低延迟。** 端到端 p95 通常低于 1.5 s，季度可用性达 99.9%。Academy 中关于解读验证结果的课程在 11:05 处介绍了数据库核验，并展示了完全匹配、部分匹配和不匹配的结果。[数据库核验：完全匹配、部分匹配与不匹配 — Didit Academy](https://www.youtube.com/embed/7htTWCWsl60?start=665\&rel=0\&playsinline=1)## 全球覆盖将鼠标悬停在任何高亮显示的国家/地区上，即可查看我们在该处运行的每项数据库核验服务、数据领域（身份、金融、生物识别、地址、电信等）以及每次调用的价格。已上线的国家/地区现已可直接用于生产环境；其余国家/地区则在客户提出需求后按需接入。Live Database Validation coverageProduction-ready countries and the cheapest live service available in each.LIVE<details><summary>Show on-demand catalog countries ()</summary></details>> [!TIP]
>
> **没有找到您所在的国家/地区？** 请与我们联系，我们的目录涵盖 60+ 个国家/地区及数百项服务，可在客户需要时按需激活。新的集成通常在 2–3 周内上线。## 数据库核验的运行机制数据库核验绝不会凭空触发。只有在满足以下**全部**条件时，它才会运行：1) 会话已解析出要查询的国家/地区：来自[身份证件验证](https://docs.didit.me/zh/core-technology/id-verification/overview.md)的 `issuing_state`，或者当工作流中没有身份证件验证步骤时，来自数据库核验步骤所配置的唯一国家/地区。
2) 该国家/地区在工作流中已启用至少一项数据库核验服务。
3) 数据库核验步骤之前的各个步骤已提供所选服务所需的**每一个必需字段**。如果某项服务已启用但所需的必需字段始终未提供（例如，由于巴西 RG 证件字迹模糊而无法提取 CPF），则该服务将被跳过，**不会对您计费**，并在会话中触发警告：当证件根本不包含该服务查询所需的标识符时，触发 `DATABASE_VALIDATION_NOT_APPLICABLE`；当该标识符本应可用却缺失时，触发 `COULD_NOT_PERFORM_DATABASE_VALIDATION`。两者均列在[警告目录](https://docs.didit.me/zh/core-technology/database-validation/database-validation-warnings.md)中。您团队中拥有该会话审核权限的人员随后可以在 Console 的会话详情页面中手动填补缺失字段，保存后将自动重新触发核验。这是一项审核员操作，终端用户无法执行。若要允许**用户**提供其证件上没有的字段，请在问卷中收集（或通过 Document AI 提取，或在创建会话时传入该值），并在数据库核验步骤中进行映射，具体如下文所述。### 数据库核验无需身份证件验证以往，数据库核验步骤通常意味着前面必须有一个身份证件验证步骤，因为身份证件的 OCR 是获取终端用户数据的唯一接入方式。现在情况已不再如此：**每个必需字段都会声明哪些步骤可以提供它**，只要您的工作流中包含能够提供其所需全部字段的步骤，该服务就会立即可用。| 输入来源 | 提供内容 |
| - | - |
| 身份证件验证 | 姓名、出生日期、地址、证件号/个人编号，以及身份证件上印制的特定国家/地区标识符（税号、国民身份证号、护照号、驾驶执照号……） |
| NFC | 上述内容的芯片读取子集，具有更高的可信度 |
| 活体检测 | 实时自拍照，用于人脸生物识别登记库服务 |
| 电话验证 | 已验证的电话号码 |
| 邮箱验证 | 已验证的邮箱地址 |
| 地址证明 | 已验证的居住地址及其组成部分 |
| Document AI | 您映射到任一提取字段键的任意字段 |
| 问卷 | 您映射到任一问题的任意字段 |
| API 输入 | 独立 API 上的任意内容，由调用方直接提供对应值 |这意味着**仅凭活体检测步骤即可运行人脸生物识别服务**，整个工作流中无需任何身份证件；而以税号、电话号码或邮箱为键的服务，则可以通过问卷答案、电话/邮箱验证步骤或 Document AI 提取来满足。两条规则确保了这种机制的安全性：- **没有身份证件验证的工作流必须**在数据库核验步骤中仅配置一个国家/地区。由于没有来自证件的 `issuing_state`，这是确定要查询哪个国家登记库的唯一明确信号，因此没有身份证件验证的多国家/地区配置将不会运行任何核验，以避免盲目猜测。
- **必需字段检查保持不变。**如果某项服务所需的字段在运行时未全部就绪，该服务将在查询任何提供商之前被跳过，因此您绝不会为从未查询过的数据库付费。#### 映射 Document AI 和问卷字段Document AI 提取字段和问卷中的问题使用*您*的键名，而非 Didit 的键名。如果键名与数据库核验的输入名称完全匹配（`tax_number`、`date_of_birth`、`phone`……），系统将自动完成映射，无需任何额外配置。对于其他所有情况，工作流编辑器会在数据库核验步骤上针对仍未填充的字段显示一个选择器，您可以将每个字段指向提供该字段的 Document AI 字段键或问卷答案。在 Console 中，工作流当前尚无法运行的服务会显示为已禁用并注明原因（缺失哪些字段以及哪个步骤可以提供这些字段），编辑器还会提示为您添加该步骤。添加该步骤后，它所解锁的每项服务都将立即点亮。> [!TIP]
>
> **实际示例：证件上未载明的标识符。**尼日利亚的国民身份服务通过 11 位 NIN 进行查询，而用户上传的证件上往往没有印制该号码，因此仅依赖身份证件会导致很大一部分用户的核验因不适用而被跳过。您可以在数据库核验步骤之前添加一个**问卷**步骤来收集 NIN，然后在数据库核验步骤中将 `national_id` 映射到该问题。同样的映射机制也可以让证件上完全不存在的标识符（如银行核验码、公司注册号）在工作流中得以使用。对于基于地址的服务，Didit 会自动将身份证件中的单个 `address` 拆分为结构化地址元素：| Didit 字段 | 含义 |
| - | - |
| `address_element_1` | 街道地址，包括门牌号和街道类型 |
| `address_element_2` | 可选的单元、建筑物、楼层或补充地址行 |
| `address_element_3` | 郊区、区、地区或社区/街区 |
| `address_element_4` | 城市、城镇、州、省或大区 |
| `address_element_5` | 邮政编码 |调用独立 API 时，您可以直接发送单个 `address` 或这些结构化字段。当两者同时存在时，以结构化字段为准。需要地址搜索的服务需要 `address_element_1` 以及至少另一个地址元素；如果 Didit 无法从工作流中的身份证件或地址证明中推导出这些元素，该服务将被跳过且不计费。如果解析出的国家/地区根本未启用，该步骤将被直接跳过，不会发出警告，也不会产生费用。![Didit 数据库核验流程正在根据政府身份登记库核查用户数据](https://mintcdn.com/didit-0f962782/z6T2GHM4Zh-iSj-K/images/database-validation-how-it-works.png?fit=max\&auto=format\&n=z6T2GHM4Zh-iSj-K\&q=85\&s=3d5bb0df058265af0d8728cd60a78416)## 匹配结果每个启用的服务都会返回逐字段核验结果：| 字段 | 结果 |
| - | - |
| `identification_number` | `full_match` · `partial_match` · `no_match` |
| `first_name` | `full_match` · `partial_match` · `no_match` |
| `last_name` | `full_match` · `partial_match` · `no_match` |
| `date_of_birth` | `full_match` · `no_match` |
| `address` | `full_match` · `partial_match` · `no_match` |汇总后的 `match_type` 归纳为：- **`full_match`**：所有请求的字段均与至少一个数据源一致。
- **`partial_match`**：部分一致；根据您的工作流规则路由至审核队列。
- **`no_match`**：没有数据源确认该数据；通常予以拒绝。## 匹配是如何推导的 (1×1 / 2×2)我们不再要求您预先选择“1×1”或“2×2”，这些结果是根据有多少个不同服务完全匹配了输入数据推导而来的：- **1×1 结果**：一个服务返回了完全匹配（单个权威数据源确认了该数据）。
- **2×2 结果**：两个或更多服务返回了完全匹配（独立交叉验证；我们所能表达的最高置信度）。每个工作流可以针对每个国家/地区启用任意数量的服务；系统仅针对实际返回结果的服务计费。无法提取必填字段的服务将被跳过，不收取任何费用。➡️ 参见**[匹配方法](https://docs.didit.me/zh/core-technology/database-validation/database-validation-matching-methods.md)**，了解完整的决策逻辑及其如何与 `partialMatchAction` / `noMatchAction` 交互。## 生物识别数据库核验一些国家/地区的人口登记机构会公开生物特征模板（头像或指纹）。在可用时，我们会将登记库查询与针对用户自拍照的**生物识别人脸比对**相结合：- **阿根廷（`arg_renaper`）**：与档案中的官方 RENAPER 照片进行生物识别人脸比对。人口覆盖率达 100%；所有持有 DNI 的阿根廷公民均在数据库中。
- **巴拿马（`pan_cedula_sib`、`pan_cedula_sib_plus`）**：与选举法院（Tribunal Electoral）SIB 服务进行生物识别人脸比对。SIB Plus 是更高级别的变体，具有更严格的生物识别阈值和更丰富的匹配元数据。对于这些服务，`selfie` 字段为**必填**。在会话流程中，我们优先复用活体检测自拍照（质量最高），否则使用证件肖像照。在会话之外调用独立 API（`POST /v3/database-validation/`，即上述模式 B）时，您需要自行提供 JPEG/PNG。## 全球身份信息增强`glb_identity_enrichment` 是一项**仅支持独立调用的全球性**数据库核验服务。它可以通过电子邮箱和/或电话号码解析关联人员（姓名、出生日期、地址、电话、电子邮箱以及国民身份证件号码），并返回姓名匹配分数，映射到标准[结果代码](https://docs.didit.me/zh/core-technology/database-validation/database-validation-outcome-codes.md) `MATCH` / `PARTIAL_MATCH` / `NO_MATCH` / `DOCUMENT_NOT_FOUND`（对应的 `match_type` 为 `full_match` / `partial_match` / `no_match`）。由于它是一项基于邮箱/电话而非证件签发国家/地区的全球（`GLB`）服务，因此它**在工作流构建器中不可用**。请直接通过独立 API 调用，并将 `issuing_state` 设置为 `GLB`：```json theme={null}
POST /v3/database-validation/
{
  "issuing_state": "GLB",
  "services": ["glb_identity_enrichment"],
  "email": "john.doe@example.com",
  "phone": "+14155552671"
}
```其计费标准为**每次请求 \$0.20**（仅在提供商返回结果时收费）。## 配置数据库核验可在 Console 中按工作流进行配置。对于每个国家/地区，您可以选择要运行的具体服务；必填和可选的输入字段由这些服务所需字段的并集确定。针对 `partial_match` 和 `no_match` 结果所采取的操作可以单独配置，可选值为 `approve`、`review` 或 `decline`。![Didit 数据库核验 Console 设置，用于选择各国家/地区的登记库服务和结果规则](https://mintcdn.com/didit-0f962782/z6T2GHM4Zh-iSj-K/images/database-validation-console.png?fit=max\&auto=format\&n=z6T2GHM4Zh-iSj-K\&q=85\&s=2e1ac27f07fa9ca9c54108c6fd19a6b3)## 可用性通知政府登记系统和其他数据源偶尔会出现故障。当某个数据库无法访问时，针对它的核验将不会返回结果，且不会产生计费。在工作流内部，该服务的结果将解析为 [`REGISTRY_UNAVAILABLE`](https://docs.didit.me/zh/core-technology/database-validation/database-validation-outcome-codes)。在独立 API 上，同样的故障会以三种形式之一呈现，因此请务必同时查看每个服务的结果**并且**检查 `database_validation.errors[]`，切勿仅依赖 HTTP 状态：- `200`，且 `validations` 中该服务显示为 `outcome_code: "REGISTRY_UNAVAILABLE"`：当 Didit 保留了该服务的结果以便报告时。
- `200`，且该服务出现在 `database_validation.errors[]` 中，显示为 `code: "empty_provider_response"`、`retryable: true`：当该服务完全未生成可用响应，但另一个选定服务返回了可用响应时。此时发生故障的服务不会出现在 `validations` 和 `services_used` 中，因此 `errors[]` 是其唯一出现的区域。
- `502`，包含 `validation_errors[].code: "empty_provider_response"` 和 `retryable: true`：当所选服务均未返回可用结果时（请参阅[被拒绝的输入和不可用的结果](https://docs.didit.me/zh/standalone-apis/database-validation.md#被拒绝的输入与不可用的结果)）。整体 `status` 遵循确实给出了响应的服务，因此其本身并不能作为可靠的故障信号。如果请求中没有任何可供比对的数据，则会转入审核中状态（`In Review`）；但是，若一个请求选择了多个服务，即便其中一个数据源不可用，它仍可能根据另一个服务的匹配结果返回已通过状态（`Approved`）。请针对 `errors[]` 中出现故障的服务进行重试，而不是重试整个请求。上述任何一种表现形式都与被验证的人员本身无关。Didit 会对各个数据库的实际核验结果进行实时监控，当出现持续性中断而非单次请求失败时，系统会向您的组织发送电子邮件：| 电子邮件 | 发送时机 | 说明内容 |
| - | - | - |
| **数据库中断** | 某个数据库出现故障持续至少 10 分钟，且在此期间几乎所有核验均未获得响应。短时间的偶发性故障或单次失败绝不会触发此邮件。 | 受影响的数据库和国家/地区，以及首次观察到故障的时间。在访问恢复之前，核验可能不会返回结果；这并不意味着提交的身份无效。 |
| **数据库访问已恢复** | 实际核验已恢复响应至少 5 分钟，且无任何失败。业务低峰期绝不算作恢复，因此流量较低的数据库需要更长时间来确认这两种状态。 | 确认恢复的时间。在中断期间未能完成的验证**不会**自动重新处理：请对其进行审查并重试。 |通知会发送给在过去 48 小时内针对该特定数据库运行过核验的每个组织的成员和计费联系人。无需进行任何配置，也不需要主动开启。沙盒流量绝不会触发这些通知，由于您发送的数据（被拒绝或格式错误的数据输入）或由使用您组织自行连接的凭据运行的服务所导致的失败，同样不会触发通知。通过备用数据源获得响应的核验算作可用，明确的无匹配结果同样算作可用。## 定价 — 仅为您使用的部分付费数据库核验按**每个服务每次成功的查询**计费，费率按照该服务公布的费率执行。费率从每次核验 **\$0.05**（多米尼加共和国，通过中央选举委员会）到最昂贵的专业数据源高达 **\$7.00** 不等。许多政府登记查询的费用在 **USD 0.20 到 USD 0.30** 区间内，但有相当一部分数据源成本要高得多，因为数据源本身收取的费用更高 — 例如芬兰国民身份证（`fin_national_id`）每次成功的查询为 **\$2.10**。请根据[定价表](https://docs.didit.me/zh/getting-started/database-validation-pricing.md)中各国家/地区对应的行进行计价，切勿使用区间估算。无月度最低消费、无承诺、亦无平台费用。您仅在服务返回结果时付费。因缺少输入数据而跳过的服务不会被计费，数据源调用本身失败的服务同样不计费 - 登记系统错误或无法访问的登记系统（`REGISTRY_ERROR` / `REGISTRY_UNAVAILABLE`）意味着查询从未得到响应，因此不属于计费结果。无论是通过工作流运行，还是通过独立的 `POST /v3/database-validation/` API 运行，每次成功的登记系统查询都从第 1 次开始计费。它将与其他任何核验一样从您的套餐额度或充值余额中扣除，并且您的套餐折扣适用于其全部价格。请参阅[定价页面](https://docs.didit.me/zh/getting-started/pricing.md#折扣)。➡️ [数据库核验定价](https://docs.didit.me/zh/getting-started/database-validation-pricing.md) · [注册并获取 API 密钥](https://business.didit.me/)## 所有服务

\<table><thead><tr><th>国家/地区</th>
            \<th>ISO3</th>
            \<th>服务</th>
            \<th>描述</th>
            \<th>价格（美元）</th></tr></thead>
        \<tbody /></table>

## 继续阅读- [匹配方法](https://docs.didit.me/zh/core-technology/database-validation/database-validation-matching-methods.md) — 1×1 / 2×2 结果的计算方式以及如何对其进行处理。
- [结果代码](https://docs.didit.me/zh/core-technology/database-validation/database-validation-outcome-codes.md) — 完整的供应商响应代码列表（已故、未成年人、未找到证件、生物识别不匹配等）以及它们如何映射到会话决策。
- [警告](https://docs.didit.me/zh/core-technology/database-validation/database-validation-warnings.md) — 当服务因缺少数据而无法运行时，我们提示的警告信息。
- [报告](https://docs.didit.me/zh/core-technology/database-validation/database-validation-report.md) — 包含国家/地区、服务 ID、用量、单价和总费用的每月按服务计费导出报表。
- [支持的国家/地区](https://docs.didit.me/zh/core-technology/database-validation/database-validation-supported-countries.md) — 我们当前覆盖的所有国家/地区的静态表格视图。


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