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

# Impor Verifikasi dari Penyedia Lain

> Pilih jalur impor Didit untuk sesi verifikasi historis, pengguna, wajah profil, daftar blokir, bisnis, transaksi, dan aturan status alur kerja.

Gunakan panduan ini untuk memilih jalur impor yang tepat saat Anda memindahkan data dari penyedia lain ke Didit. Ada dua pekerjaan berbeda yang sering disebut "impor" oleh pelanggan:- **Impor riwayat pekerjaan verifikasi**: membuat ulang catatan KYC, KYB, pemantauan transaksi, atau aturan alur kerja yang sudah selesai agar Didit menampilkan riwayat dari penyedia lama. Gunakan `POST /v3/session/imports/`.
- **Impor data operasional**: membuat Pengguna, Bisnis, wajah profil, entri daftar blokir, atau entri daftar izin agar Didit dapat menggunakannya dalam pemeriksaan mendatang. Gunakan API entitas, wajah, dan daftar.Impor verifikasi membuat catatan riwayat dengan `session_type: "MIGRATED"` untuk KYC dan KYB. Impor tersebut tidak mengirim email ke pengguna akhir, tidak mengarahkan pengguna ke alur yang di-hosting, dan tidak menjalankan ulang verifikasi asli. Catatan yang diimpor muncul di daftar sesi, profil entitas, tampilan transaksi, dan `GET /v3/session/{session_id}/decision/` jika berlaku.## Impor mana yang harus Anda gunakan?| Tujuan | Gunakan jalur impor ini | Yang dibuat | Paling cocok untuk |
| - | - | - | - |
| Membuat ulang sesi KYC historis | `POST /v3/session/imports/` dengan `import_type=user_verification` | `Session`, data Verifikasi Identitas, gambar dokumen/swafoto opsional, video dokumen dan video liveness, tag, metadata | Memindahkan pemohon yang sudah selesai dari Sumsub, MetaMap, Veriff, Onfido, Persona, Jumio, Incode, iDenfy, Trulioo, atau penyedia KYC lainnya |
| Membuat ulang sesi KYB historis | `POST /v3/session/imports/` dengan `import_type=business_verification` | `BusinessSession`, data registri perusahaan, pejabat, pemilik manfaat, tag, metadata | Memindahkan pemeriksaan bisnis yang sudah selesai dari vendor KYB, penyedia registri perusahaan, atau alat KYB internal |
| Membuat ulang catatan pemantauan transaksi historis | `POST /v3/session/imports/` dengan `import_type=transactions` | `Transaction`, pihak subjek/pihak lawan, hasil penyedia, data Travel Rule, cuplikan jaringan, metadata | Memindahkan riwayat mesin aturan, KYT, skrining dompet, atau pemantauan transaksi fiat |
| Mengimpor aturan status alur kerja kustom | `POST /v3/session/imports/` dengan `import_type=status_rules` | `VerificationSettings.feature_status_rules` | Memindahkan logika kebijakan dari penyedia lain atau spreadsheet ke mesin alur kerja Didit |
| Membuat Pengguna tanpa sesi historis | `POST /v3/users/create/` atau impor CSV Console | Baris profil `VendorUser` | Memuat daftar pengguna Anda sebelum memulai pemeriksaan Didit baru |
| Menambahkan wajah profil tepercaya ke pengguna | `POST /v3/organization/{organization_id}/application/{application_id}/vendor-users/by-id/{didit_internal_id}/faces/upload/` | Bukti wajah profil yang diindeks untuk deteksi duplikat dan pencarian wajah | Memigrasikan gambar wajah profil dari penyedia KYC lain tanpa membuat ulang sesi lengkap |
| Memasukkan wajah ke daftar blokir atau daftar izin | `POST /v3/lists/{list_uuid}/entries/face-upload/` atau `POST /v3/lists/{list_uuid}/entries/` dengan `reference_session_id` | Entri daftar wajah dan embedding biometrik | Memigrasikan wajah penipuan yang diketahui, wajah daftar izin tepercaya, atau memblokir wajah dari sesi Didit yang sudah ada |
| Membuat Bisnis tanpa sesi KYB historis | `POST /v3/businesses/create/` atau impor CSV Console | Baris profil `VendorBusiness` | Memuat daftar pelanggan bisnis sebelum menjalankan KYB |> [!NOTE]
>
> Jika Anda hanya memerlukan profil pengguna atau bisnis untuk pemeriksaan mendatang, jangan impor sesi verifikasi historis. Gunakan API entitas Pengguna atau Bisnis. Jika Anda ingin keputusan, kolom dokumen, peringatan, atau bukti dari penyedia lama muncul sebagai riwayat kepatuhan di Didit, gunakan `POST /v3/session/imports/`.## Apa yang bisa dimigrasikan dari setiap penyedia?Didit menerima file CSV atau NDJSON kanonis, sehingga Anda dapat bermigrasi dari penyedia mana pun setelah mengekspor dan mengubah datanya. Kontrak impor selalu mengikuti skema kanonis Didit.| Keluarga penyedia | Sumber umum | Biasanya dapat dimigrasikan | Catatan |
| - | - | - | - |
| Penyedia KYC | Sumsub, MetaMap, Veriff, Onfido, Persona, Jumio, Incode, iDenfy, Trulioo, HyperVerge, AU10TIX, Mitek, Ondato | ID pemohon, ID pengguna vendor, status keputusan, kolom dokumen, gambar dokumen, gambar selfie/liveness, label penolakan, tag, metadata penyedia mentah | Gunakan `import_type=user_verification`. Jika penyedia tidak dapat mengekspor gambar, impor kolom terstruktur dan biarkan URL gambar kosong. |
| Penyedia KYB | Penyedia registri perusahaan, Sumsub KYB, Trulioo KYB, ekspor registri bergaya Creditsafe, alat KYB internal | Nama perusahaan, nomor registrasi, negara, status registri, pejabat, pemilik manfaat, tingkat risiko, payload registri mentah | Gunakan `import_type=business_verification`. Pejabat dan UBO dikirim sebagai array JSON. |
| Penyedia pemantauan transaksi / KYT | Sumsub Transaction Monitoring, ekspor KYT bergaya Chainalysis, Crystal, Merkle Science, Sardine, Unit21, Alloy, mesin aturan internal | ID transaksi, jumlah, mata uang, arah, subjek/pihak lawan, hasil aturan yang terpicu, hasil penyedia, status Travel Rule, snapshot graf jaringan | Gunakan `import_type=transactions`. Transaksi yang diimpor adalah catatan historis; secara default transaksi tersebut tidak diskrining ulang. |
| Lembar kerja alur kerja dan kebijakan | Ekspor kebijakan kepatuhan, tabel aturan penyedia, spreadsheet risiko internal | Aturan status per fitur, misalnya "jika negara penerbit adalah X, atur Verifikasi Identitas menjadi Dalam Peninjauan" | Gunakan `import_type=status_rules`. Aturan divalidasi terhadap katalog kolom alur kerja Didit sebelum disimpan. |
| Penyimpanan pengguna/profil | CRM, basis data pelanggan, ekspor pengguna penyedia, gudang data | `vendor_data`, nama tampilan, metadata, tag, foto wajah tepercaya | Gunakan API Pengguna dan unggah wajah profil. Ini berbeda dari sesi verifikasi yang sudah selesai. |
| Data daftar blokir/daftar izin | Daftar penipuan penyedia, spreadsheet operasi penipuan internal, daftar pengembalian dana, daftar internal terkait sanksi | Email, telepon, dokumen, dompet, alamat, sidik jari perangkat, wajah, negara, pengguna, bisnis | Gunakan API Lists. Untuk gambar wajah, gunakan endpoint unggah wajah khusus agar Didit dapat mengekstrak embedding biometrik. |## Alur migrasi1) Tentukan apakah Anda mengimpor riwayat, profil, wajah, daftar, transaksi, atau aturan.
2) Ekspor data dari penyedia lama sendiri. Jangan kirim kunci API penyedia lama ke Didit.
3) Ubah ekspor penyedia menjadi templat CSV atau NDJSON kanonis Didit yang sesuai.
4) Untuk migrasi besar, utamakan NDJSON dan pisahkan ke dalam file yang dapat dicoba lagi secara independen.
5) Buat tugas impor dan pantau progresnya.
6) Ambil kesalahan pada baris, perbaiki hanya baris yang gagal, lalu coba lagi. Semua tugas impor bersifat idempoten berdasarkan ID eksternal alaminya.## Buat tugas imporBuat tugas impor dengan satu permintaan 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"
```Gunakan CSV untuk migrasi kecil yang berbasis spreadsheet dan NDJSON untuk migrasi besar. Untuk 100k+ baris, NDJSON lebih mudah di-stream, dipisah, divalidasi, dan dicoba ulang.Sebuah aplikasi dapat menjalankan hingga 4 tugas impor sekaligus, jadi pecah migrasi besar menjadi beberapa file dan mulai satu tugas untuk setiap file.
Setiap tugas mengunduh file media untuk setiap baris secara paralel.
Tugas yang terhenti karena penerapan atau mulai ulang pekerja akan melanjutkan dari baris terakhir yang berhasil diimpor secara otomatis, sehingga Anda tidak perlu memulainya ulang.Untuk impor transaksi, hilangkan `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"
```### Kolom permintaan| Kolom | Wajib | Deskripsi |
| - | - | - |
| `import_type` | Tidak, default `user_verification` | Salah satu dari `user_verification`, `business_verification`, `status_rules`, `transactions`. |
| `workflow_id` | Ya, kecuali untuk `transactions` | UUID alur kerja tempat catatan yang diimpor dilampirkan. `user_verification` dan `status_rules` memerlukan alur kerja Verifikasi Pengguna; `business_verification` memerlukan alur kerja Verifikasi Bisnis. |
| `file` | `file` atau `source_file_url` (salah satu wajib diisi) | File CSV atau NDJSON kanonis, diunggah secara inline. |
| `source_file_url` | `file` atau `source_file_url` (salah satu wajib diisi) | URL HTTPS tempat Didit mengunduh file. URL jaringan privat ditolak. |
| `source_format` | Tidak | `csv` atau `ndjson`. Disimpulkan dari ekstensi file jika tidak diisi. |### Cara catatan dilacak dan dideduplikasiTidak ada kolom permintaan untuk sumber data. Setiap impor menggunakan skema kanonis Didit. Setiap catatan yang diimpor menyimpan `metadata.imported_from = "generic"` untuk keperluan pelacakan.Impor `user_verification` dan `business_verification` mendeduplikasi baris berdasarkan `external_id` di dalam aplikasi, sehingga mencoba ulang file yang sama tidak akan membuat duplikat. Impor `transactions` mendeduplikasi berdasarkan `transaction_id`.Migrasi penyedia (`source=provider`) menyimpan setiap catatan sebagai `<provider>:<id>`, misalnya `sumsub:5f8c0e2a9b1d4c3e2f1a0b9c`.
Impor file Verifikasi Pengguna yang mengirim ID penyedia tanpa awalan (`5f8c0e2a9b1d4c3e2f1a0b9c`) dikenali sebagai catatan yang sama, di kedua arah.
Oleh karena itu, Anda dapat memulai migrasi melalui file dan menyelesaikannya dengan migrasi penyedia, atau sebaliknya, tanpa mengimpor catatan yang sama dua kali.## Impor foto dokumen, video, dan bukti swafotoUntuk `import_type=user_verification`, Anda dapat mengimpor foto dokumen asli, video penangkapan dokumen dan liveness, serta gambar swafoto dari penyedia sebelumnya.Gunakan kolom kanonis berikut:| Bukti | Kolom yang disarankan | Fallback untuk impor kecil | Disimpan di Didit sebagai |
| - | - | - | - |
| Gambar depan dokumen | `document_front_url` | `document_front_base64` | Gambar depan OCR Verifikasi Identitas |
| Gambar belakang dokumen | `document_back_url` | `document_back_base64` | Gambar belakang OCR Verifikasi Identitas |
| Swafoto / gambar liveness | `selfie_url` | `selfie_base64` | Gambar referensi Face/Liveness |
| Video depan dokumen | `document_front_video_url` | Hanya URL | Video depan OCR Verifikasi Identitas |
| Video belakang dokumen | `document_back_video_url` | Hanya URL | Video belakang OCR Verifikasi Identitas |
| Video liveness | `liveness_video_url` | Hanya URL | Video penangkapan Face/Liveness |Untuk migrasi besar, gunakan **URL HTTPS**. Didit mengunduh setiap file, memvalidasi bahwa URL aman, menyimpan salinan yang dimiliki Didit, lalu menautkannya ke sesi yang diimpor. Gambar dikompresi; video disimpan apa adanya. Base64 inline diterima untuk gambar pada impor kecil, tetapi **video harus selalu disediakan sebagai URL**, karena base64 akan membuat setiap video sekitar 33% lebih besar dan dengan cepat melampaui batas impor per file.Contoh baris NDJSON dengan URL media yang di-hosting penyedia:```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\"}"
}
```Aturan media penting:- URL harus menggunakan `https`.
- URL tidak boleh mengarah ke IP privat, localhost, rentang link-local, atau host metadata internal.
- Gambar dapat menggunakan kolom URL atau kolom fallback `*_base64`-nya; base64 diutamakan jika keduanya diisi. Video hanya menggunakan URL, karena tidak ada kolom `*_video_base64`.
- Video harus berformat `mp4`, `webm`, atau `mov`, dan setiap video maksimal **10 MB**. File yang lebih besar atau file non-video akan ditolak sebagai error pada baris.
- Didit menerapkan timeout koneksi/baca dan ukuran file maksimum, serta tidak melakukan percobaan ulang tanpa batas.
- Kegagalan unduhan media disimpan sebagai error pada baris agar sisa impor tetap berjalan.
- Jika Anda tidak memiliki media dari penyedia, kosongkan kolom-kolom ini. Didit tetap mengimpor keputusan terstruktur dan kolom dokumen.
- Gambar dan video yang diimpor adalah bukti untuk peninjauan historis. Secara default, Didit tidak menjalankan ulang analisis OCR, liveness, atau deteksi kecurangan dokumen pada media historis yang diimpor.

Prompt Impor Verifikasi Pengguna
        Salin prompt ke papan klip



      
      

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



      
      

Tempel ke



Prompt Impor Verifikasi Bisnis
        Salin prompt ke papan klip



      
      

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



      
      

Tempel ke



Prompt Impor Aturan Status Kustom
        Salin prompt ke papan klip



      
      

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



      
      

Tempel ke



Prompt Impor Transaksi
        Salin prompt ke papan klip



      
      

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



      
      

Tempel ke

## Memantau progres```bash theme={null}
curl https://verification.didit.me/v3/session/imports/IMPORT_ID/ \
  -H "x-api-key: YOUR_API_KEY"
```Respons menyertakan `status`, `import_type`, `total_rows`, `processed_rows`, `created_count`, `updated_count`, `skipped_count`, `failed_count`, dan `checkpoint_row`.## Mengunduh error baris```bash theme={null}
curl https://verification.didit.me/v3/session/imports/IMPORT_ID/errors/ \
  -H "x-api-key: YOUR_API_KEY"
```Setiap error menyertakan `row_number`, `external_id`, `error`, dan `raw_row`, sehingga Anda dapat memperbaiki hanya baris yang gagal dan mencobanya kembali.## Perlindungan dari penyalahgunaanJob impor historis melalui `POST /v3/session/imports/` dinonaktifkan secara default. Didit mengaktifkan kemampuan ini per organisasi setelah peninjauan, karena job ini dapat memproses jutaan baris dan mengunduh media. Impor data operasional normal dalam panduan ini, yaitu membuat Pengguna, membuat Bisnis, mengunggah wajah profil, mengunggah daftar blokir wajah, atau menambahkan entri daftar, tidak memerlukan pengaktifan migrasi khusus selain izin normal untuk kunci API, ketersediaan produk, dan batas laju untuk endpoint tersebut.Job impor historis juga berjalan pada pekerja yang terisolasi dengan batas ukuran file, batas jumlah baris, URL media yang hanya menggunakan HTTPS, pemblokiran URL jaringan privat, batas 4 job impor aktif per aplikasi, dan pencatatan error per baris.## Status kanonis| Hasil penyedia | Status Didit |
| - | - |
| Approved / Green / Verified | `Approved` |
| Declined / Red / Rejected | `Declined` |
| Peninjauan manual / Pending / Perlu peninjauan | `In Review` |
| Incomplete / Init / Baris historis yang tidak diketahui | `Expired` |## IdempotensiDidit menggunakan `external_id` sebagai kunci idempotensi impor untuk impor Verifikasi Pengguna dan Verifikasi Bisnis, dibatasi per aplikasi. Impor transaksi menggunakan `transaction_id` per aplikasi. Mencoba ulang file yang sama akan melewati baris yang sudah diimpor dan membuat baris yang belum diproses.## Impor pengguna, wajah profil, dan daftar blokirGunakan jalur berikut jika Anda tidak sedang membuat ulang sesi verifikasi yang sudah selesai:### Impor profil penggunaBuat pengguna dengan [`POST /v3/users/create/`](https://docs.didit.me/id/management-api/users/create) atau impor CSV Business Console di [Impor dan Ekspor Pengguna](https://docs.didit.me/id/entities/users/import-export.md). Cara ini hanya membuat atau memperbarui profil `VendorUser`. Cara ini tidak membuat sesi verifikasi, keputusan KYC, laporan dokumen, peringatan, atau riwayat webhook.Gunakan cara ini jika Anda ingin Didit mengetahui bahwa pelanggan tersebut ada sebelum pemeriksaan berikutnya, atau jika Anda perlu melengkapi kolom mirip CRM, misalnya `display_name`, tag, atau metadata, pada data yang sudah ada.### Unggah wajah profil tepercayaSetelah profil pengguna tersedia, unggah wajah profil tepercaya dengan [`POST /v3/organization/{organization_id}/application/{application_id}/vendor-users/by-id/{didit_internal_id}/faces/upload/`](https://docs.didit.me/id/management-api/users/upload-face). Cara ini melampirkan bukti biometrik ke profil pengguna dan mengindeksnya untuk deteksi duplikat serta pencarian wajah.Cara ini **tidak** memasukkan wajah ke daftar blokir. Cara ini berguna jika Anda memiliki gambar profil tepercaya dari penyedia KYC sebelumnya dan ingin pemeriksaan Didit berikutnya membandingkannya dengan gambar tersebut.### Impor daftar blokir dan daftar izin wajahUntuk memblokir atau mengizinkan wajah secara langsung, gunakan [`POST /v3/lists/{list_uuid}/entries/face-upload/`](https://docs.didit.me/id/management-api/lists/upload-face) dengan daftar bertipe wajah. Didit mengekstrak embedding biometrik dan menyimpannya sebagai entri daftar.Gunakan cara ini untuk gambar penipu yang sudah diketahui, wajah dalam daftar izin tepercaya, atau migrasi daftar penipuan dari penyedia. Jika wajah berasal dari sesi Didit yang sudah ada, utamakan [`POST /v3/lists/{list_uuid}/entries/`](https://docs.didit.me/id/management-api/lists/create-entry) dengan `reference_session_id`. Didit akan mengekstrak wajah yang tepat dari sesi tersebut dan menautkan entri kembali ke sumbernya.### Impor daftar pengguna, bisnis, dokumen, dompet, email, telepon, IP, atau perangkatGunakan [`POST /v3/lists/{list_uuid}/entries/`](https://docs.didit.me/id/management-api/lists/create-entry) untuk nilai daftar selain wajah. Jalur ini tepat untuk daftar blokir dan daftar izin dari penyedia, daftar chargeback, alamat dompet, IP berisiko yang sudah diketahui, sidik jari perangkat, nomor dokumen, email, telepon, pengguna, atau bisnis.## Langkah berikutnya> [card] [Impor pengguna](https://docs.didit.me/id/entities/users/import-export.md)
>
> Muat profil pengguna dan lampirkan wajah profil tepercaya.> [card] [Impor bisnis](https://docs.didit.me/id/entities/businesses/import-export.md)
>
> Muat profil bisnis sebelum menjalankan KYB.> [card] [Unggah wajah profil](https://docs.didit.me/id/management-api/users/upload-face.md)
>
> Lampirkan gambar wajah tepercaya ke pengguna yang sudah diimpor.> [card] [Unggah wajah ke daftar](https://docs.didit.me/id/management-api/lists/upload-face.md)
>
> Tambahkan wajah ke daftar blokir atau daftar izin.> [card] [Buat entri daftar](https://docs.didit.me/id/management-api/lists/create-entry.md)
>
> Impor telepon, email, dompet, dokumen, IP, perangkat, pengguna, atau bisnis ke dalam daftar.> [card] [Batas laju](https://docs.didit.me/id/integration/rate-limiting.md)
>
> Rancang loop migrasi dan coba lagi yang aman.


## OpenAPI

````yaml id/openapi-25.json POST /v3/session/imports/
openapi: 3.0.0
info:
  version: 3.0.0
  title: Didit Verification API
  description: API Verifikasi Identitas. Lakukan autentikasi dengan header x-api-key.
servers:
  - url: https://verification.didit.me
security: []
tags: []
paths:
  /v3/session/imports/:
    post:
      tags:
        - Sessions
      summary: Buat pekerjaan impor verifikasi
      description: >-
        Buat tugas impor asinkron untuk sesi Verifikasi Pengguna historis, sesi
        Verifikasi Bisnis, catatan pemantauan transaksi, atau aturan status
        kustom alur kerja. Atur `source=provider` untuk bermigrasi dari penyedia
        lain: Didit membaca Sumsub, Onfido, Persona, dan ComplyCube dengan kunci
        baca-saja Anda, membaca catatan Veriff, iDenfy, dan MetaMap berdasarkan
        ID yang Anda unggah di `file`, serta mengimpor file ekspor dalam format
        Didit untuk penyedia lainnya. ID catatan diberi namespace berdasarkan
        penyedia (`sumsub:<id>`) sehingga eksekusi ulang akan melewati semua
        yang sudah ada di Didit, dan catatan yang diimpor melalui file dengan ID
        penyedia tanpa namespace juga dikenali, di kedua arah, sehingga beralih
        antara impor file dan migrasi penyedia tidak akan pernah mengimpor
        catatan dua kali. Sebuah aplikasi dapat menjalankan hingga 4 tugas impor
        sekaligus; tugas yang terputus oleh deploy atau restart worker akan
        berlanjut secara otomatis dari baris terakhir yang diimpor. Impor
        dinonaktifkan secara default dan harus diaktifkan per organisasi oleh
        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: >-
                    Apa yang akan diimpor: sesi Verifikasi Pengguna historis,
                    sesi Verifikasi Bisnis (KYB) historis, aturan status kustom
                    alur kerja, atau catatan pemantauan transaksi historis.
                workflow_id:
                  type: string
                  format: uuid
                  description: >-
                    UUID alur kerja tempat sesi yang diimpor atau aturan status
                    harus ditautkan. Wajib diisi untuk user_verification,
                    business_verification, dan status_rules. Abaikan untuk
                    transaksi.
                source_format:
                  type: string
                  enum:
                    - csv
                    - ndjson
                  description: >-
                    Opsional. Disimpulkan dari ekstensi file yang diunggah jika
                    tidak diberikan.
                file:
                  type: string
                  format: binary
                  description: >-
                    File CSV atau NDJSON kanonis. Gunakan NDJSON untuk impor
                    berukuran besar. Ukuran unggahan maksimum 25 MB (gunakan
                    `source_file_url` untuk file yang lebih besar). Saling
                    eksklusif dengan `source_file_url`.
                source_file_url:
                  type: string
                  format: uri
                  description: >-
                    Alternatif untuk unggahan file. Harus berupa URL HTTPS yang
                    mengarah ke alamat publik (jaringan privat/loopback
                    ditolak). Saling eksklusif dengan `file`.
                source:
                  type: string
                  enum:
                    - file
                    - provider
                  description: >-
                    `provider` menandakan ini adalah migrasi dari penyedia
                    verifikasi identitas lain. Jangan sertakan untuk impor file.
                provider:
                  type: string
                  enum:
                    - sumsub
                    - jumio
                    - veriff
                    - onfido
                    - persona
                    - metamap
                    - socure
                    - idnow
                    - shufti
                    - idenfy
                    - ondato
                    - trulioo
                    - au10tix
                    - complycube
                    - other
                  description: >-
                    Sumber migrasi, dari `GET /v3/session/imports/providers/`.
                    Wajib diisi jika `source` adalah `provider`.
                credentials:
                  type: object
                  additionalProperties:
                    type: string
                  description: >-
                    Kunci hanya-baca penyedia, dengan nama kolom yang tercantum
                    dalam `credential_fields`. Dienkripsi saat disimpan, tidak
                    pernah dikembalikan, dan dihapus saat impor selesai. Kirim
                    sebagai string JSON dalam multipart.
                options:
                  type: object
                  properties:
                    region:
                      type: string
                      description: >-
                        Wilayah penyedia, salah satu dari `regions` miliknya
                        (Onfido: `eu`, `us`, `ca`).
                status_mapping:
                  type: object
                  additionalProperties:
                    type: string
                    enum:
                      - Approved
                      - Declined
                      - In Review
                      - Expired
                      - Not Finished
                      - Abandoned
                  description: >-
                    Pengeditan pada pemetaan status default penyedia: status
                    sumber ke status Didit. `Not Finished` dan `Abandoned`
                    dilewati dan dihitung, tidak pernah diimpor.
                dry_run:
                  type: boolean
                  default: false
                  description: >-
                    Hitung apa yang akan diimpor oleh migrasi (berdasarkan
                    status, sudah ada di Didit, orang yang sama, belum selesai)
                    dan tidak menulis apa pun. Pekerjaan berakhir dengan status
                    `READY`; mulai dengan `POST
                    /v3/session/imports/{importId}/start/`.
                face_templates:
                  type: boolean
                  default: false
                  description: >-
                    Buat templat wajah dari swafoto yang diimpor dan cari
                    terhadap wajah serta daftar blokir aplikasi. Kecocokan hanya
                    ditandai untuk ditinjau. Memerlukan
                    `lawful_basis_confirmed`.
                lawful_basis_confirmed:
                  type: boolean
                  default: false
                  description: >-
                    Mengonfirmasi bahwa Anda memiliki dasar hukum untuk
                    membagikan swafoto ini kepada Didit sebagai pemroses.
          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: >-
                    Apa yang akan diimpor: sesi Verifikasi Pengguna historis,
                    sesi Verifikasi Bisnis (KYB) historis, aturan status kustom
                    alur kerja, atau catatan pemantauan transaksi historis.
                workflow_id:
                  type: string
                  format: uuid
                  description: >-
                    UUID alur kerja tempat sesi yang diimpor atau aturan status
                    harus ditautkan. Wajib diisi untuk user_verification,
                    business_verification, dan status_rules. Abaikan untuk
                    transaksi.
                source_format:
                  type: string
                  enum:
                    - csv
                    - ndjson
                  description: >-
                    Opsional. Disimpulkan dari ekstensi file URL jika tidak
                    diberikan.
                source_file_url:
                  type: string
                  format: uri
                  description: >-
                    Alternatif untuk unggahan file. Harus berupa URL HTTPS yang
                    mengarah ke alamat publik (jaringan privat/loopback
                    ditolak). Saling eksklusif dengan `file`.
                source:
                  type: string
                  enum:
                    - file
                    - provider
                  description: >-
                    `provider` menandakan ini adalah migrasi dari penyedia
                    verifikasi identitas lain. Jangan sertakan untuk impor file.
                provider:
                  type: string
                  enum:
                    - sumsub
                    - jumio
                    - veriff
                    - onfido
                    - persona
                    - metamap
                    - socure
                    - idnow
                    - shufti
                    - idenfy
                    - ondato
                    - trulioo
                    - au10tix
                    - complycube
                    - other
                  description: >-
                    Sumber migrasi, dari `GET /v3/session/imports/providers/`.
                    Wajib diisi jika `source` adalah `provider`.
                credentials:
                  type: object
                  additionalProperties:
                    type: string
                  description: >-
                    Kunci hanya-baca penyedia, dengan nama kolom yang tercantum
                    dalam `credential_fields`. Dienkripsi saat disimpan, tidak
                    pernah dikembalikan, dan dihapus saat impor selesai. Kirim
                    sebagai string JSON dalam multipart.
                options:
                  type: object
                  properties:
                    region:
                      type: string
                      description: >-
                        Wilayah penyedia, salah satu dari `regions` miliknya
                        (Onfido: `eu`, `us`, `ca`).
                status_mapping:
                  type: object
                  additionalProperties:
                    type: string
                    enum:
                      - Approved
                      - Declined
                      - In Review
                      - Expired
                      - Not Finished
                      - Abandoned
                  description: >-
                    Pengeditan pada pemetaan status default penyedia: status
                    sumber ke status Didit. `Not Finished` dan `Abandoned`
                    dilewati dan dihitung, tidak pernah diimpor.
                dry_run:
                  type: boolean
                  default: false
                  description: >-
                    Hitung apa yang akan diimpor oleh migrasi (berdasarkan
                    status, sudah ada di Didit, orang yang sama, belum selesai)
                    dan tidak menulis apa pun. Pekerjaan berakhir dengan status
                    `READY`; mulai dengan `POST
                    /v3/session/imports/{importId}/start/`.
                face_templates:
                  type: boolean
                  default: false
                  description: >-
                    Buat templat wajah dari swafoto yang diimpor dan cari
                    terhadap wajah serta daftar blokir aplikasi. Kecocokan hanya
                    ditandai untuk ditinjau. Memerlukan
                    `lawful_basis_confirmed`.
                lawful_basis_confirmed:
                  type: boolean
                  default: false
                  description: >-
                    Mengonfirmasi bahwa Anda memiliki dasar hukum untuk
                    membagikan swafoto ini kepada Didit sebagai pemroses.
            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: >-
            Pekerjaan impor diterima. Lakukan polling pada `uuid` yang
            dikembalikan hingga `status` menjadi `COMPLETED` atau `FAILED`.
          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: >-
            Alur kerja, tipe file, ukuran file, URL sumber, atau kombinasi
            selektor tidak valid. Migrasi yang kuncinya ditolak penyedia akan
            merespons `code` (`invalid_credentials`, `missing_permission`,
            `wrong_region`, `provider_unavailable`, `rate_limited`,
            `ids_required`, `record_not_found`), `missing_permissions`, dan
            `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: >-
            Impor tidak diaktifkan, aplikasi sandbox, atau kunci API tidak ada
            (kunci yang salah, dicabut, atau kedaluwarsa mendapatkan `401`).
            Impor verifikasi dinonaktifkan secara default dan harus diaktifkan
            per organisasi oleh 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: >-
            Aplikasi sudah memiliki 4 tugas impor aktif
            (PENDING/PROCESSING/PAUSED), batas maksimum yang dapat dijalankan
            secara bersamaan. Tunggu hingga salah satunya selesai sebelum
            memulai yang lain.
          content:
            application/json:
              examples:
                Active job:
                  value:
                    detail: >-
                      This application already has 4 active import jobs, the
                      most it can run at once. Wait for one 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 pekerjaan impor. Gunakan nilai ini untuk melakukan polling
            progres dan mengambil kesalahan pada baris.
        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: >-
            Status tugas seperti yang ditampilkan konsol; `errors` adalah tugas
            selesai dengan baris yang ditolak.
        source:
          type: string
          enum:
            - file
            - api
            - provider
        provider:
          type: string
          description: Sumber migrasi; kosong untuk impor file atau API.
        provider_options:
          type: object
        credential_hint:
          type: string
          description: >-
            Karakter-karakter pertama dari kunci yang disimpan oleh migrasi.
            Kunci itu sendiri tidak pernah dikembalikan.
        credentials_expires_at:
          type: string
          format: date-time
          nullable: true
        resumes_at:
          type: string
          format: date-time
          nullable: true
          description: >-
            Saat tugas yang dijeda oleh batas laju penyedia dilanjutkan kembali
            secara otomatis.
        status_mapping:
          type: object
          additionalProperties:
            type: string
        is_dry_run:
          type: boolean
        dry_run_summary:
          type: object
          description: >-
            Hasil yang ditemukan oleh dry run: `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: >-
        Kunci API aplikasi Anda, dari Developers -> API keys di Business
        Console. Kunci utama memiliki akses penuh. Kunci bernama dapat diberi
        cakupan: none, read, atau write per sumber daya, dibatasi pada beberapa
        alur kerja atau pada sesi yang disetujui, pada daftar alamat IP, dan
        pada tanggal kedaluwarsa. 401 berarti kuncinya salah, dicabut, atau
        kedaluwarsa; 403 berarti tidak ada kunci yang dikirimkan, kunci tidak
        memiliki akses ke sumber daya atau tindakan ini, atau permintaan datang
        dari alamat di luar daftar IP-nya; 404 pada rute sesi berarti sesi
        berada di luar alur kerja atau status kunci tersebut. Kunci tanpa akses
        media menerima URL gambar, video, dan PDF sebagai null, dan kunci tanpa
        izin tulis sesi menerima tautan sesi dan token sebagai null. Lihat
        https://docs.didit.me/console/api-keys.

````

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