> ## 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です。1回$0.05から、60+の国で提供し、写真を保有するレジストリでは顔照合にも対応します。

Diditの**データベース検証**は、本人のID情報を、その国の信頼できる一次情報源(そもそも書類を発行した国の住民登録簿、税務当局、選挙人名簿、信用情報機関、生体情報レジストリ)と照合します。各チェックは、フィールドごとの一致結果(`identification_number`、`first_name`、`last_name`、`date_of_birth`、サービスが利用する場合は住所フィールド)に加え、総合結果と、取得できる場合は元のレコード詳細を返します。合成ID詐欺に対する最も強力な防御策です。盗まれた実在のDNIやCPFはレジストリ照会で失敗し、でっち上げた番号は公式データベースにそもそも存在しません。レジストリが公式の顔写真を保有している国(RENAPER経由のアルゼンチン、Tribunal Electoral SIB / SIB Plus経由のパナマ)では、データベース検証をDiditの生体顔照合と組み合わせることで、番号が実在することだけでなく、**カメラの前にいる本人がその番号の持ち主であること**まで確認できます。

データベース検証の連携プロンプト
        Copy prompt to clipboard



      
      

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



      
      

Paste into

## Diditが選ばれる理由- **従量課金で最安水準の料金。** 1回の確認あたり、**\$0.05**(ドミニカ共和国)から、最も高額な専門ソースの\*\*\$7.00**まで。料金は国ごとではなくサービスごとに設定されており、卸売料金が高いレジストリはそれに応じた価格になります(フィンランドの国民IDは**\$2.10\*\*です)。呼び出す予定のサービスの料金は、必ず[サービス別の料金表](https://docs.didit.me/getting-started/database-validation-pricing.md)で確認してください。月額の最低料金、プラットフォーム利用料、ユーザー単位の課金はなく、成功したクエリにのみ課金されます。
- **最短で導入可能。** [サインアップ](https://business.didit.me/)し、コンソールからAPIキーを取得すれば、数分で`POST /v3/database-validation/`を呼び出せます。営業との打ち合わせ、調達手続き、PoCの書類は不要で、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秒未満、四半期ごとの可用性は99.9%です。Academyの「検証結果の読み方」のレッスンでは、11:05からデータベース検証を取り上げ、完全一致、部分一致、不一致の結果を確認します。[データベース検証: 完全一致、部分一致、不一致 — Didit Academy](https://www.youtube.com/embed/7htTWCWsl60?start=665\&rel=0\&playsinline=1)## 対応地域ハイライトされた国にカーソルを合わせると、その国で提供しているすべてのデータベース検証サービス、データ領域(ID、金融、生体、住所、通信など)、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/ja/core-technology/id-verification/overview.md)の`issuing_state`から特定されるか、ワークフローに本人確認ステップがない場合は、データベース検証ステップに設定された単一の国から特定されます。
2) その国で、ワークフローに少なくとも1つのデータベース検証サービスが有効になっていること。
3) データベース検証ステップより前のステップが、選択したサービスに必要な**すべての必須フィールド**を提供したこと。サービスが有効でも必須フィールドが得られなかった場合(たとえば、不鮮明なブラジルのRGからCPFを抽出できなかった場合)、そのサービスはスキップされ、**課金されず**、セッションに警告が記録されます。書類にそのサービスが照会に使う識別子が単に記載されていない場合は`DATABASE_VALIDATION_NOT_APPLICABLE`、利用できるはずなのに得られなかった場合は`COULD_NOT_PERFORM_DATABASE_VALIDATION`です。どちらも[警告カタログ](https://docs.didit.me/core-technology/database-validation/database-validation-warnings.md)に記載されています。セッションのレビュー権限を持つチームメンバーは、コンソールのセッション詳細ページから不足しているフィールドを手動で入力でき、保存すると自動的にチェックが再実行されます。これはレビュー担当者の操作であり、エンドユーザーが行えるものではありません。書類に記載のないフィールドを**ユーザー**に入力してもらうには、アンケート(またはDocument AIによる抽出、セッション作成時に渡す値)で入力を求め、後述のとおりデータベース検証ステップでマッピングします。### データベース検証に本人確認は不要以前は、データベース検証ステップの前に本人確認ステップが必要でした。エンドユーザーのデータを取得する手段が、ID書類のOCRしか用意されていなかったためです。現在はそうではありません。**各必須フィールドが、どのステップから供給できるかを宣言**しており、サービスが必要とするすべてのフィールドをワークフロー内のステップが供給できれば、そのサービスが利用可能になります。| 入力元 | 供給する内容 |
| - | - |
| 本人確認 | 氏名、生年月日、住所、書類番号・個人番号、ID上に記載された国固有の識別子(納税者番号、国民ID、パスポート番号、運転免許証番号など) |
| NFC | 上記のうちチップから読み取れるもの(より高い信頼度) |
| ライブネス検知 | 顔生体レジストリサービス向けのライブ自撮り |
| 電話番号検証 | 検証済みの電話番号 |
| メールアドレス認証 | 検証済みのメールアドレス |
| 住所証明 | 検証済みの居住地住所とその構成要素 |
| Document AI | 抽出フィールドキーのいずれかにマッピングした任意のフィールド |
| アンケート | 質問のいずれかにマッピングした任意のフィールド |
| APIの入力 | スタンドアロンAPIでは何でも - 呼び出し元が値を直接渡します |このため、**顔生体サービスは、ワークフロー内にID書類がなくてもライブネス検知ステップだけで実行できます**。納税者番号、電話番号、メールアドレスをキーにするサービスは、アンケートの回答、電話番号・メールアドレスの検証ステップ、Document AIの抽出結果のいずれかで条件を満たせます。安全性を保つため、次の2つのルールがあります。- **本人確認がないワークフローでは、データベース検証ステップに国をちょうど1つだけ設定する必要があります。** 書類の`issuing_state`がない場合、どの国のレジストリを照会するかを一意に決められる手がかりはこれだけです。そのため、本人確認なしで複数の国を設定すると、推測で動くのではなく何も実行されません。
- **必須フィールドのチェックは変わりません。** 実行時にフィールドが揃っていないサービスは、プロバイダーに照会する前にスキップされるため、問い合わせていないデータベースに課金されることはありません。#### Document AIとアンケートのフィールドをマッピングするDocument AIの抽出フィールドやアンケートの質問には、Diditのキー名ではなく*お客様の*キー名を使用します。データベース検証の入力名(`tax_number`、`date_of_birth`、`phone`など)とキーが完全に一致する場合は自動でマッピングされ、設定は不要です。それ以外の場合は、ワークフローエディターのデータベース検証ステップに、まだ埋まっていないフィールド用のピッカーが表示されます。そこで、各フィールドを供給するDocument AIのフィールドキーまたはアンケートの回答に紐付けます。コンソールでは、ワークフローがまだ実行できないサービスは、不足しているフィールドと、それを提供するステップという理由とともに無効状態で表示され、エディターがそのステップの追加を提案します。追加すると、それによって利用可能になるすべてのサービスがすぐに有効になります。> [!TIP]
>
> **活用例 - 書類に記載のない識別子。** ナイジェリアの国民IDサービスは、11桁のNINで照会しますが、アップロードされる書類にNINが記載されていないことが多く、ID書類だけに頼ると、多くのユーザーでチェックが対象外としてスキップされます。データベース検証ステップの前に、NINを尋ねる**アンケート**ステップを置き、データベース検証ステップで`national_id`をその質問にマッピングします。同じマッピングにより、銀行確認番号や法人登録番号のように、書類には一切記載されない識別子もワークフロー内で利用できるようになります。住所ベースのサービスでは、DiditがID書類の1つの`address`を、構造化された住所要素に自動で分割します。| Diditのフィールド | 意味 |
| - | - |
| `address_element_1` | 番地と通りの種類を含む番地住所 |
| `address_element_2` | 任意の部屋番号、建物名、階、または追加の住所行 |
| `address_element_3` | 郊外、地区、地域、または近隣 |
| `address_element_4` | 市、町、州、県、または地域 |
| `address_element_5` | 郵便番号 |スタンドアロンAPIを呼び出す場合は、1つの`address`か、これらの構造化フィールドのどちらでも送信できます。両方がある場合は構造化フィールドが優先されます。住所検索が必要なサービスには、`address_element_1`と、少なくとももう1つの住所要素が必要です。ワークフロー内のID書類または住所証明から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`** — 要求したすべてのフィールドが、少なくとも1つの情報源と一致しています。
- **`partial_match`** — 一部が一致しています。ワークフローのルールに従ってレビューキューに回します。
- **`no_match`** — どの情報源もデータを確認できませんでした。通常は拒否します。## 一致の判定方法(1×1 / 2×2)「1×1」か「2×2」を事前に選んでいただく必要はなくなりました。これらは、入力データに完全一致した個別のサービスの数から導出されます。- **1×1の結果** — 1つのサービスが完全一致を返しました(単一の一次情報源がデータを確認)。
- **2×2の結果** — 2つ以上のサービスが完全一致を返しました(独立した裏付けがあり、表現できる最も高い信頼度)。ワークフローでは、国ごとに任意の数のサービスを有効にできます。課金は、実際に結果を返したサービスごとに発生します。必須フィールドを抽出できなかったサービスは、課金されずにスキップされます。➡️ 判定ロジックの詳細と`partialMatchAction` / `noMatchAction`との関係は、\*\*[一致方式](https://docs.didit.me/core-technology/database-validation/database-validation-matching-methods.md)\*\*をご覧ください。## 生体データベース検証一部の国の住民登録簿は、生体テンプレート(顔写真または指紋)を保有しています。それが利用できる場合は、レジストリ照会とユーザーの自撮りによる**生体顔照合**を組み合わせます。- **アルゼンチン(`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をご自身で渡します。## グローバルIDエンリッチメント`glb_identity_enrichment`は、**グローバルかつスタンドアロン専用**のデータベース検証サービスです。メールアドレスまたは電話番号(あるいはその両方)から関連する人物(氏名、生年月日、住所、電話番号、メールアドレス、国民ID)を解決し、氏名の一致スコアを返します。結果は標準の[結果コード](https://docs.didit.me/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`)サービスであるため、**ワークフロービルダーでは利用できません**。`issuing_state`に`GLB`を設定して、スタンドアロンAPIから直接呼び出してください。```json theme={null}
POST /v3/database-validation/
{
  "issuing_state": "GLB",
  "services": ["glb_identity_enrichment"],
  "email": "john.doe@example.com",
  "phone": "+14155552671"
}
```課金は**1リクエストあたり\$0.20**です(プロバイダーが結果を返した場合のみ課金されます)。## 設定データベース検証は、コンソールでワークフローごとに設定します。国ごとに実行したい個別のサービスを選択すると、必須および任意の入力フィールドは、それらのサービスの和集合から導出されます。`partial_match`と`no_match`の結果に対するアクションは別に設定し、`approve`、`review`、`decline`のいずれかにできます。![国ごとのレジストリサービスと結果ルールを選択する、Diditのデータベース検証のコンソール設定](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/core-technology/database-validation/database-validation-outcome-codes)になります。スタンドアロンAPIでは、同じ障害が次の3つのいずれかの形で届くため、HTTPステータスだけを見ずに、サービスごとの結果**と**`database_validation.errors[]`の両方を確認してください。- `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/standalone-apis/database-validation.md#rejected-input-and-unavailable-results)をご覧ください)。全体の`status`は、回答したサービスに従うため、障害の指標としてはそれだけでは信頼できません。比較対象がなくなったリクエストは`In Review`になりますが、複数のサービスを選択したリクエストは、情報源の1つが利用できなくても、別のサービスの一致により`Approved`で返ることがあります。リクエスト全体ではなく、`errors[]`にある失敗したサービスを再試行してください。これらのいずれの形も、確認対象の本人について何かを示すものではありません。Diditは実際のチェックの結果をデータベースごとに監視し、単発のリクエスト失敗ではなく中断が継続した場合に、組織へメールでお知らせします。| メール | 送信されるタイミング | 通知内容 |
| - | - | - |
| **データベースの中断** | あるデータベースで少なくとも10分間失敗が続き、その間のほぼすべてのチェックが回答なしだった場合。短時間の集中や単発の失敗では送信されません。 | 影響を受けたデータベースと国、失敗が最初に確認された時刻。アクセスが回復するまでチェックは結果を返さない場合があります。これは、送信されたIDが無効であるという意味ではありません。 |
| **データベースへのアクセス回復** | 実際のチェックが、失敗なしで少なくとも5分間、再び回答している場合。利用の少ない時間帯は回復とみなされないため、トラフィックの少ないデータベースでは両方の状態の確認に時間がかかります。 | 回復が確認された時刻。中断中に完了できなかった検証は自動では再処理**されません**。確認して再試行してください。 |通知は、過去48時間にそのデータベースに対してチェックを実行したすべての組織のメンバーと請求担当者に送られます。設定は不要で、オプトインもありません。サンドボックスのトラフィックでは送信されません。また、送信されたデータが原因の失敗(却下または不正な形式の入力)や、お客様の組織が接続した認証情報で動作するサービスの失敗でも送信されません。フォールバックの情報源で回答されたチェックは利用可能として扱われ、明確な不一致も同様です。## 料金 - 使った分だけお支払いデータベース検証は、サービスごとに公開されている料金で、**成功したクエリごと・サービスごと**に課金されます。料金は、1回の確認あたり\*\*\$0.05\*\*(Junta Central Electoral経由のドミニカ共和国)から、最も高額な専門ソースの\*\*\$7.00**までです。政府レジストリの照会の多くは**USD 0.20〜USD 0.30**の範囲ですが、情報源自体の料金が高いため、かなり高額なものも少なくありません。フィンランドの国民ID(`fin_national_id`)は、成功したクエリ1回あたり**\$2.10\*\*です。国の料金は、範囲ではなく、必ず[料金表](https://docs.didit.me/getting-started/database-validation-pricing.md)のその国の行で確認してください。月額の最低料金、契約期間の縛り、プラットフォーム利用料はありません。サービスが結果を返した場合にのみ課金されます。入力データが不足してスキップされたサービスは課金されません。また、情報源への呼び出し自体が失敗したサービス(レジストリエラーまたはレジストリに接続できない状態: `REGISTRY_ERROR` / `REGISTRY_UNAVAILABLE`)も、クエリに回答がなかったことを意味するため、課金対象の結果にはなりません。成功したレジストリクエリは、ワークフロー内で実行しても、スタンドアロンの`POST /v3/database-validation/` APIで実行しても、最初の1回から課金されます。料金は他のチェックと同様に、プランのクレジットまたはチャージ残高から支払われ、プランの割引はその料金全体に適用されます。[料金ページ](https://docs.didit.me/getting-started/pricing.md#discounts)をご覧ください。➡️ [データベース検証の料金](https://docs.didit.me/getting-started/database-validation-pricing.md) · [サインアップしてAPIキーを取得](https://business.didit.me/)## すべてのサービス

\<table><thead><tr><th>Country</th>
            \<th>ISO3</th>
            \<th>Service</th>
            \<th>Description</th>
            \<th>Price (USD)</th></tr></thead>
        \<tbody /></table>

## 関連ドキュメント- [一致方式](https://docs.didit.me/core-technology/database-validation/database-validation-matching-methods.md) — 1×1 / 2×2の結果の導出方法と、それへの対応方法。
- [結果コード](https://docs.didit.me/core-technology/database-validation/database-validation-outcome-codes.md) — プロバイダーのレスポンスコードの一覧(死亡、未成年、書類が見つからない、生体の不一致など)と、セッションの判定へのマッピング。
- [警告](https://docs.didit.me/core-technology/database-validation/database-validation-warnings.md) — データ不足でサービスを実行できなかった場合に表示される内容。
- [レポート](https://docs.didit.me/core-technology/database-validation/database-validation-report.md) — 国、サービスID、利用量、単価、合計コストを含む、サービスごとの月次請求エクスポート。
- [対応国](https://docs.didit.me/core-technology/database-validation/database-validation-supported-countries.md) — 現在対応しているすべての国を一覧にした表。


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