> ## 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 में डेटा ले जाते समय कौन-सा इंपोर्ट मार्ग सही है। ग्राहक अक्सर दो अलग कामों को "import" कहते हैं:- **ऐतिहासिक सत्यापन कार्य इंपोर्ट करना**: पूरे हो चुके KYC, KYB, लेन-देन निगरानी, या वर्कफ़्लो-नियम रिकॉर्ड फिर से बनाना, ताकि Didit पुराना प्रदाता इतिहास दिखा सके। इसके लिए `POST /v3/session/imports/` का उपयोग करें।
- **परिचालन डेटा इंपोर्ट करना**: उपयोगकर्ता, व्यवसाय, प्रोफ़ाइल चेहरे, ब्लॉकलिस्ट प्रविष्टियाँ, या अलाउलिस्ट प्रविष्टियाँ बनाना, ताकि Didit उन्हें भविष्य की जाँच में उपयोग कर सके। इसके लिए इकाई, चेहरा और सूची APIs का उपयोग करें।सत्यापन इंपोर्ट 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`, विषय पक्ष और प्रतिपक्ष पक्ष, प्रदाता परिणाम, Travel Rule डेटा, नेटवर्क स्नैपशॉट, मेटाडेटा | नियम इंजन, KYT, वॉलेट स्क्रीनिंग या फ़िएट लेन-देन निगरानी इतिहास स्थानांतरित करना |
| कस्टम वर्कफ़्लो स्थिति नियम इंपोर्ट करना | `POST /v3/session/imports/` के साथ `import_type=status_rules` | `VerificationSettings.feature_status_rules` | किसी अन्य प्रदाता या स्प्रेडशीट से नीति तर्क को Didit के वर्कफ़्लो इंजन में स्थानांतरित करना |
| ऐतिहासिक सत्रों के बिना उपयोगकर्ता बनाना | `POST /v3/users/create/` या Console 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/` या Console CSV इंपोर्ट | `VendorBusiness` प्रोफ़ाइल पंक्तियाँ | KYB चलाने से पहले व्यवसाय ग्राहक सूची लोड करना |> [!NOTE]
>
> यदि आपको भविष्य की जाँच के लिए केवल उपयोगकर्ता या व्यवसाय प्रोफ़ाइल चाहिए, तो ऐतिहासिक सत्यापन सत्र इंपोर्ट न करें। उपयोगकर्ता और व्यवसाय इकाई APIs का उपयोग करें। यदि आप चाहते हैं कि पुराने प्रदाता का निर्णय, दस्तावेज़ फ़ील्ड, चेतावनियाँ या साक्ष्य 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-style रजिस्ट्री एक्सपोर्ट, आंतरिक KYB टूल | कंपनी का नाम, पंजीकरण संख्या, देश, रजिस्ट्री स्थिति, अधिकारी, वास्तविक स्वामी, जोखिम स्तर, कच्चा रजिस्ट्री पेलोड | `import_type=business_verification` का उपयोग करें। अधिकारी और UBO JSON ऐरे के रूप में भेजे जाते हैं। |
| लेन-देन निगरानी / KYT प्रदाता | Sumsub Transaction Monitoring, Chainalysis-style KYT एक्सपोर्ट, Crystal, Merkle Science, Sardine, Unit21, Alloy, आंतरिक नियम इंजन | लेन-देन ID, राशि, मुद्रा, दिशा, विषय/प्रतिपक्ष, नियम हिट, प्रदाता के परिणाम, Travel Rule स्थिति, नेटवर्क ग्राफ़ स्नैपशॉट | `import_type=transactions` का उपयोग करें। इंपोर्ट किए गए लेन-देन ऐतिहासिक रिकॉर्ड हैं; डिफ़ॉल्ट रूप से उनकी दोबारा स्क्रीनिंग नहीं होती। |
| वर्कफ़्लो और नीति स्प्रेडशीट | अनुपालन नीति एक्सपोर्ट, प्रदाता के नियम तालिकाएँ, आंतरिक जोखिम स्प्रेडशीट | हर सुविधा के लिए स्थिति नियम, जैसे "अगर जारीकर्ता देश X है, तो पहचान सत्यापन को समीक्षाधीन पर सेट करें" | `import_type=status_rules` का उपयोग करें। सहेजने से पहले नियमों को Didit के वर्कफ़्लो फ़ील्ड कैटलॉग के विरुद्ध सत्यापित किया जाता है। |
| उपयोगकर्ता/प्रोफ़ाइल स्टोर | CRM, ग्राहक DB, प्रदाता उपयोगकर्ता एक्सपोर्ट, डेटा वेयरहाउस | `vendor_data`, प्रदर्शन नाम, मेटाडेटा, टैग, विश्वसनीय चेहरे की छवियाँ | User APIs और प्रोफ़ाइल फ़ेस अपलोड का उपयोग करें। यह पूर्ण सत्यापन सत्र के समान नहीं है। |
| ब्लॉकलिस्ट / अलाउलिस्ट डेटा | प्रदाता की धोखाधड़ी सूचियाँ, आंतरिक धोखाधड़ी ऑप्स शीट, चार्जबैक सूचियाँ, प्रतिबंध से जुड़ी आंतरिक सूचियाँ | ईमेल, फ़ोन, दस्तावेज़, वॉलेट, IP, डिवाइस फ़िंगरप्रिंट, चेहरे, देश, उपयोगकर्ता, व्यवसाय | Lists APIs का उपयोग करें। चेहरा छवियों के लिए समर्पित चेहरा अपलोड endpoint का उपयोग करें, ताकि Didit बायोमेट्रिक एम्बेडिंग निकाल सके। |## माइग्रेशन वर्कफ़्लो1) तय करें कि आप इतिहास, प्रोफ़ाइल, चेहरे, सूचियाँ, लेन-देन या नियम में से क्या इंपोर्ट कर रहे हैं।
2) पुराने प्रदाता से डेटा स्वयं एक्सपोर्ट करें। पुराने प्रदाता की API कुंजियाँ Didit को न भेजें।
3) प्रदाता के एक्सपोर्ट को मेल खाने वाले Didit कैनोनिकल CSV या NDJSON टेम्पलेट में बदलें।
4) बड़े माइग्रेशन के लिए NDJSON को प्राथमिकता दें और फ़ाइलों को ऐसे हिस्सों में बाँटें जिन्हें आप अलग-अलग दोबारा चला सकें।
5) इंपोर्ट जॉब बनाएँ और प्रगति की जाँच करें।
6) पंक्ति त्रुटियाँ प्राप्त करें, केवल विफल पंक्तियाँ ठीक करें और उन्हें पुनः प्रयास करें। सभी इंपोर्ट जॉब उनके स्वाभाविक बाहरी ID पर इडेम्पोटेंट होते हैं।## इंपोर्ट जॉब बनाएँएकल मल्टीपार्ट अनुरोध के साथ इंपोर्ट जॉब बनाएँ:```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 को स्ट्रीम करना, बाँटना, मान्य करना और दोबारा चलाना आसान होता है।एक एप्लिकेशन एक साथ अधिकतम 4 इंपोर्ट जॉब चला सकता है, इसलिए बड़े माइग्रेशन को कई फ़ाइलों में बाँटें और हर फ़ाइल के लिए एक जॉब शुरू करें।
हर जॉब किसी पंक्ति की मीडिया फ़ाइलें समानांतर रूप से डाउनलोड करता है।
डिप्लॉय या वर्कर रीस्टार्ट से बाधित जॉब अपनी आखिरी इंपोर्ट की गई पंक्ति से अपने आप आगे बढ़ता है, इसलिए आपको उसे दोबारा शुरू करने की ज़रूरत नहीं है।लेन-देन इंपोर्ट के लिए `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` में से कोई एक | HTTPS URL, जिससे Didit फ़ाइल डाउनलोड करता है। निजी नेटवर्क के URL अस्वीकार किए जाते हैं। |
| `source_format` | नहीं | `csv` या `ndjson`। छोड़ने पर फ़ाइल एक्सटेंशन से अनुमान लगाया जाता है। |### रिकॉर्ड कैसे ट्रैक और डुप्लिकेट-मुक्त किए जाते हैंडेटा स्रोत के लिए कोई अनुरोध फ़ील्ड नहीं है; हर इंपोर्ट Didit के कैनोनिकल स्कीमा का उपयोग करता है। हर इंपोर्ट किए गए रिकॉर्ड में ट्रेसेबिलिटी के लिए `metadata.imported_from = "generic"` सहेजा जाता है।`user_verification` और `business_verification` इंपोर्ट एप्लिकेशन के भीतर `external_id` के आधार पर पंक्तियों को डुप्लिकेट-मुक्त करते हैं, इसलिए उसी फ़ाइल को दोबारा चलाने पर डुप्लिकेट रिकॉर्ड नहीं बनते। `transactions` इंपोर्ट इसके बजाय `transaction_id` पर डुप्लिकेट-मुक्त करते हैं।प्रदाता माइग्रेशन (`source=provider`) हर रिकॉर्ड को `<provider>:<id>` के रूप में सहेजता है, उदाहरण के लिए `sumsub:5f8c0e2a9b1d4c3e2f1a0b9c`।
उपयोगकर्ता सत्यापन फ़ाइल इंपोर्ट में अगर प्रदाता का केवल ID (`5f8c0e2a9b1d4c3e2f1a0b9c`) भेजा गया था, तो उसे दोनों दिशाओं में एक ही रिकॉर्ड माना जाता है।
इसलिए आप फ़ाइलों से माइग्रेशन शुरू करके प्रदाता माइग्रेशन से पूरा कर सकते हैं, या इसका उलटा कर सकते हैं, और कोई रिकॉर्ड दो बार इंपोर्ट नहीं होगा।## दस्तावेज़ की फ़ोटो, वीडियो और सेल्फ़ी साक्ष्य आयात करें`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 हर वीडियो को लगभग 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, link-local रेंज, या आंतरिक मेटाडेटा होस्ट पर रिज़ॉल्व नहीं होने चाहिए।
- इमेज के लिए 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 कुंजी अनुमतियों, उत्पाद उपलब्धता और उन endpoint की रेट लिमिट के अलावा किसी विशेष माइग्रेशन सक्षमता की आवश्यकता नहीं है।ऐतिहासिक आयात जॉब अलग किए गए वर्कर्स पर भी चलते हैं, जिनमें फ़ाइल साइज़ सीमा, पंक्ति बजट, केवल HTTPS मीडिया URL, निजी-नेटवर्क URL ब्लॉकिंग, प्रति एप्लिकेशन 4 सक्रिय आयात जॉब की सीमा, और प्रति पंक्ति त्रुटि कैप्चर शामिल हैं।## मानक स्टेटस| प्रदाता परिणाम | Didit स्टेटस |
| - | - |
| Approved / Green / Verified | `Approved` |
| Declined / Red / Rejected | `Declined` |
| Manual review / Pending / Review needed | `In Review` |
| Incomplete / Init / Unknown historical row | `Expired` |## आइडेम्पोटेंसीDidit उपयोगकर्ता सत्यापन और व्यवसाय सत्यापन आयात के लिए `external_id` को आयात आइडेम्पोटेंसी कुंजी के रूप में उपयोग करता है, जो प्रति एप्लिकेशन के दायरे में है। लेन-देन आयात प्रति एप्लिकेशन `transaction_id` का उपयोग करते हैं। एक ही फ़ाइल को दोबारा चलाने पर, जो पंक्तियाँ पहले ही आयात हो चुकी हैं वे छोड़ दी जाती हैं, और जो पंक्तियाँ अभी प्रोसेस नहीं हुई थीं वे बनाई जाती हैं।## उपयोगकर्ता, प्रोफ़ाइल फ़ेस और ब्लॉकलिस्ट आयात करेंजब आप पूरा हो चुका सत्यापन सत्र दोबारा नहीं बना रहे हों, तब इन तरीकों का उपयोग करें:### उपयोगकर्ता प्रोफ़ाइल आयात करें[`POST /v3/users/create/`](https://docs.didit.me/hi/management-api/users/create) से उपयोगकर्ता बनाएँ, या [Import and Export Users](https://docs.didit.me/hi/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/hi/management-api/users/upload-face) से भरोसेमंद प्रोफ़ाइल चेहरा अपलोड करें। इससे उपयोगकर्ता प्रोफ़ाइल से बायोमेट्रिक साक्ष्य जुड़ता है और उसे डुप्लिकेट पहचान और चेहरा खोज के लिए इंडेक्स किया जाता है।इससे चेहरा **ब्लॉकलिस्ट नहीं** होता। यह तब उपयोगी है जब आपके पास किसी पिछले KYC प्रदाता की भरोसेमंद प्रोफ़ाइल छवि हो और आप चाहते हों कि भविष्य की Didit जाँचें उसी से मिलान करें।### चेहरा ब्लॉकलिस्ट और अनुमति सूची आयात करेंकिसी चेहरे को सीधे ब्लॉक या अनुमति देने के लिए, चेहरे के प्रकार वाली सूची के साथ [`POST /v3/lists/{list_uuid}/entries/face-upload/`](https://docs.didit.me/hi/management-api/lists/upload-face) का उपयोग करें। Didit चेहरे का बायोमेट्रिक एम्बेडिंग निकालता है और एक सूची प्रविष्टि सहेजता है।इसका उपयोग ज्ञात धोखेबाज़ों की छवियों, भरोसेमंद अनुमति सूची के चेहरों, या प्रदाताओं की धोखाधड़ी सूचियों के माइग्रेशन के लिए करें। अगर चेहरा किसी मौजूदा Didit सत्र से है, तो `reference_session_id` के साथ [`POST /v3/lists/{list_uuid}/entries/`](https://docs.didit.me/hi/management-api/lists/create-entry) को प्राथमिकता दें। Didit सत्र से सही चेहरा निकालता है और प्रविष्टि को स्रोत से जोड़ देता है।### उपयोगकर्ता, व्यवसाय, दस्तावेज़, वॉलेट, ईमेल, फ़ोन, IP या डिवाइस सूचियाँ आयात करेंचेहरे के अलावा अन्य सूची मानों के लिए [`POST /v3/lists/{list_uuid}/entries/`](https://docs.didit.me/hi/management-api/lists/create-entry) का उपयोग करें। प्रदाता की ब्लॉकलिस्ट, अनुमति सूची, चार्जबैक सूचियाँ, वॉलेट पते, ज्ञात जोखिम वाले IP, डिवाइस फ़िंगरप्रिंट, दस्तावेज़ संख्याएँ, ईमेल, फ़ोन, उपयोगकर्ता या व्यवसाय इसी तरीके से आयात होते हैं।## अगले चरण> [card] [उपयोगकर्ता आयात करें](https://docs.didit.me/hi/entities/users/import-export.md)
>
> उपयोगकर्ता प्रोफ़ाइल लोड करें और भरोसेमंद प्रोफ़ाइल चेहरे जोड़ें।> [card] [व्यवसाय आयात करें](https://docs.didit.me/hi/entities/businesses/import-export.md)
>
> KYB चलाने से पहले व्यवसाय प्रोफ़ाइल लोड करें।> [card] [प्रोफ़ाइल फ़ेस अपलोड करें](https://docs.didit.me/hi/management-api/users/upload-face.md)
>
> आयातित उपयोगकर्ताओं में भरोसेमंद चेहरे की छवियाँ जोड़ें।> [card] [सूची में चेहरा अपलोड करें](https://docs.didit.me/hi/management-api/lists/upload-face.md)
>
> ब्लॉकलिस्ट या अनुमति सूची में चेहरे जोड़ें।> [card] [सूची प्रविष्टि बनाएँ](https://docs.didit.me/hi/management-api/lists/create-entry.md)
>
> फ़ोन, ईमेल, वॉलेट, दस्तावेज़, IP, डिवाइस, उपयोगकर्ता या व्यवसाय सूचियों में आयात करें।> [card] [रेट लिमिट](https://docs.didit.me/hi/integration/rate-limiting.md)
>
> सुरक्षित माइग्रेशन लूप और पुनः प्रयास डिज़ाइन करें।


## OpenAPI

````yaml hi/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: >-
        ऐतिहासिक उपयोगकर्ता सत्यापन (User Verification) सत्रों, व्यवसाय सत्यापन
        (Business Verification) सत्रों, लेन-देन निगरानी रिकॉर्डों, या वर्कफ़्लो
        कस्टम स्थिति नियमों के लिए एक एसिंक्रोनस इंपोर्ट जॉब बनाएं। किसी अन्य
        प्रदाता से माइग्रेट करने के लिए `source=provider` सेट करें: Didit आपकी
        रीड-ओनली कुंजी के साथ Sumsub, Onfido, Persona और ComplyCube को पढ़ता है,
        `file` में आपके द्वारा अपलोड की गई ID द्वारा Veriff, iDenfy और MetaMap
        रिकॉर्ड पढ़ता है, और अन्य प्रदाताओं के लिए Didit के प्रारूप में एक
        एक्सपोर्ट फ़ाइल इंपोर्ट करता है। रिकॉर्ड ID प्रदाता द्वारा नेमस्पेस की
        जाती हैं (`sumsub:<id>`) ताकि फिर से चलाने पर Didit में पहले से मौजूद हर
        चीज़ छूट जाए, और प्रदाता की केवल ID वाली फ़ाइल के माध्यम से इंपोर्ट किए
        गए रिकॉर्ड को भी दोनों दिशाओं में पहचाना जाता है, इसलिए फ़ाइल इंपोर्ट और
        प्रदाता माइग्रेशन के बीच स्विच करने पर कोई भी रिकॉर्ड कभी दो बार इंपोर्ट
        नहीं होता है। एक एप्लिकेशन एक साथ अधिकतम 4 इंपोर्ट जॉब चला सकता है;
        डिप्लॉय या वर्कर रीस्टार्ट से बाधित जॉब अपनी पिछली इंपोर्ट की गई पंक्ति
        से स्वतः जारी रहता है। इंपोर्ट डिफ़ॉल्ट रूप से अक्षम होते हैं और उन्हें
        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 के लिए आवश्यक। लेन-देन के लिए छोड़ दें।
                source_format:
                  type: string
                  enum:
                    - csv
                    - ndjson
                  description: >-
                    वैकल्पिक। छोड़े जाने पर अपलोड किए गए फ़ाइल एक्सटेंशन से
                    अनुमान लगाया जाता है।
                file:
                  type: string
                  format: binary
                  description: >-
                    कैनोनिकल CSV या NDJSON फ़ाइल। बड़े इंपोर्ट के लिए NDJSON का
                    उपयोग करें। अधिकतम अपलोड आकार 25 MB (बड़ी फ़ाइलों के लिए
                    `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 के लिए आवश्यक। लेन-देन के लिए छोड़ दें।
                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: >-
            इंपोर्ट जॉब स्वीकृत हो गया। लौटाए गए `uuid` को तब तक पोल करें जब तक
            कि `status` `COMPLETED` या `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: >-
            अमान्य वर्कफ़्लो, फ़ाइल प्रकार, फ़ाइल आकार, स्रोत 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: >-
            एप्लिकेशन में पहले से ही 4 सक्रिय इंपोर्ट जॉब
            (PENDING/PROCESSING/PAUSED) हैं, जो एक साथ चलने की अधिकतम सीमा है।
            दूसरा शुरू करने से पहले किसी एक के समाप्त होने की प्रतीक्षा करें।
          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। प्रगति को पोल करने और पंक्ति त्रुटियों को प्राप्त
            करने के लिए इस मान का उपयोग करें।
        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
        से। प्राथमिक कुंजी के पास पूर्ण एक्सेस होता है। एक नामित कुंजी को स्कोप
        किया जा सकता है: प्रति संसाधन none, read या write, कुछ वर्कफ़्लो या
        स्वीकृत सत्रों तक सीमित, IP पतों की सूची तक सीमित, और समाप्ति तिथि तक
        सीमित। 401 का अर्थ है कि कुंजी गलत है, निरस्त कर दी गई है या उसकी
        समय-सीमा समाप्त हो गई है; 403 का अर्थ है कि कोई कुंजी नहीं भेजी गई थी,
        कुंजी के पास इस संसाधन या कार्रवाई का एक्सेस नहीं है, या अनुरोध उसकी IP
        सूची से बाहर के पते से आया था; सत्र रूट पर 404 का अर्थ है कि सत्र कुंजी
        के वर्कफ़्लो या स्थितियों से बाहर है। मीडिया एक्सेस के बिना एक कुंजी को
        छवि, वीडियो और PDF URL null के रूप में प्राप्त होते हैं, और सत्र write
        के बिना एक कुंजी को सत्र लिंक और token null के रूप में प्राप्त होते हैं।
        देखें https://docs.didit.me/console/api-keys।

````

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