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

# उपयोगकर्ता आयात और निर्यात: CSV बल्क ऑपरेशन

> Didit के विक्रेता User entities को CSV से बल्क में लोड करें और बाहरी compliance टूलिंग के लिए पूरी उपयोगकर्ता तालिका एक्सपोर्ट करें। Business Console से उपलब्ध।



उपयोगकर्ताओं के थोक आयात/निर्यात का प्रॉम्प्ट
        प्रॉम्प्ट को क्लिपबोर्ड पर कॉपी करें



      
      

\<pre>

\````# Goal — bulk-load (or extract) Didit User entities programmatically

CSV import / export is a console-only UI feature. For programmatic bulk operations, loop `POST /v3/users/create/` for imports, optionally upload trusted profile faces with `POST /v3/organization/{organization_id}/application/{application_id}/vendor-users/by-id/{didit_internal_id}/faces/upload/`, and paginate `GET /v3/users/` for exports. There is no public CSV API endpoint.

\## Bulk import — loop the create endpoint

\```bash
\# users.json — array of records you want to seed into Didit
\# [{"vendor_data":"user-1","display_name":"Alice"}, ...]

jq -c '.[]' users.json | while read user; do
curl -X POST https://verification.didit.me/v3/users/create/ \
-H "x-api-key: $DIDIT_API_KEY" \
-H "Content-Type: application/json" \
-d "$user"
sleep 0.1   # respect rate limits — see /integration/rate-limiting
done
\```

Record shape (matches `POST /v3/users/create/`):

\```json
\{
"vendor_data": "user-42",          // required, unique per app
"display_name": "Jane Doe",        // optional
"metadata": {"tier": "premium"},   // free-form JSON
"tags": ["promo-2026"]             // optional array of strings
}
\```

\`create` is **not** idempotent — a duplicate `vendor_data` returns conflict. Branch on existence:

\```bash
\# Idempotent upsert pattern
if curl -s -o /dev/null -w "%{http_code}" \
 https://verification.didit.me/v3/users/$VD/ \
 -H "x-api-key: $DIDIT_API_KEY" | grep -q 200; then
curl -X PATCH https://verification.didit.me/v3/users/$VD/ \
-H "x-api-key: $DIDIT_API_KEY" -H "Content-Type: application/json" \
-d "$BODY"
else
curl -X POST https://verification.didit.me/v3/users/create/ \
-H "x-api-key: $DIDIT_API_KEY" -H "Content-Type: application/json" \
-d "$BODY"
fi
\```

\## Import faces from another provider

If each imported user has a trusted face image, upload it after the User exists:

\```bash
\# GET /v3/users/{vendor_data}/ or POST /v3/users/create/ first.
\# Use the returned didit_internal_id for the profile attachment endpoint.
curl -X POST https://verification.didit.me/v3/organization/$ORGANIZATION_ID/application/$APPLICATION_ID/vendor-users/by-id/$DIDIT_INTERNAL_ID/faces/upload/ \
-H "x-api-key: $DIDIT_API_KEY" \
-H "Content-Type: application/json" \
-d '{"image": "<base64-encoded-jpg-or-png>", "comment": "Imported from previous KYC provider"}'
\```

This stores the face on the User profile and enrolls it for duplicate detection and face search. It does not blocklist the face; use /management-api/lists/upload-face for blocklists.

\## Bulk export — paginate the list endpoint

\```bash
PAGE=1
while :; do
RESP=$(curl -sG https://verification.didit.me/v3/users/ \
-H "x-api-key: $DIDIT_API_KEY" \
\--data-urlencode "page=$PAGE" \
\--data-urlencode "page_size=100")
echo "$RESP" | jq -c '.results[]' >> users.ndjson
HAS_NEXT=$(echo "$RESP" | jq -r '.next // empty')
\[ -z "$HAS_NEXT" ] && break
PAGE=$((PAGE+1))
done
\```

Filter with the same query params as `GET /v3/users/` (`status`, `search`, date ranges, etc).

\## What survives on update vs what stays

\| Field | Behaviour |
\|---|---|
\| `display_name`, `metadata`, `tags` | Overwritten by PATCH |
\| `full_name`, `date_of_birth`, `portrait_image` | Read-only after a verified session (you can override via PATCH but it's logged as a manual override) |
\| Aggregate counters (`session_count`, `approved_count`, etc.) | Computed by Didit — never accept writes |
\| `features` map | Computed — never accept writes |

\## Failure modes

\- `409` on create — `vendor_data` exists; switch to PATCH.
\- `429` — rate limit; back off using `Retry-After`. Don't slam the API; insert 100ms+ between calls.
\- `400` — bad JSON or invalid country/status enum. Log the row and continue.
\- Partial failures: track `vendor_data` → status per row and retry only failures.

\## Console fallback

For one-off migrations bigger than 100K rows, the Business Console CSV import/export (Users → Import / Export) is fast and skips writing your own loop. The console runs the same validations and produces an error report.

\## Sources of truth

\- /management-api/users/create — POST /v3/users/create/ schema
\- /management-api/users/list — GET /v3/users/ pagination + filters
\- /entities/users/data-model — mutable vs read-only fields
\- /integration/rate-limiting — rate limits and Retry-After
\- /integration/integration-prompt — canonical end-to-end prompt````

\</pre>



      
      

यहाँ पेस्ट करें

Business Console आपकी टीम को बिना कोड लिखे उपयोगकर्ता (User) इकाइयों का थोक प्रबंधन करने देता है। दो प्रवाह समर्थित हैं: **CSV इंपोर्ट** (बड़ी संख्या में उपयोगकर्ता बनाएँ या अपडेट करें) और **CSV एक्सपोर्ट** (बाहरी टूल के लिए उपयोगकर्ता तालिका निकालें)।> [!NOTE]
>
> यहाँ का बल्क इंपोर्ट/एक्सपोर्ट केवल User प्रोफ़ाइल बनाता या अपडेट करता है। यह ऐतिहासिक KYC सत्र, दस्तावेज़ चेतावनियाँ, लाइवनेस साक्ष्य या प्रदाता के निर्णय दोबारा नहीं बनाता। Sumsub, MetaMap, Veriff, Onfido, Persona या किसी अन्य प्रदाता से पूरा माइग्रेशन करने के लिए, [किसी अन्य प्रदाता से डेटा इंपोर्ट करें](https://docs.didit.me/hi/sessions-api/import-verifications.md) देखें।## CSV से उपयोगकर्ता इंपोर्ट करें### कब इसका उपयोग करें- **किसी दूसरे KYC वेंडर से पहले दिन का माइग्रेशन**: अपनी मौजूदा उपयोगकर्ता सूची यहाँ लाएँ।
- **प्रदाता से चेहरे का माइग्रेशन**: पंक्तियाँ बन जाने के बाद आयात किए गए User प्रोफ़ाइल से भरोसेमंद चेहरे की छवियाँ जोड़ें।
- **किसी साझेदार की ग्राहक सूची का थोक ऑनबोर्डिंग।**
- **मेटाडेटा बैकफ़िल**: कई उपयोगकर्ताओं के टैग, स्तर या आंतरिक पहचानकर्ता एक साथ अपडेट करें।### टेम्पलेट कॉलम*Users → Import → Download template* से टेम्पलेट डाउनलोड करें। कॉलम:| कॉलम | आवश्यक | विवरण |
| - | - | - |
| `vendor_data` | हाँ | उपयोगकर्ता के लिए आपका पहचानकर्ता। प्रत्येक एप्लिकेशन में अद्वितीय होना चाहिए। |
| `display_name` | नहीं | कंसोल में दिखने वाला पठनीय नाम। |
| `full_name` | नहीं | कानूनी नाम। सत्यापित सत्र के डेटा से यह ओवरराइट हो जाएगा। |
| `email` | नहीं | ज्ञात संपर्क ईमेल। |
| `phone` | नहीं | ज्ञात संपर्क फ़ोन (E.164 प्रारूप)। |
| `country` | नहीं | ISO 3166-1 alpha-3 देश कोड। |
| `status` | नहीं | `ACTIVE`, `FLAGGED`, या `BLOCKED`। डिफ़ॉल्ट `ACTIVE` है। |
| `tags` | नहीं | कॉमा से अलग किए गए टैग। |
| `metadata_json` | नहीं | कस्टम मेटाडेटा के लिए स्ट्रिंग में बदला गया JSON। |### इंपोर्ट चलाना**1. CSV अपलोड करें***Users → Import → Upload CSV* पर जाएँ और अपनी फ़ाइल चुनें।**2. पूर्वावलोकन की समीक्षा करें**कंसोल हर पंक्ति को सत्यापित करता है। अमान्य पंक्तियाँ त्रुटि कारणों के साथ हाइलाइट होती हैं (जैसे डुप्लिकेट `vendor_data`, अमान्य देश कोड)।**3. इंपोर्ट शुरू करें**Didit पंक्तियों को अतुल्यकालिक रूप से प्रोसेस करता है। आप टैब बंद कर सकते हैं, प्रगति *Users → Import history* में ट्रैक होती है।**4. परिणामों की समीक्षा करें**इंपोर्ट पूरा होने पर इतिहास दृश्य में बनाई गई, अपडेट की गई और छोड़ी गई पंक्तियों की गिनती दिखती है, साथ ही एक डाउनलोड करने योग्य त्रुटि रिपोर्ट।### बनाना या अपडेट करना- यदि `vendor_data` मौजूद नहीं है, तो नया User बनाया जाता है।
- यदि `vendor_data` पहले से मौजूद है, तो पंक्ति मौजूदा User को अपडेट करती है (प्रोफ़ाइल फ़ील्ड और मेटाडेटा)।
- एकत्रित काउंटर और सत्यापित फ़ील्ड (स्वीकृत सत्रों से `full_name`, `date_of_birth`) इंपोर्ट द्वारा **कभी ओवरराइट नहीं** होते।### उपयोगकर्ता बनने के बाद चेहरे इंपोर्ट करेंCSV इंपोर्ट User पंक्ति बनाता या अपडेट करता है। CSV में चेहरे की छवियाँ शामिल नहीं होतीं। किसी दूसरे प्रदाता से चेहरे का बायोमेट्रिक डेटा लाने के लिए, लक्ष्य User मौजूद होने के बाद हर चेहरा अपलोड करें:**1. User बनाएँ या इंपोर्ट करें**कंसोल का CSV इंपोर्ट उपयोग करें, या लूप में [`POST /v3/users/create/`](https://docs.didit.me/hi/management-api/users/create) को कॉल करें।**2. didit\_internal\_id पढ़ें**[`GET /v3/users/{vendor_data}/`](https://docs.didit.me/hi/management-api/users/get) से User प्राप्त करें। रिस्पॉन्स में `didit_internal_id` शामिल होता है।**3. चेहरा अपलोड करें**कच्ची base64 चेहरे की छवि के साथ [`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) को कॉल करें।```bash theme={null}
curl -X POST https://verification.didit.me/v3/organization/$ORGANIZATION_ID/application/$APPLICATION_ID/vendor-users/by-id/$DIDIT_INTERNAL_ID/faces/upload/ \
  -H "x-api-key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "image": "<base64-encoded-jpg-or-png>",
    "comment": "Imported from previous KYC provider"
  }'
```चेहरा एक वैध छवि होना चाहिए, डिकोड होने पर अधिकतम 2 MB, और उसमें पहचाने जा सकने वाला चेहरा होना चाहिए। Didit इसे प्रोफ़ाइल पर सहेजता है और डुप्लिकेट का पता लगाने तथा चेहरे की खोज के लिए इंडेक्स करता है। इसे चेहरा ब्लॉकलिस्ट में तब तक नहीं जोड़ा जाता जब तक आप अलग से [Upload face to list](https://docs.didit.me/hi/management-api/lists/upload-face.md) endpoint का उपयोग न करें।## उपयोगकर्ताओं को CSV में एक्सपोर्ट करें### कब इसका उपयोग करें- **अनुपालन ऑडिट**: पूरी उपयोगकर्ता तालिका ऑडिटरों को दें।
- **डेटा वेयरहाउस सिंक**: अपने BI टूलिंग में नियमित डंप।
- **SAR / नियामक अनुरोध**: फ़िल्टर किए गए उपयोगकर्ता उपसमुच्चय निकालें।### एक्सपोर्ट चलाना1. *Users → Export* पर जाएँ।
2. फ़िल्टर लागू करें (स्थिति, देश, तिथि सीमा, खोज)।
3. कॉलम चुनें (डिफ़ॉल्ट रूप से हर फ़ील्ड शामिल होता है; जिनकी ज़रूरत नहीं है उन्हें हटा सकते हैं)।
4. सबमिट करें। Didit एक्सपोर्ट को अतुल्यकालिक रूप से तैयार करता है और अनुरोध करने वाले ऑपरेटर को एक साइन किया गया डाउनलोड लिंक ईमेल करता है।> [!NOTE]
>
> एक्सपोर्ट में केवल वही डेटा शामिल होता है जिसे आपकी भूमिका पढ़ने की अनुमति देती है। COMPLIANCE\_OFFICER और उससे ऊपर की भूमिकाएँ पूरी तालिका एक्सपोर्ट कर सकती हैं; DEVELOPER और READER भूमिकाओं के एक्सपोर्ट प्रतिबंधित हैं।## प्रदर्शन विशेषताएँ| ऑपरेशन | सामान्य पैमाना | टिप्पणियाँ |
| - | - | - |
| इंपोर्ट | 100,000 पंक्तियों तक | बड़ी फ़ाइलें सर्वर-साइड पर टुकड़ों में बाँटी जाती हैं; प्रगति UI द्वारा समय-समय पर जाँची जाती है |
| एक्सपोर्ट | 1,000,000 पंक्तियों तक | बड़े एक्सपोर्ट S3 पर स्ट्रीम किए जाते हैं और साइन किए गए URL के माध्यम से उपलब्ध कराए जाते हैं |## ऑडिट ट्रेलहर इंपोर्ट और एक्सपोर्ट [ऑडिट लॉग](https://docs.didit.me/hi/console/audit-logs.md) में दर्ज होता है:- इसे शुरू करने वाला ऑपरेटर।
- पंक्ति गिनती (इंपोर्ट) / फ़िल्टर स्नैपशॉट (एक्सपोर्ट)।
- टाइमस्टैम्प और सफलता/विफलता की स्थिति।## अगले चरण> [card] [उपयोगकर्ता बनाने का API](https://docs.didit.me/hi/management-api/users/create.md)
>
> स्क्रिप्टेड इंपोर्ट के लिए प्रोग्रामैटिक निर्माण।> [card] [उपयोगकर्ता चेहरा अपलोड करें](https://docs.didit.me/hi/management-api/users/upload-face.md)
>
> इंपोर्ट किए गए चेहरे की छवियाँ User प्रोफ़ाइल से जोड़ें।> [card] [डेटा प्रतिधारण](https://docs.didit.me/hi/console/data-retention.md)
>
> इंपोर्ट किया गया डेटा कितने समय तक रहता है।> [card] [ऑडिट लॉग](https://docs.didit.me/hi/console/audit-logs.md)
>
> इंपोर्ट/एक्सपोर्ट इतिहास देखें।


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