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

# Didit APIリファレンス：本人確認（KYC）REST API

> DiditのREST APIの完全なリファレンスです。KYC・KYB・AML・生体認証・取引モニタリングのエンドポイント、OpenAPI仕様、従量課金の料金（毎月$10分無料）を掲載しています。



スタンドアロンAPI連携プロンプト
        プロンプトをクリップボードにコピー



      
      

\<pre>

\``Integrate Didit standalone verification APIs into my backend for server-to-server identity checks.

\## Available Standalone APIs

\### Identity & Documents
\- POST /v3/id-verification/ — multipart/form-data: front_image (required), back_image (optional). Returns: { request_id, id_verification: { status, first_name, last_name, document_type, document_number, date_of_birth, nationality, expiration_date, issuing_state, address, parsed_address, warnings[] } }
\- POST /v3/poa/ — multipart/form-data: document (PDF/image). Returns: { request_id, poa: { status, document_type, issuer, poa_address, poa_parsed_address, issue_date, warnings[] } }
\- POST /v3/database-validation/ — JSON: { issuing_state, validation_type, first_name, last_name, date_of_birth, personal_number, ... }. Returns: { request_id, database_validation: { status, validations } }

\### Document AI
\- POST /v3/document-ai/ — multipart/form-data: document (PDF/image), fields (one JSON-encoded array string of { key, name, instruction, type: "text"|"number"|"date", required, is_full_name }, 1-30 items), expected_first_name + expected_last_name OR expected_company_name (+ expected_company_country), document_ai_name_match_score_threshold (default 80), per-risk *_action params. Returns: { request_id, document_ai: { status, extracted_data: { <key>: value|null }, detected_codes[], fields[], name_match_score, name_on_document, warnings[] } }. $0.20 per document.

\### Biometrics & Face
\- POST /v3/passive-liveness/ — multipart/form-data: user_image. Returns: { request_id, passive_liveness: { status, score, method } }
\- POST /v3/face-match/ — multipart/form-data: user_image + ref_image. Returns: { request_id, face_match: { status, score } }
\- POST /v3/face-search/ — multipart/form-data: user_image. Returns: { request_id, face_search: { status, total_matches, matches[] } }
\- POST /v3/age-estimation/ — multipart/form-data: user_image. Returns: { request_id, age_estimation: { status, age_estimation, score } }

\### Compliance
\- POST /v3/aml/ — JSON: { full_name, entity_type, date_of_birth, nationality, document_number, include_adverse_media, include_ongoing_monitoring }. Returns: { request_id, aml: { status, total_hits, hits[], score, entity_type } }

\### Business Verification (KYB)
\- POST /v3/kyb/search/ — JSON: { country_code (required), name, registration_number, tier: "basic" (default) | "shareholders" | "ubo", search_type: "contains", webhook_url, vendor_data, metadata }. `tier` picks the provider chain the search runs on; retrieve the candidate from select (Lite), shareholders or ubo. Up to $0.50 per successful request, separately from profile retrieval; empty results and failures are not charged. Returns: { request_id, kyb_registry: { companies[] ({ kyb_response_id, name, registration_number, status, type, fetch_status }), pagination, search_status, search_resolved } }. `kyb_response_id` is an opaque handle — pass it straight to select/shareholders/ubo, never parse it.
\- POST /v3/kyb/select/ — JSON: { kyb_response_id (from search), save_api_request, vendor_data, metadata }. **Lite** tier, priced per country ([per-country prices](https://docs.didit.me/getting-started/kyb-registry-pricing.md)). Returns: { request_id, kyb_registry: { status, company_name, registration_number, country_code, company_type, incorporation_date, registered_address, officers[], beneficial_owners[], fetch_status, data_resolved, ... } }
\- POST /v3/kyb/shareholders/ and POST /v3/kyb/ubo/ — same JSON shape as select. **Shareholders** and **UBOs** tiers, priced per country; delivered and billed as the highest tier the country's registries can serve. v3 only.

\### Contact Verification
\- POST /v3/email/send/ — JSON: { email }. Sends OTP code.
\- POST /v3/email/check/ — JSON: { email, code }. Verifies OTP.
\- POST /v3/phone/send/ — JSON: { phone, channel }. Sends OTP via SMS/WhatsApp/Telegram.
\- POST /v3/phone/check/ — JSON: { phone, code }. Verifies OTP.

\### Bank Verification
\- POST /v3/bank/account-check/ - JSON: { country (ISO 3166-1 alpha-3), account: { iban } or { account_number, sort_code | routing_number | ifsc | bsb | transit_institution | bank_code } or { clabe } or { cbu_cvu }, holder: { full_name } or { business_name }, vendor_data }. Checks that a bank account belongs to the name, with no session. Returns: { request_id, result: match | close_match | no_match | cannot_verify, holder_name (close_match only), account (masked), vendor_data, created_at }. Billed once per check the bank answers; errors are never billed.

\## Authentication
All requests require: Headers: { "x-api-key": DIDIT_API_KEY }
For file uploads: multipart/form-data. For JSON: Content-Type: application/json.

\## Common Parameters
\- save_api_request (bool, default true): if true, appears in Console > Manual Checks
\- vendor_data (string): your internal ID for tracking

\## Example: ID Verification (Node.js)
const FormData = require('form-data');
const fs = require('fs');
const form = new FormData();
form.append('front_image', fs.createReadStream('./id_front.jpg'));
form.append('back_image', fs.createReadStream('./id_back.jpg'));

const response = await fetch('https://verification.didit.me/v3/id-verification/', {
method: 'POST',
headers: { 'x-api-key': process.env.DIDIT_API_KEY, ...form.getHeaders() },
body: form
});
const result = await response.json();
// result.id_verification.status: "Approved" or "Declined"
// result.id_verification.first_name, .last_name, .document_number, etc.

\## Example: AML Screening
const response = await fetch('https://verification.didit.me/v3/aml/', {
method: 'POST',
headers: { 'x-api-key': process.env.DIDIT_API_KEY, 'Content-Type': 'application/json' },
body: JSON.stringify({
full_name: 'John Doe',
entity_type: 'person',
date_of_birth: '1990-01-15',
nationality: 'US'
})
});
const result = await response.json();
// result.aml.status, result.aml.total_hits, result.aml.hits

\## When to Use Standalone APIs vs Sessions
\- Standalone: you have images/data, server-to-server, batch processing, custom UX
\- Sessions: user-facing flows where Didit handles camera, UX, multi-step, 54 languages

\## Rate Limits
\- Free: 10/min. Paid: 600/min. Exceeded: HTTP 429.

\## Environment Variables
\- DIDIT_API_KEY — from Didit Console > API & Webhooks

\## Docs
\- API Reference: https://docs.didit.me/api-reference/overview
\- Sessions vs APIs: https://docs.didit.me/api-reference/overview
\- Webhooks: https://docs.didit.me/integration/webhooks``

\</pre>



      
      

貼り付け先

Diditは本人確認に**相互に補完し合う2つのアプローチ**を提供しています。ユースケースに合った連携方法を選ぶには、両者の違いを理解することが欠かせません。[/ja/sessions-api/create-session](https://docs.didit.me/ja/sessions-api/create-session.md)[/ja/standalone-apis/id-verification](https://docs.didit.me/ja/standalone-apis/id-verification.md)***## ホスト型セッション (ユーザー向けフローに推奨)ホスト型セッションは、ほとんどの連携で**推奨されるアプローチ**です。セッションを作成すると、Diditがユーザーに提示するための`verification_url`を生成します。ユーザーはDiditの最適化されたインターフェースで検証フロー全体を完了し、結果はWebhookまたはAPIで受け取れます。### 仕組み**1. セッションを作成する**サーバーからワークフローIDを指定して`POST /v3/session/`を呼び出します。Diditは`verification_url`と`session_token`を返します。**2. ユーザーに提示する**ユーザーをリダイレクトするか、iframeで埋め込むか、セッショントークンを使ってネイティブSDKを初期化します。**3. ユーザーが検証を完了する**ユーザーはDiditの最適化されたUIで、案内に沿って本人確認書類の撮影、ライブネス検知、その他の追加ステップを進めます。**4. 結果を受け取る**Diditが検証の判定をWebhookでサーバーに送信します。または、取得APIでポーリングすることもできます。### セッションを推奨する理由| メリット | 詳細 |
| - | - |
| **最適化されたUX** | 検証インターフェースは、最高の完了率を実現するために世界中で継続的にA/Bテストされています |
| **カメラ制御** | スマートなカメラ選択、自動撮影、品質チェック、デバイス互換性への対応を標準搭載 |
| **ガイド付きフロー** | ユーザー向けのステップごとの説明、リアルタイムのフィードバック、エラーからの復旧 |
| **複数機能のワークフロー** | 複数の機能(本人確認書類+ライブネス検知+AML+電話番号+メールアドレス)を1つのフローにまとめて実行 |
| **セキュリティ** | なりすまし対策、アクティブライブネス検知、デバイスフィンガープリントをフローに組み込み |
| **コンプライアンス** | セッション単位の監査証跡、同意の取得、データ保持ポリシーを自動で処理 |
| **ローカライズ** | 54言語に対応し、ブラウザの言語を自動検出 |
| **モバイルネイティブ** | iOS、Android、React Native、Flutter向けのネイティブSDK |
| **メンテナンス不要** | UIの更新、ブラウザやデバイスの不具合、カメラの特殊なケースへの対応はすべてDiditが行います |### セッションを使うべき場面- **ユーザーオンボーディング / KYC**：新規ユーザーが登録時に本人確認を行う必要がある場合
- **年齢検証**：ユーザーが最低年齢要件を満たしていることを確認する場合
- **再検証**：既存ユーザーを定期的に再検証する場合
- **生体認証**：機密性の高い操作でユーザーが顔による認証を行う場合
- **複数ステップのコンプライアンス**：本人確認書類+ライブネス検知+AML+電話番号を一度に行うフローが必要な場合
- **エンドユーザーがその場にいて**直接操作するあらゆるシナリオ### セッションのエンドポイント| エンドポイント | 用途 |
| - | - |
| [セッションの作成](https://docs.didit.me/ja/sessions-api/create-session.md) | ユーザー向けの検証URLを生成します |
| [セッションの取得](https://docs.didit.me/ja/sessions-api/retrieve-session.md) | セッションの全結果と判定を取得します |
| [セッションの一覧](https://docs.didit.me/ja/sessions-api/list-sessions.md) | すべてのセッションを照会し、フィルターで絞り込みます |
| [セッションの削除](https://docs.didit.me/ja/sessions-api/delete-session.md) | セッションと関連するすべてのデータを削除します |
| [PDFの生成](https://docs.didit.me/ja/sessions-api/generate-pdf.md) | 検証レポートをPDFとしてエクスポートします |
| [セッションの共有](https://docs.didit.me/ja/sessions-api/share-session/share.md) | パートナーとの再利用可能なKYC用に共有トークンを生成します |
| [共有セッションのインポート](https://docs.didit.me/ja/sessions-api/share-session/import.md) | パートナーから共有されたセッションをインポートします(再利用可能なKYC) |***## スタンドアロンAPI (サーバー間処理向け)スタンドアロンAPIを使うと、エンドユーザー向けのUIを介さずに、個々の検証機能を**サーバーから直接**呼び出せます。データ(画像、書類、氏名)を送信すると、構造化された結果が返されます。### 仕組み**1. データを送信する**サーバーから、必要なデータ(画像、書類、またはJSONフィールド)を付けてスタンドアロンエンドポイント(例: `POST /v3/id-verification/`)を呼び出します。**2. 結果を受け取る**Diditはリクエストを同期的に処理し、構造化された検証結果をレスポンスで返します。### スタンドアロンAPIを使うべきケース| ユースケース | 例 |
| - | - |
| **バックエンド処理** | 自社のキャプチャUIで取得済みの書類画像があり、それを検証する必要がある |
| **一括検証** | オペレーションチームがアップロードした大量の本人確認書類を処理する |
| **独自のUX** | 独自のキャプチャフローを構築済みで、Diditは分析のみに使いたい |
| **サーバー間チェック** | ユーザーの操作なしで、顧客リストをAMLスクリーニングする |
| **自動化パイプライン** | CI/CDやcronによるコンプライアンスの再チェック(例: 毎日のAMLモニタリング) |
| **既存システムとの連携** | Diditの検証機能を既存の書類管理システムに接続する |
| **単一機能の呼び出し** | 必要な機能が1つだけ(例: AMLスクリーニングのみ、または顔照合のみ) |### 利用可能なスタンドアロンAPI**本人確認と書類**| API | 機能 |
| - | - |
| [本人確認](https://docs.didit.me/ja/standalone-apis/id-verification.md) | 本人確認書類(表面と裏面の画像)からデータを抽出し、検証します |
| [住所証明](https://docs.didit.me/ja/standalone-apis/proof-of-address.md) | 住所を証明する書類(公共料金の請求書、銀行取引明細書、公的書類)を検証します |
| [住所検証](https://docs.didit.me/ja/standalone-apis/address-validation.md) | 住所が実在することを確認し、正規化された住所を座標付きで返します |
| [データベース検証](https://docs.didit.me/ja/core-technology/database-validation/overview.md) | ユーザーデータを政府のデータベースと照合します |**Document AI**| API | 機能 |
| - | - |
| [Document AI](https://docs.didit.me/ja/standalone-apis/document-ai.md) | あらゆる書類(PDFまたは画像)から指定したフィールドを抽出し、氏名照合と改ざんチェックを行います |**生体認証と顔**| API | 機能 |
| - | - |
| [パッシブライブネス](https://docs.didit.me/ja/standalone-apis/passive-liveness.md) | 1枚の画像から、実在の人物がその場にいることを検証します(なりすまし対策) |
| [顔照合](https://docs.didit.me/ja/standalone-apis/face-match.md) | 2つの顔を比較し、同一人物かどうかを判定します |
| [顔検索](https://docs.didit.me/ja/standalone-apis/face-search.md) | 過去に検証されたすべてのセッションを対象に顔を検索します(1:N) |
| [年齢推定](https://docs.didit.me/ja/standalone-apis/age-estimation.md) | 顔画像から人物の年齢を推定します |**コンプライアンスとリスク**| API | 機能 |
| - | - |
| [AMLスクリーニング](https://docs.didit.me/ja/standalone-apis/aml-screening.md) | 個人または企業を制裁リスト、重要な公的地位を有する者 (PEP)、ウォッチリストと照合します |**銀行口座確認**| API | 機能 |
| - | - |
| [口座確認](https://docs.didit.me/ja/standalone-apis/bank-account-check.md) | 送金する前に、銀行口座が指定した個人または企業のものであることを確認します |**法人確認 (KYB)**| API | 機能 |
| - | - |
| [KYB登記検索](https://docs.didit.me/ja/standalone-apis/kyb-registry-search.md) | 社名、登記番号、国で法人登記を検索します。成功したリクエスト1件あたり最大\$0.50です |
| [KYB登記選択](https://docs.didit.me/ja/standalone-apis/kyb-registry-select.md) | 選択した企業の登記プロファイル全体(役員、実質的支配者、住所)を取得します |***## 比較一覧| | ホスト型セッション | スタンドアロンAPI |
| - | - | - |
| **連携の工数** | 少ない: リダイレクト、iframe、またはSDK | 中程度: データのキャプチャと送信は自社で行う |
| **ユーザーの操作** | あり: ユーザーがDiditのUIでフローを完了する | なし: サーバー間のみ |
| **カメラ・キャプチャ** | Diditが処理(最適化済み) | 画像やデータは自社で用意する |
| **複数機能のフロー** | 対応: ワークフローで機能を連結できる | API呼び出し1回につき1機能 |
| **UXの最適化** | 継続的にA/Bテストを実施 | UXは自社で管理する |
| **ローカライズ** | 54言語、自動検出 | N/A(UIなし) |
| **Webhook** | ステータスを自動で通知 | N/A(同期レスポンス) |
| **応答時間** | 非同期(ユーザーが自分のペースで完了) | 同期(数秒) |
| **最適な用途** | ユーザー向けのオンボーディングと検証 | バックエンド処理と自動化 |
| **コンソールでの表示** | ダッシュボードでセッションのライフサイクル全体を確認できる | Manual Checksセクションに表示される |***## 両方を併用できますか**はい。** 多くのチームが両方の方式を組み合わせています。1) **オンボーディングにはセッション**: 新規ユーザーは登録時に、ホスト型の検証フロー全体を完了します
2) **継続的なモニタリングにはスタンドアロンAML**: cronジョブが毎晩、承認済みの全ユーザーを最新のウォッチリストと再照合します
3) **重複検出にはスタンドアロン顔検索**: 新しいセッションが承認されると、サーバーが顔検索を呼び出して重複を確認します
4) **オペレーションにはスタンドアロン本人確認**: コンプライアンスチームが、例外的なケースのレビューのために書類を手動でアップロードします### 例: 組み合わせたアーキテクチャ| 自社のアプリケーション | Didit API | 種類 |
| - | - | - |
| **ユーザー登録フロー** | Sessions API(ホスト型UI) | ユーザー向け |
| **毎晩のAML再スクリーニング** | スタンドアロンAML API | サーバー間 |
| **オペレーションチームによる書類レビュー** | スタンドアロン本人確認API | サーバー間 |
| **重複する顔の検出** | スタンドアロン顔検索API | サーバー間 |***## はじめに[/ja/integration/api-full-flow](https://docs.didit.me/ja/integration/api-full-flow.md)[/ja/getting-started/api-authentication](https://docs.didit.me/ja/getting-started/api-authentication.md)[/ja/integration/webhooks](https://docs.didit.me/ja/integration/webhooks.md)[/ja/console/workflows](https://docs.didit.me/ja/console/workflows.md)***


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