> ## 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 では、過去の認証セッション、ユーザー、プロフィールの顔データ、ブロックリスト、企業、取引、ワークフローのステータスルールを他社から移行できます。データに合ったインポート方法を選択してください。

このガイドでは、他のプロバイダーからDiditへデータを移行する際に、適切なインポート方法を選ぶ方法を説明します。顧客が「インポート」と呼ぶジョブには、異なる2種類があります。- **過去の検証作業をインポートする**：完了済みのKYC、KYB、トランザクションモニタリング、またはワークフロールールの記録を再作成し、以前のプロバイダーでの履歴をDiditに表示します。`POST /v3/session/imports/`を使用します。
- **運用データをインポートする**：ユーザー、企業、プロフィールの顔画像、ブロックリストのエントリー、または許可リストのエントリーを作成し、Diditが今後のチェックで利用できるようにします。エンティティ、顔、リストの各APIを使用します。検証インポートでは、KYCとKYBについて`session_type: "MIGRATED"`の履歴レコードが作成されます。エンドユーザーへのメール送信、ホスト型フローへのユーザーのリダイレクト、元の検証の再実行はいずれも行いません。インポートされたレコードは、該当する場合、セッション一覧、エンティティのプロフィール、取引ビュー、`GET /v3/session/{session_id}/decision/`に表示されます。## 使用すべきインポートの種類| 目的 | 使用するインポート方法 | 作成されるもの | 最適な用途 |
| - | - | - | - |
| 過去のKYCセッションを再作成する | `POST /v3/session/imports/`で`import_type=user_verification`を指定 | `Session`、本人確認データ、任意の書類・セルフィー画像、書類およびライブネスの動画、タグ、メタデータ | Sumsub、MetaMap、Veriff、Onfido、Persona、Jumio、Incode、iDenfy、Trulioo、その他のKYCプロバイダーから完了済みの申請者を移行する場合 |
| 過去のKYBセッションを再作成する | `POST /v3/session/imports/`で`import_type=business_verification`を指定 | `BusinessSession`、法人登記データ、役員、実質的支配者、タグ、メタデータ | KYBベンダー、法人登記プロバイダー、または社内のKYBツールから完了済みの企業チェックを移行する場合 |
| 過去の取引モニタリングの記録を再作成する | `POST /v3/session/imports/`で`import_type=transactions`を指定 | `Transaction`、対象者・取引相手、プロバイダーの結果、トラベルルールのデータ、ネットワークのスナップショット、メタデータ | ルールエンジン、KYT、ウォレットスクリーニング、または法定通貨取引モニタリングの履歴を移行する場合 |
| カスタムのワークフローステータスルールをインポートする | `POST /v3/session/imports/`で`import_type=status_rules`を指定 | `VerificationSettings.feature_status_rules` | 他のプロバイダーやスプレッドシートのポリシーロジックをDiditのワークフローエンジンに移行する場合 |
| 過去のセッションなしでユーザーを作成する | `POST /v3/users/create/`またはコンソールのCSVインポート | `VendorUser`プロフィールのレコード | 新しいDiditのチェックを始める前にユーザー一覧を読み込む場合 |
| 信頼済みの顔画像をユーザープロフィールに紐付ける | `POST /v3/organization/{organization_id}/application/{application_id}/vendor-users/by-id/{didit_internal_id}/faces/upload/` | 重複検知と顔検索のためにインデックス化されたプロフィールの顔画像エビデンス | セッション全体を再作成せずに、他のKYCプロバイダーからプロフィール用の顔画像を移行する場合 |
| 顔をブロックリストまたは許可リストに登録する | `POST /v3/lists/{list_uuid}/entries/face-upload/`、または`reference_session_id`を指定した`POST /v3/lists/{list_uuid}/entries/` | 顔リストのエントリーと生体認証エンベディング | 既知の不正な顔や信頼済みの許可リストの顔を移行する場合、または既存のDiditセッションの顔をブロックリストに登録する場合 |
| 過去のKYBセッションなしで企業を作成する | `POST /v3/businesses/create/`またはコンソールのCSVインポート | `VendorBusiness`プロフィールのレコード | KYBを実行する前に企業顧客の一覧を読み込む場合 |> [!NOTE]
>
> 今後のチェック用にユーザーまたは企業のプロフィールだけが必要な場合は、過去の認証セッションをインポートしないでください。ユーザーまたは企業のエンティティAPIを使用してください。以前のプロバイダーの判定、書類のフィールド、警告、またはエビデンスをDiditのコンプライアンス履歴として表示する必要がある場合は、`POST /v3/session/imports/`を使用してください。## 各プロバイダーから移行できるデータDiditは正規形式のCSVまたはNDJSONファイルを受け付けるため、データをエクスポートして変換すれば、どのプロバイダーからでも移行できます。インポートの仕様は常にDiditの正規スキーマです。| プロバイダーの種類 | 主な移行元 | 通常移行できるデータ | 備考 |
| - | - | - | - |
| KYCプロバイダー | Sumsub、MetaMap、Veriff、Onfido、Persona、Jumio、Incode、iDenfy、Trulioo、HyperVerge、AU10TIX、Mitek、Ondato | 申請者ID、ベンダーユーザーID、判定ステータス、書類のフィールド、書類画像、セルフィー/ライブネス画像、却下ラベル、タグ、未加工のプロバイダーメタデータ | `import_type=user_verification`を使用します。プロバイダーが画像をエクスポートできない場合は、構造化フィールドをインポートし、画像URLは空のままにします。 |
| KYBプロバイダー | 法人登記プロバイダー、Sumsub KYB、Trulioo KYB、Creditsafe形式の登記エクスポート、社内KYBツール | 会社名、登記番号、国、登記ステータス、役員、実質的支配者、リスクレベル、未加工の登記ペイロード | `import_type=business_verification`を使用します。役員とUBOはJSON配列として渡します。 |
| トランザクションモニタリング/KYTプロバイダー | Sumsub Transaction Monitoring、Chainalysis形式のKYTエクスポート、Crystal、Merkle Science、Sardine、Unit21、Alloy、社内ルールエンジン | 取引ID、金額、通貨、方向、対象者/取引相手、ルールヒット、プロバイダーの結果、トラベルルールのステータス、ネットワークグラフのスナップショット | `import_type=transactions`を使用します。インポートされた取引は過去の記録であり、デフォルトでは再スクリーニングされません。 |
| ワークフローおよびポリシーのスプレッドシート | コンプライアンスポリシーのエクスポート、プロバイダーのルールテーブル、社内のリスク管理スプレッドシート | 「発行国がXの場合、本人確認をレビュー中に設定する」といった機能ごとのステータスルール | `import_type=status_rules`を使用します。ルールは保存前に、Diditのワークフローフィールドカタログに照らして検証されます。 |
| ユーザー/プロフィールストア | CRM、顧客DB、プロバイダーのユーザーエクスポート、データウェアハウス | `vendor_data`、表示名、メタデータ、タグ、信頼済みの顔画像 | User APIとプロフィール顔画像のアップロードを使用します。これは完了した検証セッションとは異なります。 |
| ブロックリスト/許可リストのデータ | プロバイダーの不正リスト、社内不正対策チームのシート、チャージバックリスト、制裁関連の社内リスト | メールアドレス、電話番号、書類、ウォレット、IPアドレス、デバイスフィンガープリント、顔、国、ユーザー、企業 | Lists APIを使用します。顔画像には専用の顔アップロードエンドポイントを使用し、Diditが顔エンベディングを抽出できるようにします。 |## 移行の流れ1) インポートするのが履歴、プロフィール、顔、リスト、取引、ルールのどれかを決めます。
2) 旧プロバイダーからのデータのエクスポートはご自身で行います。旧プロバイダーのAPIキーをDiditに送らないでください。
3) プロバイダーのエクスポートを、対応するDiditの正規CSVまたはNDJSONテンプレートに変換します。
4) 大規模な移行ではNDJSONを推奨します。また、個別に再試行できるファイルに分割してください。
5) インポートジョブを作成し、進捗をポーリングします。
6) 行エラーを取得し、失敗した行だけを修正して再試行します。すべてのインポートジョブは、自然な外部IDに対して冪等です。## インポートジョブを作成するインポートジョブは、1回のmultipartリクエストで作成します。```bash theme={null}
curl -X POST https://verification.didit.me/v3/session/imports/ \
  -H "x-api-key: YOUR_API_KEY" \
  -F "import_type=user_verification" \
  -F "workflow_id=YOUR_KYC_WORKFLOW_ID" \
  -F "file=@didit-import.ndjson"
```スプレッドシートを使った小規模な移行にはCSVを、大規模な移行にはNDJSONを使用してください。100k+行の場合、NDJSONの方がストリーミング、分割、検証、再試行を行いやすくなります。取引のインポートでは、`workflow_id`を省略します。```bash theme={null}
curl -X POST https://verification.didit.me/v3/session/imports/ \
  -H "x-api-key: YOUR_API_KEY" \
  -F "import_type=transactions" \
  -F "file=@didit-transactions.ndjson"
```### リクエストフィールド| フィールド | 必須 | 説明 |
| - | - | - |
| `import_type` | いいえ。デフォルトは`user_verification` | `user_verification`、`business_verification`、`status_rules`、`transactions`のいずれか。 |
| `workflow_id` | はい。ただし`transactions`を除く | インポートしたレコードを紐付けるワークフローのUUID。`user_verification`と`status_rules`にはユーザー認証ワークフローが、`business_verification`には法人確認ワークフローが必要です。 |
| `file` | `file`または`source_file_url`のいずれか | インラインでアップロードする正規形式のCSVまたはNDJSONファイル。 |
| `source_file_url` | `file`または`source_file_url`のいずれか | Diditがファイルをダウンロードする取得元のHTTPS URL。プライベートネットワークのURLは拒否されます。 |
| `source_format` | いいえ | `csv`または`ndjson`。省略した場合はファイル拡張子から推定されます。 |### レコードの追跡と重複排除の仕組みデータソースを指定するリクエストフィールドはありません。すべてのインポートでDiditの正規スキーマを使用します。インポートされた各レコードには、追跡用に`metadata.imported_from = "generic"`が保存されます。`user_verification`と`business_verification`のインポートでは、アプリケーション内で`external_id`に基づいて行の重複が排除されるため、同じファイルのインポートを再試行しても重複は作成されません。`transactions`のインポートでは、代わりに`transaction_id`に基づいて重複が排除されます。## 書類の写真、動画、セルフィーの証跡をインポートする`import_type=user_verification`の場合、以前のプロバイダーから元の書類の写真、書類撮影およびライブネス撮影の動画、セルフィー画像をインポートできます。次の標準カラムを使用してください。| 証跡 | 推奨カラム | 小規模インポート用の代替カラム | Didit内での保存先 |
| - | - | - | - |
| 書類の表面画像 | `document_front_url` | `document_front_base64` | 本人確認OCRの表面画像 |
| 書類の裏面画像 | `document_back_url` | `document_back_base64` | 本人確認OCRの裏面画像 |
| セルフィー/ライブネス画像 | `selfie_url` | `selfie_base64` | 顔/ライブネスの参照画像 |
| 書類の表面動画 | `document_front_video_url` | URLのみ | 本人確認OCRの表面動画 |
| 書類の裏面動画 | `document_back_video_url` | URLのみ | 本人確認OCRの裏面動画 |
| ライブネス動画 | `liveness_video_url` | URLのみ | 顔/ライブネスの撮影動画 |大規模な移行では**HTTPS URL**を使用してください。Diditは各ファイルをダウンロードし、URLが安全であることを検証したうえでDiditが所有するコピーを保存し、インポートしたセッションに紐付けます。画像は圧縮され、動画はそのまま保存されます。小規模なインポートでは画像のインラインbase64も受け付けますが、**動画は必ずURLで指定する必要があります**。base64にすると動画1本あたりのサイズが約33%増え、ファイルごとのインポート上限をすぐに超えてしまうためです。プロバイダーがホストするメディアURLを含むNDJSON行の例:```json theme={null}
{
  "external_id": "applicant-123",
  "vendor_data": "user-42",
  "created_at": "2025-01-12T10:30:00Z",
  "status": "Approved",
  "email": "user@example.com",
  "phone": "+34687020083",
  "first_name": "Jane",
  "last_name": "Doe",
  "date_of_birth": "1990-05-15",
  "document_type": "P",
  "issuing_state": "USA",
  "document_number": "123456789",
  "expiration_date": "2030-01-15",
  "document_front_url": "https://provider-export.example.com/files/applicant-123-front.jpg",
  "document_back_url": "https://provider-export.example.com/files/applicant-123-back.jpg",
  "selfie_url": "https://provider-export.example.com/files/applicant-123-selfie.jpg",
  "document_front_video_url": "https://provider-export.example.com/files/applicant-123-front.webm",
  "document_back_video_url": "https://provider-export.example.com/files/applicant-123-back.webm",
  "liveness_video_url": "https://provider-export.example.com/files/applicant-123-liveness.mp4",
  "reject_reasons_json": "[]",
  "provider_metadata_json": "{\"source\":\"sumsub-export\"}"
}
```メディアに関する重要なルール:- URLは`https`を使用する必要があります。
- URLの解決先がプライベートIP、localhost、リンクローカル範囲、内部メタデータホストであってはなりません。
- 画像はURLカラムまたはその`*_base64`代替カラムのどちらでも指定できます。両方が設定されている場合はbase64が優先されます。動画はURLのみで、`*_video_base64`カラムはありません。
- 動画は`mp4`、`webm`、`mov`のいずれかである必要があり、各動画のサイズは最大**10 MB**です。これより大きいファイルや動画以外のファイルは行エラーとして拒否されます。
- Diditは接続および読み取りのタイムアウト、最大ファイルサイズを適用し、無限に再試行することはありません。
- メディアのダウンロードに失敗した場合は行エラーとして記録されるため、残りのインポートは継続できます。
- プロバイダーからメディアを入手できない場合は、これらのカラムを空のままにしてください。その場合でも、Diditは構造化された判定と書類のフィールドをインポートします。
- インポートした画像と動画は、過去の記録をレビューするための証跡です。Diditはデフォルトでは、インポートした過去のメディアに対してOCR、ライブネス、書類不正の分析を再実行しません。

ユーザー認証インポート用プロンプト
        プロンプトをクリップボードにコピー



      
      

\<pre>

\`You are helping migrate historical User Verification (KYC) sessions into Didit.

Goal:
Transform the customer's Sumsub, MetaMap, or provider export into Didit's canonical verification import file, then call Didit's import API.

Didit API:
\- Create import job: POST https://verification.didit.me/v3/session/imports/
\- Poll job: GET https://verification.didit.me/v3/session/imports/{import_id}/
\- Read row errors: GET https://verification.didit.me/v3/session/imports/{import_id}/errors/
\- Download template: GET https://verification.didit.me/v3/session/imports/template/?import_type=user_verification
\- Authenticate with x-api-key: <DIDIT_API_KEY>

Inputs you need:
\- DIDIT_API_KEY
\- DIDIT_WORKFLOW_ID for a User Verification workflow
\- Provider export file or API output

Canonical columns:
external_id, vendor_data, created_at, status, email, phone, first_name, last_name, date_of_birth, gender, nationality, document_type, issuing_state, document_number, personal_number, expiration_date, document_front_url, document_back_url, selfie_url, document_front_base64, document_back_base64, selfie_base64, document_front_video_url, document_back_video_url, liveness_video_url, is_blocklisted, reject_reasons_json, tags, provider_metadata_json

Rules:
\- phone is optional and accepts international format (for example +34687020083); it is stored on the imported session.
\- external_id must be the provider's unique verification/applicant id.
\- vendor_data must be the customer's stable user id. If absent, use the provider identity/user id.
\- status must be Approved, Declined, In Review, or Expired.
\- date_of_birth and expiration_date must use YYYY-MM-DD.
\- created_at must be ISO 8601.
\- nationality and issuing_state must be ISO-3166 alpha-3, for example USA, ESP, BRA.
\- document_type must use Didit codes: P, ID, DL, RP, SSC, HIC, WP, TC, VISA, PSC, BC, OTHER.
\- reject_reasons_json must be a JSON array. provider_metadata_json must be a JSON object.
\- Use document_front_url, document_back_url, and selfie_url when the provider can export evidence images. Use HTTPS media URLs for large imports. Avoid inline base64 unless the import is small.
\- Use document_front_video_url, document_back_video_url, and liveness_video_url to import capture videos. Videos must be mp4, webm, or mov and at most 10 MB each; otherwise the row is rejected.
\- If only one document side exists, fill document_front_url and leave document_back_url empty.
\- Never call the import API with provider credentials. The customer downloads provider data themselves.
\- The import is idempotent by external_id inside one Didit application, so retries are safe.

Steps:
1\. Inspect the provider export schema.
2\. Map each provider row to the canonical fields.
3\. Write NDJSON for large files; one JSON object per line.
4\. Validate the first 10 rows locally before uploading.
5\. Create an import job:
curl -X POST https://verification.didit.me/v3/session/imports/ \
-H "x-api-key: $DIDIT_API_KEY" \
-F "import_type=user_verification" \
-F "workflow_id=$DIDIT_WORKFLOW_ID" \
-F "file=@didit-import.ndjson"
6\. Poll until status is COMPLETED or FAILED.
7\. If failed_count is greater than 0, fetch /errors/ and produce a corrected file containing only failed rows.

Output:
\- A canonical CSV or NDJSON file ready for Didit.
\- The curl command used to create the import job.
\- The import_id and polling command.
\- A short summary of created, skipped, and failed rows.`

\</pre>



      
      

貼り付け先



法人確認インポート用プロンプト
        プロンプトをクリップボードにコピー



      
      

\<pre>

\`You are helping migrate historical Business Verification (KYB) sessions into Didit.

Goal:
Transform the customer's KYB provider export into Didit's canonical business verification import file, then call Didit's import API.

Didit API:
\- Create import job: POST https://verification.didit.me/v3/session/imports/
\- Poll job: GET https://verification.didit.me/v3/session/imports/{import_id}/
\- Read row errors: GET https://verification.didit.me/v3/session/imports/{import_id}/errors/
\- Download template: GET https://verification.didit.me/v3/session/imports/template/?import_type=business_verification
\- Authenticate with x-api-key: <DIDIT_API_KEY>

Inputs you need:
\- DIDIT_API_KEY
\- DIDIT_WORKFLOW_ID for a Business Verification workflow
\- Provider export file or API output

Canonical business columns:
external_id, vendor_data, created_at, status, company_name, registration_number, country_code, registry_status, verification_status, company_type, tax_number, risk_level, incorporation_date, registered_address, is_from_registry, officers_json, beneficial_owners_json, provider_metadata_json, tags

Rules:
\- external_id must be the provider's unique business verification id.
\- vendor_data must be the customer's stable business id.
\- status must be Approved, Declined, In Review, or Expired.
\- country_code must be ISO-3166 alpha-3.
\- officers_json and beneficial_owners_json must be JSON arrays of objects.
\- provider_metadata_json must be a JSON object.
\- The import is idempotent by external_id inside one Didit application.

Create an import job:
curl -X POST https://verification.didit.me/v3/session/imports/ \
-H "x-api-key: $DIDIT_API_KEY" \
-F "import_type=business_verification" \
-F "workflow_id=$DIDIT_WORKFLOW_ID" \
-F "file=@didit-business-import.ndjson"

Output:
\- A canonical CSV or NDJSON file ready for Didit.
\- The curl command used to create the import job.
\- The import_id and polling command.
\- A short summary of created, skipped, and failed rows.`

\</pre>



      
      

貼り付け先



カスタムステータスルールのインポート用プロンプト
        プロンプトをクリップボードにコピー



      
      

\<pre>

\`You are helping import custom status rules into a Didit workflow.

Goal:
Transform the customer's policy spreadsheet into Didit's feature_status_rules format, then call Didit's import API.

Didit API:
\- Create import job: POST https://verification.didit.me/v3/session/imports/
\- Poll job: GET https://verification.didit.me/v3/session/imports/{import_id}/
\- Read row errors: GET https://verification.didit.me/v3/session/imports/{import_id}/errors/
\- Download template: GET https://verification.didit.me/v3/session/imports/template/?import_type=status_rules
\- Authenticate with x-api-key: <DIDIT_API_KEY>

Inputs you need:
\- DIDIT_API_KEY
\- DIDIT_WORKFLOW_ID for the workflow to update
\- A policy spreadsheet or JSON policy definition

Canonical status-rule columns:
feature, rules_json, mode

Rules:
\- feature must be a Didit feature key such as OCR, LIVENESS, FACE_MATCH, AML, KYB_REGISTRY, KYB_DOCUMENTS, or KYB_KEY_PEOPLE.
\- rules_json must be a JSON array of rule objects.
\- Each rule needs field, operator, status, and usually value.
\- mode is replace or append. Default is replace.
\- Do not reference status fields such as kyc.status; status rules compute status and must use other report fields.

Example rules_json:
\[{"field":"kyc.issuing_state","operator":"in","value":["VEN","IRN"],"status":"In Review"}]

Create an import job:
curl -X POST https://verification.didit.me/v3/session/imports/ \
-H "x-api-key: $DIDIT_API_KEY" \
-F "import_type=status_rules" \
-F "workflow_id=$DIDIT_WORKFLOW_ID" \
-F "file=@didit-status-rules.csv"

Output:
\- A canonical CSV or NDJSON file ready for Didit.
\- The curl command used to create the import job.
\- The import_id and polling command.
\- A summary of updated and failed rule rows.`

\</pre>



      
      

貼り付け先



取引インポート用プロンプト
        プロンプトをクリップボードにコピー



      
      

\<pre>

\`You are helping migrate historical transaction monitoring records into Didit.

Goal:
Transform the customer's legacy transaction monitoring export into Didit's canonical transaction import file, then call Didit's import API.

Didit API:
\- Create import job: POST https://verification.didit.me/v3/session/imports/
\- Poll job: GET https://verification.didit.me/v3/session/imports/{import_id}/
\- Read row errors: GET https://verification.didit.me/v3/session/imports/{import_id}/errors/
\- Download template: GET https://verification.didit.me/v3/session/imports/template/?import_type=transactions
\- Authenticate with x-api-key: <DIDIT_API_KEY>

Inputs you need:
\- DIDIT_API_KEY
\- A transaction export file or API output

Canonical transaction columns:
transaction_id, transaction_at, transaction_category, direction, amount, currency, currency_kind, amount_in_default_currency, default_currency, payment_details, payment_reference_id, action_type, status, score, severity, subject_json, counterparty_json, custom_properties_json, provider_results_json, travel_rule_json, network_snapshot_json, metadata_json

Rules:
\- transaction_id is required and is idempotent per Didit application.
\- transaction_category must be one of Didit's transaction categories, for example finance, kyc, travelRule, userPlatformEvent, gamblingBet, gamblingLimitChange, gamblingBonusChange, or auditTrailEvent.
\- direction must be INBOUND or OUTBOUND.
\- status must be APPROVED, IN_REVIEW, DECLINED, or AWAITING_USER.
\- subject_json must include vendor_data and full_name.
\- counterparty_json is optional but should be included when the legacy provider has it.
\- provider_results_json must be a JSON array.
\- travel_rule_json, network_snapshot_json, custom_properties_json, and metadata_json must be JSON objects when present.

Create an import job:
curl -X POST https://verification.didit.me/v3/session/imports/ \
-H "x-api-key: $DIDIT_API_KEY" \
-F "import_type=transactions" \
-F "file=@didit-transactions.ndjson"

Output:
\- A canonical CSV or NDJSON file ready for Didit.
\- The curl command used to create the import job.
\- The import_id and polling command.
\- A summary of created, skipped, and failed transaction rows.`

\</pre>



      
      

貼り付け先

## 進捗を確認する```bash theme={null}
curl https://verification.didit.me/v3/session/imports/IMPORT_ID/ \
  -H "x-api-key: YOUR_API_KEY"
```レスポンスには`status`、`import_type`、`total_rows`、`processed_rows`、`created_count`、`updated_count`、`skipped_count`、`failed_count`、`checkpoint_row`が含まれます。## 行エラーをダウンロードする```bash theme={null}
curl https://verification.didit.me/v3/session/imports/IMPORT_ID/errors/ \
  -H "x-api-key: YOUR_API_KEY"
```各エラーには`row_number`、`external_id`、`error`、`raw_row`が含まれるため、失敗した行だけを修正して再試行できます。## 不正利用対策`POST /v3/session/imports/`による過去データのインポートジョブは、デフォルトで無効になっています。これらのジョブは数百万行を処理し、メディアをダウンロードする可能性があるため、Diditが審査のうえ組織ごとにこの機能を有効にします。このガイドで扱う通常の運用データのインポート（ユーザーの作成、企業の作成、プロフィール用の顔画像のアップロード、顔のブロックリストのアップロード、リストエントリの追加）には、各エンドポイントの通常のAPIキーの権限、製品の利用可否、レート制限以外に、移行用の特別な有効化は必要ありません。また、過去データのインポートジョブは分離されたワーカー上で実行され、ファイルサイズの上限、行数の上限、HTTPSのみのメディアURL、プライベートネットワークのURLのブロック、アプリケーションごとの実行中ジョブ数の上限、行ごとのエラー記録が適用されます。## 標準ステータス| プロバイダーの結果 | Diditのステータス |
| - | - |
| 承認済み / グリーン / 検証済み | `Approved` |
| 却下 / レッド / 拒否 | `Declined` |
| 手動レビュー / 保留中 / 要レビュー | `In Review` |
| 未完了 / 初期化 / 履歴上の不明な行 | `Expired` |## 冪等性Diditは、ユーザー認証と法人確認のインポートで`external_id`をインポートの冪等性キーとして使用します。このキーはアプリケーションごとに適用されます。取引のインポートでは、アプリケーションごとに`transaction_id`を使用します。同じファイルを再試行すると、すでにインポートされた行はスキップされ、まだ処理されていない行が作成されます。## ユーザー、プロフィール顔画像、ブロックリストのインポート完了済みの認証セッションを再作成しない場合は、次の方法を使用します。### ユーザープロフィールのインポート[`POST /v3/users/create/`](https://docs.didit.me/ja/management-api/users/create)、または[ユーザーのインポートとエクスポート](https://docs.didit.me/ja/entities/users/import-export.md)で説明しているBusiness ConsoleのCSVインポートでユーザーを作成します。これは`VendorUser`プロフィールの作成または更新のみを行います。認証セッション、KYC判定、書類レポート、警告、Webhook履歴は作成されません。今後のチェックの前にDiditに顧客の存在を認識させたい場合や、`display_name`、タグ、メタデータなどのCRMのようなフィールドをバックフィルする必要がある場合に使用します。### 信頼済みプロフィール顔画像のアップロードユーザーが存在する状態で、[`POST /v3/organization/{organization_id}/application/{application_id}/vendor-users/by-id/{didit_internal_id}/faces/upload/`](https://docs.didit.me/ja/management-api/users/upload-face)を使用して信頼済みのプロフィール顔画像をアップロードします。これにより生体情報のエビデンスがユーザープロフィールに紐付けられ、重複検出と顔検索のためにインデックス化されます。この操作では顔はブロックリストに**登録されません**。以前のKYCプロバイダーから得た信頼済みのプロフィール画像があり、今後のDiditのチェックでその画像と照合したい場合に役立ちます。### 顔のブロックリストと許可リストのインポート顔を直接ブロックまたは許可するには、顔タイプのリストに対して[`POST /v3/lists/{list_uuid}/entries/face-upload/`](https://docs.didit.me/ja/management-api/lists/upload-face)を使用します。Diditが顔エンベディングを抽出し、リストエントリーとして保存します。既知の不正者の画像、許可リストに登録する信頼済みの顔、またはプロバイダーの不正リストの移行に使用します。顔が既存のDiditセッションに由来する場合は、`reference_session_id`を指定した[`POST /v3/lists/{list_uuid}/entries/`](https://docs.didit.me/ja/management-api/lists/create-entry)を使用することをおすすめします。Diditがセッションから適切な顔を抽出し、エントリーを元のセッションに紐付けます。### ユーザー、企業、書類、ウォレット、メール、電話番号、IP、デバイスのリストのインポート顔以外のリスト値には[`POST /v3/lists/{list_uuid}/entries/`](https://docs.didit.me/ja/management-api/lists/create-entry)を使用します。プロバイダーのブロックリスト、許可リスト、チャージバックリスト、ウォレットアドレス、既知のリスクの高いIPアドレス、デバイスフィンガープリント、書類番号、メールアドレス、電話番号、ユーザー、企業のインポートにはこの方法が適しています。## 次のステップ> [card] [ユーザーのインポート](https://docs.didit.me/ja/entities/users/import-export.md)
>
> ユーザープロフィールを読み込み、信頼済みのプロフィール顔画像を紐付けます。> [card] [企業のインポート](https://docs.didit.me/ja/entities/businesses/import-export.md)
>
> KYBを実行する前に企業プロフィールを読み込みます。> [card] [プロフィール顔画像のアップロード](https://docs.didit.me/ja/management-api/users/upload-face.md)
>
> インポートしたユーザーに信頼済みの顔画像を紐付けます。> [card] [リストへの顔のアップロード](https://docs.didit.me/ja/management-api/lists/upload-face.md)
>
> ブロックリストまたは許可リストに顔を追加します。> [card] [リストエントリーの作成](https://docs.didit.me/ja/management-api/lists/create-entry.md)
>
> 電話番号、メールアドレス、ウォレット、書類、IPアドレス、デバイス、ユーザー、企業をリストにインポートします。> [card] [レート制限](https://docs.didit.me/ja/integration/rate-limiting.md)
>
> 安全な移行ループと再試行を設計します。


## OpenAPI

````yaml ja/openapi-25.json POST /v3/session/imports/
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/session/imports/:
    post:
      tags:
        - Sessions
      summary: 認証インポートジョブを作成
      description: >-
        過去のユーザー認証セッション、法人確認セッション、トランザクションモニタリングの記録、またはワークフローのカスタムステータスルールを対象とする非同期インポートジョブを作成します。他のプロバイダーから移行するには`source=provider`を設定します。DiditはSumsub、Onfido、Persona、ComplyCubeについては読み取り専用キーを使ってデータを読み込み、Veriff、iDenfy、MetaMapについては`file`でアップロードしたIDをもとにレコードを読み込み、その他のプロバイダーについてはDiditの形式のエクスポートファイルをインポートします。レコードIDはプロバイダーごとに名前空間で区別される（`sumsub:<id>`）ため、再実行時にはDiditに既に存在するものはすべてスキップされます。インポートはデフォルトで無効になっており、Diditが組織ごとに有効化する必要があります。
      operationId: post_v3_session_imports_create
      requestBody:
        required: true
        content:
          multipart/form-data:
            schema:
              type: object
              properties:
                import_type:
                  type: string
                  enum:
                    - user_verification
                    - business_verification
                    - status_rules
                    - transactions
                  default: user_verification
                  description: >-
                    インポートする対象です。過去のユーザー認証セッション、過去の法人確認セッション、ワークフローのカスタムステータスルール、または過去のトランザクションモニタリング記録のいずれかです。
                workflow_id:
                  type: string
                  format: uuid
                  description: >-
                    インポートしたセッションまたはステータスルールを紐付けるワークフローのUUID。user_verification、business_verification、status_rulesでは必須です。transactionsでは省略してください。
                source_format:
                  type: string
                  enum:
                    - csv
                    - ndjson
                  description: 任意。省略した場合はアップロードされたファイルの拡張子から推定されます。
                file:
                  type: string
                  format: binary
                  description: >-
                    正規形式のCSVまたはNDJSONファイル。大規模なインポートにはNDJSONを使用してください。アップロードの最大サイズは25MBです(それより大きいファイルには`source_file_url`を使用してください)。`source_file_url`とは同時に指定できません。
                source_file_url:
                  type: string
                  format: uri
                  description: >-
                    ファイルアップロードの代替手段です。パブリックアドレスに解決されるHTTPSのURLである必要があります（プライベート/ループバックネットワークは拒否されます）。`file`とは同時に指定できません。
                source:
                  type: string
                  enum:
                    - file
                    - provider
                  description: >-
                    `provider`を指定すると、他の本人確認プロバイダーからの移行になります。ファイルインポートの場合は省略してください。
                provider:
                  type: string
                  enum:
                    - sumsub
                    - jumio
                    - veriff
                    - onfido
                    - persona
                    - metamap
                    - socure
                    - idnow
                    - shufti
                    - idenfy
                    - ondato
                    - trulioo
                    - au10tix
                    - complycube
                    - other
                  description: >-
                    移行元。`GET
                    /v3/session/imports/providers/`から取得します。`source`が`provider`の場合は必須です。
                credentials:
                  type: object
                  additionalProperties:
                    type: string
                  description: >-
                    `credential_fields`に記載されたフィールド名を持つ、プロバイダーの読み取り専用キーです。保存時は暗号化され、返されることはなく、インポート終了時に消去されます。multipartではJSON文字列として送信してください。
                options:
                  type: object
                  properties:
                    region:
                      type: string
                      description: プロバイダーのリージョンで、`regions`のいずれかです（Onfido：`eu`、`us`、`ca`）。
                status_mapping:
                  type: object
                  additionalProperties:
                    type: string
                    enum:
                      - Approved
                      - Declined
                      - In Review
                      - Expired
                      - Not Finished
                      - Abandoned
                  description: >-
                    プロバイダーのデフォルトのステータスマッピング（ソースのステータスからDiditのステータスへの対応）に対する変更。`Not
                    Finished`と`Abandoned`はスキップされてカウントされ、インポートされることはありません。
                dry_run:
                  type: boolean
                  default: false
                  description: >-
                    移行でインポートされる件数(ステータス別、Didit登録済み、同一人物、未完了)を集計し、何も書き込みません。ジョブは`READY`で終了します。`POST
                    /v3/session/imports/{importId}/start/`で開始してください。
                face_templates:
                  type: boolean
                  default: false
                  description: >-
                    インポートしたセルフィーから顔テンプレートを作成し、アプリケーションの顔とブロックリストに対して検索します。一致した場合はレビュー対象としてフラグが付けられるだけです。`lawful_basis_confirmed`が必要です。
                lawful_basis_confirmed:
                  type: boolean
                  default: false
                  description: 処理者であるDiditとこれらのセルフィーを共有する法的根拠があることを確認します。
          application/json:
            schema:
              type: object
              required:
                - source_file_url
              properties:
                import_type:
                  type: string
                  enum:
                    - user_verification
                    - business_verification
                    - status_rules
                    - transactions
                  default: user_verification
                  description: >-
                    インポートする対象です。過去のユーザー認証セッション、過去の法人確認セッション、ワークフローのカスタムステータスルール、または過去のトランザクションモニタリング記録のいずれかです。
                workflow_id:
                  type: string
                  format: uuid
                  description: >-
                    インポートしたセッションまたはステータスルールを紐付けるワークフローのUUID。user_verification、business_verification、status_rulesでは必須です。transactionsでは省略してください。
                source_format:
                  type: string
                  enum:
                    - csv
                    - ndjson
                  description: 任意。省略した場合はURLのファイル拡張子から推定されます。
                source_file_url:
                  type: string
                  format: uri
                  description: >-
                    ファイルアップロードの代替手段です。パブリックアドレスに解決されるHTTPSのURLである必要があります（プライベート/ループバックネットワークは拒否されます）。`file`とは同時に指定できません。
                source:
                  type: string
                  enum:
                    - file
                    - provider
                  description: >-
                    `provider`を指定すると、他の本人確認プロバイダーからの移行になります。ファイルインポートの場合は省略してください。
                provider:
                  type: string
                  enum:
                    - sumsub
                    - jumio
                    - veriff
                    - onfido
                    - persona
                    - metamap
                    - socure
                    - idnow
                    - shufti
                    - idenfy
                    - ondato
                    - trulioo
                    - au10tix
                    - complycube
                    - other
                  description: >-
                    移行元。`GET
                    /v3/session/imports/providers/`から取得します。`source`が`provider`の場合は必須です。
                credentials:
                  type: object
                  additionalProperties:
                    type: string
                  description: >-
                    `credential_fields`に記載されたフィールド名を持つ、プロバイダーの読み取り専用キーです。保存時は暗号化され、返されることはなく、インポート終了時に消去されます。multipartではJSON文字列として送信してください。
                options:
                  type: object
                  properties:
                    region:
                      type: string
                      description: プロバイダーのリージョンで、`regions`のいずれかです（Onfido：`eu`、`us`、`ca`）。
                status_mapping:
                  type: object
                  additionalProperties:
                    type: string
                    enum:
                      - Approved
                      - Declined
                      - In Review
                      - Expired
                      - Not Finished
                      - Abandoned
                  description: >-
                    プロバイダーのデフォルトのステータスマッピング（ソースのステータスからDiditのステータスへの対応）に対する変更。`Not
                    Finished`と`Abandoned`はスキップされてカウントされ、インポートされることはありません。
                dry_run:
                  type: boolean
                  default: false
                  description: >-
                    移行でインポートされる件数(ステータス別、Didit登録済み、同一人物、未完了)を集計し、何も書き込みません。ジョブは`READY`で終了します。`POST
                    /v3/session/imports/{importId}/start/`で開始してください。
                face_templates:
                  type: boolean
                  default: false
                  description: >-
                    インポートしたセルフィーから顔テンプレートを作成し、アプリケーションの顔とブロックリストに対して検索します。一致した場合はレビュー対象としてフラグが付けられるだけです。`lawful_basis_confirmed`が必要です。
                lawful_basis_confirmed:
                  type: boolean
                  default: false
                  description: 処理者であるDiditとこれらのセルフィーを共有する法的根拠があることを確認します。
            examples:
              URL-based import:
                value:
                  import_type: user_verification
                  workflow_id: 9f9b1234-aaaa-bbbb-cccc-1234567890ab
                  source_file_url: https://files.example.com/exports/sessions.ndjson
      responses:
        '201':
          description: >-
            インポートジョブを受け付けました。`status`が`COMPLETED`または`FAILED`になるまで、返された`uuid`をポーリングしてください。
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SessionImportJob'
              examples:
                Job accepted:
                  value:
                    uuid: 3f9c1a2b-4d5e-4f60-8a7b-9c0d1e2f3a4b
                    status: PENDING
                    import_type: user_verification
                    source_format: ndjson
                    source_filename: sessions.ndjson
                    total_rows: 0
                    processed_rows: 0
                    checkpoint_row: 0
                    created_count: 0
                    updated_count: 0
                    skipped_count: 0
                    failed_count: 0
                    total_media_bytes: 0
                    last_error: null
                    created_at: '2026-05-17T08:42:11Z'
                    updated_at: '2026-05-17T08:42:11Z'
                    started_at: null
                    completed_at: null
        '400':
          description: >-
            ワークフロー、ファイル形式、ファイルサイズ、ソースURL、またはセレクターの組み合わせが無効です。プロバイダーがキーを拒否した移行では、`code`
            (`invalid_credentials`、`missing_permission`、`wrong_region`、`provider_unavailable`、`rate_limited`、`ids_required`、`record_not_found`)、`missing_permissions`、`suggested_region`が返されます。
          content:
            application/json:
              examples:
                Invalid workflow:
                  value:
                    workflow_id:
                      - Invalid workflow_id.
                Workflow required:
                  value:
                    workflow_id:
                      - This field is required for this import type.
                Wrong file type:
                  value:
                    file:
                      - Only CSV and NDJSON files are supported.
                File too large:
                  value:
                    file:
                      - Import file exceeds the maximum allowed size.
                No source:
                  value:
                    file:
                      - Upload a file or provide source_file_url.
                Both sources:
                  value:
                    file:
                      - Use either file or source_file_url, not both.
        '403':
          description: >-
            インポートが有効化されていない、サンドボックスのアプリケーションである、またはAPIキーがありません（誤ったキー、失効したキー、期限切れのキーの場合は`401`が返されます）。認証のインポートはデフォルトで無効になっており、組織ごとにDiditが有効化する必要があります。
          content:
            application/json:
              examples:
                Imports not enabled:
                  value:
                    detail: >-
                      Verification imports are not enabled for this
                      organization.
                Sandbox:
                  value:
                    detail: >-
                      Verification imports are not enabled for sandbox
                      applications.
                Bad API key:
                  value:
                    detail: You do not have permission to perform this action.
        '429':
          description: >-
            このアプリケーションには、すでに有効なインポートジョブ（PENDING/PROCESSING/PAUSED）があります。別のジョブを開始する前に、完了するまでお待ちください。
          content:
            application/json:
              examples:
                Active job:
                  value:
                    detail: >-
                      This application already has an active import job. Wait
                      for it to finish before starting another.
      security:
        - ApiKeyAuth: []
      x-codeSamples:
        - lang: python
          label: Python
          source: |-
            from didit import Didit

            # Reads DIDIT_API_KEY.
            client = Didit()

            result = client.sessions.imports.create(
                import_type="user_verification",
                workflow_id="9f9b1234-aaaa-bbbb-cccc-1234567890ab",
                source_file_url="https://files.example.com/exports/sessions.ndjson",
            )
            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.sessions.imports.create({
              import_type: "user_verification",
              workflow_id: "9f9b1234-aaaa-bbbb-cccc-1234567890ab",
              source_file_url: "https://files.example.com/exports/sessions.ndjson",
            });
            console.log(result);
        - lang: go
          label: Go
          source: "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.Sessions.Imports.Create(ctx, didit.SessionsImportsCreateParams{\n\tImportType:    didit.Some(didit.SessionsImportsCreateParamsImportType(\"user_verification\")),\n\tWorkflowID:    didit.String(\"9f9b1234-aaaa-bbbb-cccc-1234567890ab\"),\n\tSourceFileURL: didit.String(\"https://files.example.com/exports/sessions.ndjson\"),\n})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
        - lang: java
          label: Java
          source: >-
            import me.didit.Didit;

            import me.didit.types.SessionsImportsCreateParams;


            // Reads DIDIT_API_KEY.

            Didit client = new Didit();


            var result =
            client.sessions().imports().create(SessionsImportsCreateParams.builder()
                    .importType(SessionsImportsCreateParams.ImportType.of("user_verification"))
                    .workflowId("9f9b1234-aaaa-bbbb-cccc-1234567890ab")
                    .sourceFileUrl("https://files.example.com/exports/sessions.ndjson")
                    .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->sessions->imports->create([
                'import_type' => 'user_verification',
                'workflow_id' => '9f9b1234-aaaa-bbbb-cccc-1234567890ab',
                'source_file_url' => 'https://files.example.com/exports/sessions.ndjson',
            ]);
            print_r($result->toArray());
        - lang: ruby
          label: Ruby
          source: |-
            require "didit"

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

            result = didit.sessions.imports.create(
              import_type: "user_verification",
              workflow_id: "9f9b1234-aaaa-bbbb-cccc-1234567890ab",
              source_file_url: "https://files.example.com/exports/sessions.ndjson"
            )
            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.Sessions.Imports.CreateAsync(new
            SessionsImportsCreateParams

            {
                ImportType = new SessionsImportsCreateParamsImportType("user_verification"),
                WorkflowId = "9f9b1234-aaaa-bbbb-cccc-1234567890ab",
                SourceFileUrl = "https://files.example.com/exports/sessions.ndjson",
            });

            Console.WriteLine(JsonSerializer.Serialize(result));
components:
  schemas:
    SessionImportJob:
      type: object
      required:
        - uuid
        - status
        - import_type
        - source_format
        - source_filename
        - total_rows
        - processed_rows
        - created_count
        - updated_count
        - skipped_count
        - failed_count
      properties:
        uuid:
          type: string
          format: uuid
          description: インポートジョブのID。この値を使用して進捗をポーリングし、行ごとのエラーを取得します。
        status:
          type: string
          enum:
            - PENDING
            - PROCESSING
            - COMPLETED
            - FAILED
            - PAUSED
            - CANCELLED
            - READY
        import_type:
          type: string
          enum:
            - user_verification
            - business_verification
            - status_rules
            - transactions
        source_format:
          type: string
          enum:
            - csv
            - ndjson
        source_filename:
          type: string
        total_rows:
          type: integer
          format: int64
        processed_rows:
          type: integer
          format: int64
        checkpoint_row:
          type: integer
          format: int64
        created_count:
          type: integer
          format: int64
        updated_count:
          type: integer
          format: int64
        skipped_count:
          type: integer
          format: int64
        failed_count:
          type: integer
          format: int64
        total_media_bytes:
          type: integer
          format: int64
        last_error:
          type: string
          nullable: true
        created_at:
          type: string
          format: date-time
        updated_at:
          type: string
          format: date-time
        started_at:
          type: string
          format: date-time
          nullable: true
        completed_at:
          type: string
          format: date-time
          nullable: true
        state:
          type: string
          enum:
            - ready
            - queued
            - running
            - paused
            - completed
            - errors
            - failed
            - cancelled
          description: コンソールに表示されるジョブの状態です。`errors`は、拒否された行がある完了済みのジョブを表します。
        source:
          type: string
          enum:
            - file
            - api
            - provider
        provider:
          type: string
          description: 移行元。ファイルまたはAPIによるインポートの場合は空です。
        provider_options:
          type: object
        credential_hint:
          type: string
          description: 移行が保持するキーの先頭の文字列です。キー自体が返されることはありません。
        credentials_expires_at:
          type: string
          format: date-time
          nullable: true
        resumes_at:
          type: string
          format: date-time
          nullable: true
          description: プロバイダーのレート制限により一時停止したジョブが自動的に再開する日時。
        status_mapping:
          type: object
          additionalProperties:
            type: string
        is_dry_run:
          type: boolean
        dry_run_summary:
          type: object
          description: >-
            ドライランの結果:
            `total`、`by_status`、`already_in_didit`、`same_person`、`not_finished`、`failed`、`unmapped_statuses`。
        face_templates_enabled:
          type: boolean
        lawful_basis_confirmed_at:
          type: string
          format: date-time
          nullable: true
        not_finished_count:
          type: integer
          format: int64
        same_person_count:
          type: integer
          format: int64
        face_templates_count:
          type: integer
          format: int64
        face_duplicates_count:
          type: integer
          format: int64
        face_blocklist_hits_count:
          type: integer
          format: int64
        created_by_name:
          type: string
          nullable: true
        created_by_email:
          type: string
          nullable: true
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: x-api-key
      description: >-
        お客様のアプリケーションのAPIキーです。Business ConsoleのDevelopers -> API
        keysで取得できます。プライマリキーはフルアクセス権を持ちます。名前付きキーにはスコープを設定できます。リソースごとのアクセス権（なし、読み取り、書き込み）、一部のワークフローまたは承認済みセッションへの限定、IPアドレスのリストへの限定、有効期限の設定です。401は、キーが誤っている、失効している、または期限切れであることを意味します。403は、キーが送信されていない、キーにこのリソースやアクションへのアクセス権がない、またはIPリスト外のアドレスからリクエストが送信されたことを意味します。セッションのルートでの404は、セッションがキーのワークフローまたはステータスの対象外であることを意味します。メディアへのアクセス権がないキーでは、画像、動画、PDFのURLがnullで返されます。セッションの書き込み権限がないキーでは、セッションのリンクとトークンがnullで返されます。詳細は次を参照してください:
        https://docs.didit.me/console/api-keys

````

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