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

# उपयोगकर्ता बनाने का API: विक्रेता उपयोगकर्ता इकाई

> Didit में KYC सत्र चलने से पहले विक्रेता User entities पहले से बनाएँ। बाहरी डेटाबेस से बल्क ऑनबोर्ड करें या लेन-देन निगरानी के लिए उपयोगकर्ता पंजीकृत करें।



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



      
      

\<pre>

\`Goal: Pre-create a Didit User entity by vendor_data before any verification session runs, and optionally email the person a verification link in the same call.

Endpoint: POST https://verification.didit.me/v3/users/create/
Auth header: x-api-key: <DIDIT_API_KEY>
Content-Type: application/json

Request body fields:
\- vendor_data (string, REQUIRED) — your unique identifier for this user. Free-form string, NOT a UUID. Must be unique among non-deleted users in the app. Normalised lowercase + whitespace trim, so "USER-1" and "user-1" collide. Max 2000 bytes (UTF-8 encoded); longer values return a 400.
\- full_name (string, max 512, optional)
\- display_name (string, optional) — friendly label for the Console (takes precedence over full_name for UI).
\- date_of_birth (string YYYY-MM-DD, optional)
\- status (enum, optional) — "ACTIVE" | "FLAGGED" | "BLOCKED" (VendorUserStatusChoices). Defaults to "ACTIVE".
\- metadata (object, optional) — arbitrary JSON you attach to the user.
\- approved_emails (object<string, boolean>, optional) — e.g. {"john@example.com": true}.
\- approved_phones (object<string, boolean>, optional).
\- issuing_states (object<ISO3, int>, optional) — e.g. {"USA": 1}.

Contact fields (all optional):
\- first_name, last_name (string, max 255 each): joined with a space into full_name when you don't send full_name.
\- email (string, email): stored in metadata.contact.email.
\- phone_number (string, max 32): stored in metadata.contact.phone_number.
\- country (string): ISO 3166 code, alpha-2 or alpha-3 ("ES" or "ESP"), stored uppercased in metadata.address.country.

Verification link (optional):
\- send_verification_link (boolean, default false): when true, Didit also creates a verification session for the person on workflow_id and emails them the link at email.
\- workflow_id (UUID): REQUIRED with send_verification_link. The workflow must verify a person: a Business Verification (KYB) workflow is refused.
\- language (string, max 10): language of the verification email, a supported language code. English when omitted.
\- The person and the session are created together or not at all. The session runs the same checks as POST /v3/session/ (blocklist, credits).

curl:
curl -X POST 'https://verification.didit.me/v3/users/create/' \
-H 'x-api-key: YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-d '{"vendor_data": "user-abc-123", "full_name": "John Doe"}'

curl with a verification link:
curl -X POST 'https://verification.didit.me/v3/users/create/' \
-H 'x-api-key: YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-d '{"vendor_data": "user-abc-789", "first_name": "Julia", "last_name": "Martin", "email": "julia.martin@example.com", "send_verification_link": true, "workflow_id": "YOUR_WORKFLOW_ID"}'

Response 201: full UserDetailItem (same shape as GET /v3/users/{vendor_data}/) plus verification_link. Includes didit_internal_id (UUID), session_count, approved_count=0, metadata, comments=[], created_at, updated_at. See /reference/data-models.
\- verification_link is always present: null without a link, otherwise { session_id, session_number, status, url, workflow_id, email }. url is the link Didit emailed.

Failure modes:
\- 400: nothing is written. Most errors are keyed by field. Common cases:
\{ "vendor_data": ["A user with this vendor_data already exists."] }  // conflict, NOT idempotent. Use PATCH /v3/users/{vendor_data}/ to update.
\{ "vendor_data": ["This field is required."] }
\{ "vendor_data": ["Ensure this field has no more than 2000 characters."] }  // oversized vendor_data, rejected before it reaches storage
\{ "metadata": ["Metadata must be a JSON object."] }
\{ "country": ["Use an ISO 3166 country code, like ES or ESP."] }
\{ "email": ["metadata.contact must be a JSON object to store this value."] }  // same on phone_number; metadata.address on country
\{ "email": ["An email address is required to send a verification link."] }
\{ "workflow_id": ["Pick the workflow to send a verification link for."] }
\{ "workflow_id": ["Invalid workflow_id."] }
\{ "workflow_id": ["This workflow verifies a business. Pick a workflow that verifies a person to send them a verification link."] }
\{ "contact_details": { "email_lang": ["Invalid email language. Supported languages are ..."] } }  // unsupported language
\{ "vendor_data": "This user or business has been blocked and cannot create new verification sessions." }
\{ "detail": "You don't have enough credits to perform this request. Please top up at https://business.didit.me" }
\- 401: missing or invalid x-api-key. { "detail": "Authentication credentials were not provided." }
\- 403: the API key is revoked or is not valid for this application. { "detail": "You do not have permission to perform this action." }
\- 403: a scoped key without users write. { "detail": "This API key has no write access to people." }
\- 403: send_verification_link with a scoped key that lacks sessions write. Nothing is written. { "detail": "This API key has no write access to sessions." }
\- 429: rate-limited.

Upsert pattern (this endpoint is NOT idempotent):
GET /v3/users/{vendor_data}/  → on 404, POST /v3/users/create/; on 200, PATCH /v3/users/{vendor_data}/.

Notes:
\- Verified-session-derived identity fields such as full_name and date_of_birth seeded here can be overwritten by the first approved User Verification (KYC) session.
\- If you are migrating from another provider and already have a trusted face image, create the User first, read didit_internal_id from this response, then call POST /v3/organization/{organization_id}/application/{application_id}/vendor-users/by-id/{didit_internal_id}/faces/upload/.
\- The create itself sends no webhook. Later changes to the user send user.data.updated or user.status.updated. With send_verification_link, the new session updates the user (session_count) in the same call, which sends user.data.updated.
\- API key access: a scoped key needs users write; with send_verification_link it also needs sessions write. Full-access keys can always call it.

For end-to-end Didit integration, paste in the full prompt at /integration/integration-prompt.`

\</pre>



      
      

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

## अवलोकनसत्र चलने से पहले यह स्पष्ट रूप से [उपयोगकर्ता इकाई](https://docs.didit.me/hi/entities/users/overview.md) बनाता है।
लौटाई गई इकाई डिफ़ॉल्ट रूप से `ACTIVE` स्थिति में आती है, जब तक आप अलग से निर्दिष्ट न करें।
वैकल्पिक रूप से, यही कॉल व्यक्ति को सत्यापन लिंक ईमेल भी कर सकती है (देखें [सत्यापन लिंक भेजें](#सत्यापन-लिंक-भेजें))।## कब उपयोग करें- **ग्राहक के सत्यापन से पहले मेटाडेटा भरें** (स्तर, साइनअप स्रोत, आंतरिक टैग)।
- **किसी अन्य वेंडर से माइग्रेट करें**: अपनी मौजूदा उपयोगकर्ता सूची को Didit में दोबारा बनाएँ, ताकि इतिहास और एनालिटिक्स एक ज्ञात आधार रेखा से शुरू हों।
- **भरोसेमंद प्रोफ़ाइल चेहरों को इंपोर्ट करें**: पहले उपयोगकर्ता बनाएँ, फिर लौटाए गए `didit_internal_id` के साथ [उपयोगकर्ता चेहरा अपलोड करें](https://docs.didit.me/hi/management-api/users/upload-face.md) को कॉल करें।
- **केवल लेन-देन वाले उपयोग के मामले**: `vendor_data` के साथ उपयोगकर्ता पंजीकृत करें, ताकि आप उपयोगकर्ता सत्यापन (KYC) सत्र चलाए बिना लेन-देन सबमिट कर सकें।
- **किसी को सत्यापन के लिए आमंत्रित करें**: एक ही कॉल में व्यक्ति बनाएँ और उसे सत्यापन लिंक ईमेल करें।## संपर्क विवरणआप व्यक्ति के संपर्क विवरण प्रोफ़ाइल फ़ील्ड्स के साथ भेज सकते हैं।
जब आप `full_name` न भेजें, तो `first_name` और `last_name` एक स्पेस के साथ जुड़कर `full_name` बनते हैं।
`email` और `phone_number` `metadata.contact` में संग्रहीत होते हैं, और `country` `metadata.address` में।
`country` ISO 3166 कोड लेता है, alpha-2 या alpha-3 (`ES` या `ESP`), और इसे बड़े अक्षरों में संग्रहीत किया जाता है।यदि आपके भेजे गए `metadata` में पहले से `contact` या `address` का कोई मान है जो JSON ऑब्जेक्ट नहीं है, तो Didit उसे अधिलेखित नहीं करता: कॉल उस contact या address फ़ील्ड के लिए `400` लौटाती है जिसमें JSON ऑब्जेक्ट की आवश्यकता थी।## सत्यापन लिंक भेजेंव्यक्ति को उसी कॉल में सत्यापन के लिए आमंत्रित करने हेतु `send_verification_link` को `true` पर सेट करें।
Didit `workflow_id` में दिए वर्कफ़्लो पर उस व्यक्ति के लिए एक सत्यापन सत्र बनाता है और `email` पर लिंक भेजता है।
ईमेल की [भाषा](https://docs.didit.me/hi/integration/supported-languages.md) चुनने के लिए `language` का उपयोग करें; छोड़ने पर यह अंग्रेज़ी होती है।```bash theme={null}
curl -X POST https://verification.didit.me/v3/users/create/ \
  -H "x-api-key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "vendor_data": "user-abc-789",
    "first_name": "Julia",
    "last_name": "Martin",
    "email": "julia.martin@example.com",
    "send_verification_link": true,
    "workflow_id": "YOUR_WORKFLOW_ID",
    "language": "es"
  }'
```- लिंक के साथ `email` और `workflow_id` अनिवार्य हैं, और वर्कफ़्लो को एक व्यक्ति को सत्यापित करना होगा: व्यवसाय सत्यापन (KYB) वर्कफ़्लो `400` लौटाता है।
- सत्र पर [सत्र बनाएँ](https://docs.didit.me/hi/sessions-api/create-session.md) में बताई गई वही जाँचें लागू होती हैं।
  ब्लॉकलिस्ट में शामिल `vendor_data` या अपर्याप्त क्रेडिट `400` लौटाते हैं।
- व्यक्ति और सत्र एक साथ बनते हैं, या बिल्कुल नहीं बनते।
  किसी भी जाँच के विफल होने पर कुछ भी नहीं लिखा जाता और कोई ईमेल नहीं भेजा जाता।
- रिस्पॉन्स में `verification_link` होता है, जिसमें सत्र का `session_id`, `session_number`, `status`, `url`, `workflow_id` और वह `email` शामिल है जिस पर इसे भेजा गया था। लिंक के बिना `verification_link` `null` होता है।## नोट्स- `vendor_data` अनिवार्य है और हर एप्लिकेशन में अनोखा होना चाहिए। डुप्लिकेट बनाने की कोशिश पर कॉन्फ़्लिक्ट त्रुटि लौटती है: मौजूदा उपयोगकर्ता को अपडेट करने के लिए [`PATCH /v3/users/{vendor_data}/`](https://docs.didit.me/hi/management-api/users/update) का उपयोग करें।
- `vendor_data` की सख़्त सीमा 2000 बाइट्स (UTF-8 एन्कोडेड) है। इस सीमा से अधिक मान स्वीकार होने के बजाय 400 वैलिडेशन त्रुटि लौटाता है।
- जो फ़ील्ड सामान्यतः सत्यापित सत्रों से निकलते हैं (`full_name`, `date_of_birth`), उन्हें यहाँ पहले से भरा जा सकता है, पर पहला स्वीकृत उपयोगकर्ता सत्यापन (KYC) सत्र उन्हें **अधिलेखित** कर सकता है।
- इस endpoint पर चेहरे की छवियाँ स्वीकार नहीं होतीं। कोई भरोसेमंद इंपोर्ट किया गया चेहरा जोड़ने के लिए, इस endpoint के `didit_internal_id` लौटाने के बाद [`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) का उपयोग करें।
- बनाने की प्रक्रिया स्वयं कोई webhook नहीं भेजती। उपयोगकर्ता में बाद के बदलाव `user.data.updated` या `user.status.updated` भेजते हैं।
- `send_verification_link` के साथ, नया सत्र उसी कॉल में उपयोगकर्ता को अपडेट करता है, जिससे `user.data.updated` भेजा जाता है।## अनुमतियाँप्राथमिक सीक्रेट और पूर्ण-पहुँच वाली [API कुंजियाँ](https://docs.didit.me/hi/console/api-keys.md) हमेशा इस endpoint को कॉल कर सकती हैं।
कस्टम पहुँच वाली कुंजी को **लोग** (`users`) पर लिखने की अनुमति चाहिए।
`send_verification_link: true` के साथ उसे **सत्र** पर लिखने की अनुमति भी चाहिए, क्योंकि कॉल सत्र बनाती है और उसका लिंक देती है।
इसके बिना कॉल `403` लौटाती है, संदेश `This API key has no write access to sessions.` के साथ, और कुछ भी नहीं लिखा जाता।
जो कुंजी कुछ वर्कफ़्लो या स्वीकृत सत्रों तक सीमित है, वह इस endpoint तक नहीं पहुँच सकती।Console की [भूमिकाएँ और अनुमतियाँ](https://docs.didit.me/hi/console/roles-permissions.md) तय करती हैं कि कोई टीम सदस्य Console में क्या कर सकता है।
API कुंजी के अनुरोधों के लिए इनका मूल्यांकन नहीं होता।## संबंधित- [उपयोगकर्ता डेटा मॉडल](https://docs.didit.me/hi/entities/users/data-model.md)
- [उपयोगकर्ता चेहरा अपलोड करें](https://docs.didit.me/hi/management-api/users/upload-face.md)
- [वेंडर डेटा लिंकिंग](https://docs.didit.me/hi/entities/vendor-data-linking.md)
- [उपयोगकर्ता संचालन](https://docs.didit.me/hi/entities/users/operations.md)


## OpenAPI

````yaml hi/openapi-25.json POST /v3/users/create/
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/users/create/:
    post:
      tags:
        - Users
      summary: उपयोगकर्ता बनाएं
      description: >-
        सत्यापन सत्र से पहले या उसके बिना, `vendor_data` द्वारा एक
        [उपयोगकर्ता](/entities/users) बनाएँ। `vendor_data` एप्लिकेशन के
        उपयोगकर्ताओं के बीच अद्वितीय होना चाहिए (डुप्लिकेट होने पर `400` मिलता
        है)। आइडेम्पोटेंट नहीं है。


        **संपर्क विवरण:** `email` और `phone_number` को `metadata.contact` में
        संग्रहीत किया जाता है, और `country` को `metadata.address` में। जब आप
        `full_name` के बिना `first_name` या `last_name` भेजते हैं, तो Didit
        उन्हें `full_name` में जोड़ देता है।


        **सत्यापन लिंक:** `send_verification_link: true` के साथ, Didit उस
        व्यक्ति के लिए `workflow_id` पर एक सत्यापन सत्र भी बनाता है और उन्हें
        `email` पर लिंक ईमेल करता है। यह सत्र [Create
        Session](/hi/sessions-api/create-session) की तरह ही वही चेक चलाता है,
        जैसे कि ब्लॉकलिस्ट और आपका क्रेडिट बैलेंस। व्यक्ति और सत्र एक साथ बनाए
        जाते हैं या बिल्कुल नहीं: यदि कोई भी चेक विफल होता है, तो कुछ भी नहीं
        लिखा जाता है और कोई ईमेल नहीं भेजा जाता है। रिस्पॉन्स का
        `verification_link` सत्र का वर्णन करता है, और जब आप लिंक का अनुरोध नहीं
        करते हैं तो यह `null` होता है।


        **API कुंजी एक्सेस:** एक स्कोप्ड API कुंजी के लिए `users` राइट अनुमति की
        आवश्यकता होती है। `send_verification_link: true` के साथ इसे `sessions`
        राइट की भी आवश्यकता होती है, अन्यथा कुछ भी लिखे जाने से पहले कॉल `403`
        लौटाती है। पूर्ण-पहुँच वाली कुंजियाँ अप्रभावित रहती हैं। [API
        कुंजियाँ](/hi/console/api-keys) देखें।
      operationId: create_user
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - vendor_data
              properties:
                vendor_data:
                  type: string
                  description: >-
                    इस उपयोगकर्ता के लिए आपका विशिष्ट पहचानकर्ता (मुक्त-रूप
                    स्ट्रिंग, UUID नहीं)। एप्लिकेशन के उपयोगकर्ताओं के बीच
                    विशिष्ट होना चाहिए; ठीक वैसे ही मिलान किया जाता है जैसा भेजा
                    गया था।
                full_name:
                  type: string
                  nullable: true
                  maxLength: 512
                  description: उपयोगकर्ता का पूरा कानूनी नाम।
                display_name:
                  type: string
                  nullable: true
                  description: >-
                    कंसोल में दिखाया जाने वाला मैत्रीपूर्ण डिस्प्ले नाम (UI
                    डिस्प्ले के लिए `full_name` पर वरीयता लेता है)।
                  maxLength: 255
                date_of_birth:
                  type: string
                  format: date
                  nullable: true
                  description: '`YYYY-MM-DD` प्रारूप में जन्म तिथि।'
                status:
                  type: string
                  enum:
                    - ACTIVE
                    - FLAGGED
                    - BLOCKED
                  default: ACTIVE
                  description: प्रारंभिक जीवनचक्र स्थिति। डिफ़ॉल्ट रूप से `ACTIVE` है।
                metadata:
                  type: object
                  nullable: true
                  description: >-
                    उपयोगकर्ता से जुड़ा आपका मनमाना JSON ऑब्जेक्ट। डिफ़ॉल्ट रूप
                    से `{}` होता है।
                approved_emails:
                  type: array
                  items:
                    type: string
                  description: >-
                    इस उपयोगकर्ता के लिए पूर्व-विश्वसनीय ईमेल पते, उदा.
                    `["john@example.com"]`।
                approved_phones:
                  type: array
                  items:
                    type: string
                  description: >-
                    इस उपयोगकर्ता के लिए पूर्व-विश्वसनीय फ़ोन नंबर, उदा.
                    `["+14155551234"]`।
                issuing_states:
                  type: array
                  items:
                    type: string
                  description: >-
                    पहले से रिकॉर्ड किए गए जारीकर्ता देश (ISO 3166-1 alpha-3),
                    उदा. `["USA"]`।
                first_name:
                  type: string
                  maxLength: 255
                  description: >-
                    पहला नाम। जब `full_name` नहीं भेजा जाता है, तो Didit
                    `first_name` और `last_name` को स्पेस के साथ जोड़कर
                    `full_name` बना देता है। एक अलग फ़ील्ड के रूप में नहीं
                    लौटाया जाता है।
                last_name:
                  type: string
                  maxLength: 255
                  description: >-
                    कुलनाम। `full_name` न भेजे जाने पर `first_name` के साथ
                    जोड़कर `full_name` बनाया जाता है। एक अलग फ़ील्ड के रूप में
                    वापस नहीं किया जाता है।
                email:
                  type: string
                  format: email
                  description: >-
                    संपर्क ईमेल, जो `metadata.contact.email` में संग्रहीत होता
                    है (यह आपके द्वारा `metadata.contact` के भीतर भेजे गए
                    `email` को बदल देता है)। `send_verification_link` के `true`
                    होने पर आवश्यक: सत्यापन लिंक इसी पते पर भेजा जाता है। यदि
                    `metadata.contact` एक JSON ऑब्जेक्ट नहीं है, तो कॉल इस
                    फ़ील्ड के लिए `400` लौटाता है।
                phone_number:
                  type: string
                  maxLength: 32
                  description: >-
                    संपर्क फ़ोन नंबर, जो `metadata.contact.phone_number` में
                    संग्रहीत है। यदि `metadata.contact` एक JSON ऑब्जेक्ट नहीं
                    है, तो कॉल इस फ़ील्ड पर `400` रिस्पॉन्स देती है।
                country:
                  type: string
                  maxLength: 3
                  description: >-
                    ISO 3166 कोड के रूप में देश, alpha-2 या alpha-3 (`ES` या
                    `ESP`)। `metadata.address.country` में बड़े अक्षरों में
                    संग्रहीत। यदि `metadata.address` एक JSON ऑब्जेक्ट नहीं है,
                    तो कॉल इस फ़ील्ड पर `400` उत्तर देता है।
                send_verification_link:
                  type: boolean
                  default: false
                  description: >-
                    जब `true` हो, तो Didit `workflow_id` पर व्यक्ति के लिए एक
                    सत्यापन सत्र बनाता है और उन्हें `email` पर लिंक ईमेल करता
                    है। इसके लिए `email` और `workflow_id` आवश्यक हैं। एक स्कोप्ड
                    API कुंजी को `sessions` लिखने की अनुमति की भी आवश्यकता होती
                    है।
                workflow_id:
                  type: string
                  format: uuid
                  description: >-
                    सत्यापन सत्र का वर्कफ़्लो। जब `send_verification_link`
                    `true` हो तो आवश्यक है। इसे किसी व्यक्ति को सत्यापित करना
                    चाहिए: व्यवसाय सत्यापन (KYB) वर्कफ़्लो अस्वीकार कर दिया जाता
                    है। अन्यथा अनदेखा किया जाता है।
                language:
                  type: string
                  maxLength: 10
                  description: >-
                    [समर्थित भाषा](/hi/integration/supported-languages) कोड के
                    रूप में सत्यापन ईमेल की भाषा। छोड़े जाने पर अंग्रेज़ी। जब
                    `send_verification_link` का मान `true` न हो तो इसे अनदेखा कर
                    दिया जाता है।
            examples:
              Basic:
                summary: बुनियादी जानकारी के साथ बनाएं
                value:
                  vendor_data: user-abc-123
                  full_name: John Doe
              Full:
                summary: सभी फ़ील्ड
                value:
                  vendor_data: user-abc-456
                  full_name: Jane Smith
                  display_name: Jane S.
                  date_of_birth: '1990-05-15'
                  status: ACTIVE
                  metadata:
                    tier: premium
                    source: api
                  approved_emails:
                    - jane@example.com
              Contact details:
                summary: नाम, ईमेल, फ़ोन और देश
                value:
                  vendor_data: user-abc-789
                  first_name: Julia
                  last_name: Martin
                  email: julia.martin@example.com
                  phone_number: '+34600000000'
                  country: ES
              With verification link:
                summary: व्यक्ति बनाएं और उन्हें एक सत्यापन लिंक ईमेल करें
                value:
                  vendor_data: user-abc-789
                  first_name: Julia
                  last_name: Martin
                  email: julia.martin@example.com
                  send_verification_link: true
                  workflow_id: 3fa85f64-5717-4562-b3fc-2c963f66afa6
                  language: es
      responses:
        '201':
          description: >-
            उपयोगकर्ता बनाया गया। पूरा उपयोगकर्ता रिकॉर्ड (Get User के समान
            प्रारूप), साथ ही `verification_link`: सत्यापन सत्र जिसे Didit ने तब
            ईमेल किया था जब `send_verification_link` `true` था, अन्यथा `null`।
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/UserDetailItem'
                  - type: object
                    required:
                      - verification_link
                    properties:
                      verification_link:
                        type: object
                        nullable: true
                        description: >-
                          Didit द्वारा बनाया गया और व्यक्ति को ईमेल किया गया
                          सत्यापन सत्र। हमेशा मौजूद रहता है: `null` जब
                          `send_verification_link` `true` नहीं था।
                        required:
                          - session_id
                          - session_number
                          - status
                          - url
                          - workflow_id
                          - email
                        properties:
                          session_id:
                            type: string
                            format: uuid
                            description: सत्यापन सत्र की ID।
                          session_number:
                            type: integer
                            description: आपके एप्लिकेशन के अंदर सत्र की अनुक्रमिक संख्या।
                          status:
                            type: string
                            description: >-
                              सत्र की स्थिति, अभी-अभी बनाए गए सत्र के लिए `Not
                              Started`।
                          url:
                            type: string
                            format: uri
                            description: >-
                              Didit द्वारा व्यक्ति को ईमेल किया गया सत्यापन
                              लिंक।
                          workflow_id:
                            type: string
                            format: uuid
                            nullable: true
                            description: सत्र द्वारा चलाया जाने वाला वर्कफ़्लो।
                          email:
                            type: string
                            format: email
                            description: वह पता जिस पर लिंक भेजा गया था।
              examples:
                Created:
                  value:
                    didit_internal_id: f4e5e1f2-94a9-4f86-8c16-2b7d9b4db418
                    vendor_data: user-abc-123
                    display_name: null
                    full_name: John Doe
                    date_of_birth: null
                    effective_name: John Doe
                    status: ACTIVE
                    metadata: {}
                    portrait_image_url: null
                    session_count: 0
                    approved_count: 0
                    declined_count: 0
                    in_review_count: 0
                    issuing_states: []
                    approved_emails: []
                    approved_phones: []
                    features: {}
                    features_list: []
                    last_session_at: null
                    last_activity_at: '2025-06-15T10:30:00Z'
                    first_session_at: null
                    tags: []
                    comments: []
                    created_at: '2025-06-15T10:30:00Z'
                    updated_at: '2025-06-15T10:30:00Z'
                    verification_link: null
                Created with verification link:
                  value:
                    didit_internal_id: 9b2f6c1e-3d4a-4e5f-8a7b-1c2d3e4f5a6b
                    vendor_data: user-abc-789
                    display_name: null
                    full_name: Julia Martin
                    date_of_birth: null
                    effective_name: Julia Martin
                    status: ACTIVE
                    metadata:
                      contact:
                        email: julia.martin@example.com
                    portrait_image_url: null
                    session_count: 1
                    approved_count: 0
                    declined_count: 0
                    in_review_count: 0
                    issuing_states: []
                    approved_emails: []
                    approved_phones: []
                    features: {}
                    features_list: []
                    last_session_at: '2025-06-15T10:30:00Z'
                    last_activity_at: '2025-06-15T10:30:00Z'
                    first_session_at: '2025-06-15T10:30:00Z'
                    tags: []
                    comments: []
                    created_at: '2025-06-15T10:30:00Z'
                    updated_at: '2025-06-15T10:30:00Z'
                    verification_link:
                      session_id: 3fa85f64-5717-4562-b3fc-2c963f66afa7
                      session_number: 43762
                      status: Not Started
                      url: https://verify.didit.me/en/session/3FaJ9wLqX2Mz
                      workflow_id: 3fa85f64-5717-4562-b3fc-2c963f66afa6
                      email: julia.martin@example.com
        '400':
          description: >-
            फ़ील्ड के आधार पर अमान्य body: आमतौर पर एक डुप्लिकेट `vendor_data`,
            एक अनुपलब्ध आवश्यक फ़ील्ड या एक विकृत मान। `send_verification_link:
            true` के साथ, एक अनुपलब्ध `email` या `workflow_id`, एक अज्ञात या
            व्यवसाय सत्यापन (KYB) वर्कफ़्लो, एक असमर्थित `language` (कुंजी
            `contact_details.email_lang`), एक ब्लॉकलिस्टेड `vendor_data`, या
            सत्र शुरू करने के लिए बहुत कम क्रेडिट भी शामिल हैं। कुछ भी नहीं लिखा
            गया है।
          content:
            application/json:
              examples:
                Duplicate:
                  value:
                    vendor_data:
                      - A user with this vendor_data already exists.
                Missing vendor_data:
                  value:
                    vendor_data:
                      - This field is required.
                Bad metadata:
                  value:
                    metadata:
                      - Metadata must be a JSON object.
                Bad status:
                  value:
                    status:
                      - >-
                        Invalid status. Valid options are: ACTIVE, FLAGGED,
                        BLOCKED
                Bad country:
                  value:
                    country:
                      - Use an ISO 3166 country code, like ES or ESP.
                Contact not an object:
                  value:
                    email:
                      - >-
                        metadata.contact must be a JSON object to store this
                        value.
                Address not an object:
                  value:
                    country:
                      - >-
                        metadata.address must be a JSON object to store this
                        value.
                Link without email or workflow:
                  value:
                    email:
                      - >-
                        An email address is required to send a verification
                        link.
                    workflow_id:
                      - Pick the workflow to send a verification link for.
                Unknown workflow:
                  value:
                    workflow_id:
                      - Invalid workflow_id.
                Business workflow:
                  value:
                    workflow_id:
                      - >-
                        This workflow verifies a business. Pick a workflow that
                        verifies a person to send them a verification link.
                Blocklisted vendor_data:
                  value:
                    vendor_data: >-
                      This user or business has been blocked and cannot create
                      new verification sessions.
                Insufficient credits:
                  value:
                    detail: >-
                      You don't have enough credits to perform this request.
                      Please top up at https://business.didit.me
        '401':
          description: >-
            कोई क्रेडेंशियल प्रदान नहीं किए गए। `x-api-key` हेडर (या
            `Authorization: Bearer` token) के बिना `/v3/users/*` पाथ पर आने वाले
            अनुरोधों को API तक पहुँचने से पहले प्रमाणीकरण मिडलवेयर द्वारा
            अस्वीकार कर दिया जाता है।
          content:
            application/json:
              examples:
                Missing credentials:
                  value:
                    detail: >-
                      You must be authenticated with a valid access token to
                      access this endpoint.
        '403':
          description: >-
            अमान्य या निरस्त की गई API कुंजी, या कुंजी इस एप्लिकेशन के लिए
            उपयोगकर्ताओं को नहीं बना सकती है। एक स्कोप्ड API कुंजी को `users`
            राइट की आवश्यकता होती है, और जब `send_verification_link` `true` हो
            तो `sessions` राइट की भी आवश्यकता होती है; कुछ भी नहीं लिखा गया है।
            अनुपलब्ध कुंजी `403` लौटाती है; गलत, निरस्त की गई या समाप्त हो चुकी
            कुंजी `401` लौटाती है।
          content:
            application/json:
              examples:
                Forbidden:
                  value:
                    detail: You do not have permission to perform this action.
                No sessions write:
                  summary: >-
                    स्कोप्ड कुंजी sessions राइट के बिना सत्यापन लिंक का अनुरोध
                    करती है
                  value:
                    detail: This API key has no write access to sessions.
        '429':
          description: >-
            रेट लिमिट पार हो गई; थोड़ा रुकें और `Retry-After` में बताए गए अंतराल
            के बाद पुनः प्रयास करें।
          content:
            application/json:
              examples:
                Rate limited:
                  value:
                    detail: Request was throttled. Expected available in 30 seconds.
      security:
        - ApiKeyAuth: []
      x-codeSamples:
        - lang: curl
          label: curl
          source: |-
            curl -X POST 'https://verification.didit.me/v3/users/create/' \
              -H 'x-api-key: YOUR_API_KEY' \
              -H 'Content-Type: application/json' \
              -d '{"vendor_data": "user-abc-123", "full_name": "John Doe"}'
        - lang: python
          label: Python
          source: |-
            from didit import Didit

            # Reads DIDIT_API_KEY.
            client = Didit()

            result = client.users.create(
                vendor_data="user-abc-123",
                full_name="John Doe",
            )
            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.users.create({
              vendor_data: "user-abc-123",
              full_name: "John Doe",
            });
            console.log(result);
        - lang: go
          label: Go
          source: "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.Users.Create(ctx, didit.UsersCreateParams{\n\tVendorData: \"user-abc-123\",\n\tFullName:   didit.String(\"John Doe\"),\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.UsersCreateParams;

            // Reads DIDIT_API_KEY.
            Didit client = new Didit();

            var result = client.users().create(UsersCreateParams.builder()
                    .vendorData("user-abc-123")
                    .fullName("John Doe")
                    .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->users->create([
                'vendor_data' => 'user-abc-123',
                'full_name' => 'John Doe',
            ]);
            print_r($result->toArray());
        - lang: ruby
          label: Ruby
          source: |-
            require "didit"

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

            result = didit.users.create(
              vendor_data: "user-abc-123",
              full_name: "John Doe"
            )
            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.Users.CreateAsync(new UsersCreateParams
            {
                VendorData = "user-abc-123",
                FullName = "John Doe",
            });
            Console.WriteLine(JsonSerializer.Serialize(result));
components:
  schemas:
    UserDetailItem:
      type: object
      description: >-
        पूर्ण उपयोगकर्ता विवरण। मेटाडेटा, टिप्पणियों और updated_at के साथ
        UserListItem का विस्तार करता है।
      allOf:
        - $ref: '#/components/schemas/UserListItem'
        - type: object
          properties:
            metadata:
              type: object
              description: >-
                कस्टम मेटाडेटा JSON जिसे आपने इस उपयोगकर्ता से जोड़ा है।
                डिफ़ॉल्ट `{}` है।
            tags:
              type: array
              description: >-
                टैग असाइनमेंट। ध्यान दें: विवरण रिस्पॉन्स पर प्रत्येक प्रविष्टि
                एक टैग *लिंक* ऑब्जेक्ट (`{uuid, tag: {...}, added_by_email,
                added_by_name, created_at}`) होती है, जो सूची रिस्पॉन्स पर उपयोग
                किए जाने वाले फ़्लैट `{uuid, name, color}` आकार से भिन्न है।
              items:
                type: object
                properties:
                  uuid:
                    type: string
                    format: uuid
                    description: टैग असाइनमेंट का UUID (स्वयं टैग नहीं)।
                  tag:
                    type: object
                    properties:
                      uuid:
                        type: string
                        format: uuid
                      name:
                        type: string
                      color:
                        type: string
                      description:
                        type: string
                        nullable: true
                      source:
                        type: string
                        enum:
                          - didit
                          - custom
                      created_at:
                        type: string
                        format: date-time
                      updated_at:
                        type: string
                        format: date-time
                  added_by_email:
                    type: string
                    nullable: true
                  added_by_name:
                    type: string
                    nullable: true
                  created_at:
                    type: string
                    format: date-time
            comments:
              type: array
              items:
                type: object
                properties:
                  uuid:
                    type: string
                    format: uuid
                  comment_type:
                    type: string
                    enum:
                      - COMMENT
                      - STATUS_CHANGED
                      - METADATA_UPDATED
                      - TAG_ADDED
                      - TAG_REMOVED
                      - PROFILE_UPDATED
                  comment:
                    type: string
                    nullable: true
                  actor_email:
                    type: string
                    nullable: true
                  actor_name:
                    type: string
                    nullable: true
                  previous_status:
                    type: string
                    nullable: true
                    enum:
                      - ACTIVE
                      - FLAGGED
                      - BLOCKED
                      - null
                  new_status:
                    type: string
                    nullable: true
                    enum:
                      - ACTIVE
                      - FLAGGED
                      - BLOCKED
                      - null
                  previous_value:
                    type: object
                    nullable: true
                    description: PROFILE_UPDATED प्रविष्टियों के लिए पिछले फ़ील्ड मान।
                  new_value:
                    type: object
                    nullable: true
                    description: PROFILE_UPDATED प्रविष्टियों के लिए नए फ़ील्ड मान।
                  changed_fields:
                    type: array
                    items:
                      type: string
                    description: PROFILE_UPDATED प्रविष्टि द्वारा बदले गए फ़ील्ड्स के नाम।
                  metadata:
                    type: object
                    nullable: true
                  mentioned_emails:
                    type: array
                    items:
                      type: string
                  created_at:
                    type: string
                    format: date-time
              description: >-
                इस उपयोगकर्ता के लिए गतिविधि लॉग और टिप्पणियाँ (स्थिति परिवर्तन,
                प्रोफ़ाइल संपादन, मैन्युअल नोट्स)।
            updated_at:
              type: string
              format: date-time
    UserListItem:
      type: object
      description: एक सत्यापित उपयोगकर्ता।
      properties:
        didit_internal_id:
          type: string
          format: uuid
          description: इस उपयोगकर्ता के लिए Didit का स्थायी आंतरिक UUID।
        vendor_data:
          type: string
          nullable: true
          description: >-
            इस उपयोगकर्ता के लिए आपका विशिष्ट पहचानकर्ता (सत्र बनाते समय पास
            किया गया)। जब कोई वेंडर पहचानकर्ता प्रदान नहीं किया गया था, तो यह
            null हो सकता है।
        display_name:
          type: string
          nullable: true
          description: आपके द्वारा सेट किया गया कस्टम प्रदर्शन नाम
        full_name:
          type: string
          nullable: true
          description: सत्यापित दस्तावेज़ों से निकाला गया पूरा नाम
        date_of_birth:
          type: string
          format: date
          nullable: true
        effective_name:
          type: string
          nullable: true
          description: 'सर्वोत्तम उपलब्ध नाम: यदि सेट है तो display_name, अन्यथा full_name'
        status:
          type: string
          enum:
            - ACTIVE
            - FLAGGED
            - BLOCKED
          description: >-
            उपयोगकर्ता रिकॉर्ड की लाइफ़साइकिल स्थिति (सत्र स्थिति नहीं)।
            `ACTIVE` डिफ़ॉल्ट है, `FLAGGED` उपयोगकर्ता को मैन्युअल ध्यान के लिए
            चिह्नित करता है, `BLOCKED` इस `vendor_data` के लिए नए सत्रों को
            रोकता है।
        portrait_image_url:
          type: string
          nullable: true
          description: >-
            उपयोगकर्ता की पोर्ट्रेट फ़ोटो का प्री-साइन किया गया URL (कुछ घंटों
            के बाद समाप्त हो जाता है)
        session_count:
          type: integer
          description: इस उपयोगकर्ता के लिए सत्यापन सत्रों की कुल संख्या
        approved_count:
          type: integer
          description: स्वीकृत सत्रों की संख्या
        declined_count:
          type: integer
          description: अस्वीकृत सत्रों की संख्या
        in_review_count:
          type: integer
          description: समीक्षाधीन सत्रों की संख्या
        issuing_states:
          type: array
          items:
            type: string
          description: >-
            इस उपयोगकर्ता के स्वीकृत ID दस्तावेज़ों पर देखे गए जारीकर्ता देशों
            के ISO 3166-1 alpha-3 कोड, उदा. `["USA", "ESP"]`। कोई न होने पर खाली
            ऐरे।
        approved_emails:
          type: array
          items:
            type: string
          description: >-
            इस उपयोगकर्ता के स्वीकृत सत्रों से एकत्र किए गए सत्यापित ईमेल पते,
            उदा. `["john@example.com"]`।
        approved_phones:
          type: array
          items:
            type: string
          description: >-
            इस उपयोगकर्ता के स्वीकृत सत्रों से एकत्र किए गए सत्यापित फ़ोन नंबर,
            उदा. `["+14155551234"]`।
        features:
          type: object
          description: >-
            इस उपयोगकर्ता के सभी सत्रों में प्रति-सुविधा एकत्रित स्थिति। संभावित
            कुंजियाँ: `ID_VERIFICATION`, `NFC`, `LIVENESS`, `FACE_MATCH`, `POA`,
            `QUESTIONNAIRE`, `EMAIL_VERIFICATION`, `PHONE`, `AML`,
            `IP_ANALYSIS`, `AGE_ESTIMATION`, `DATABASE_VALIDATION`। संभावित मान:
            `Approved`, `Declined`, `In Review`, `Not Finished`, `Resub
            Requested`।
        features_list:
          type: array
          items:
            type: object
            properties:
              feature:
                type: string
              status:
                type: string
          description: >-
            `features` जैसा ही डेटा, `{feature, status}` ऑब्जेक्ट्स के एक
            क्रमबद्ध ऐरे के रूप में।
        last_session_at:
          type: string
          format: date-time
          nullable: true
          description: सबसे हाल के सत्र का टाइमस्टैम्प
        first_session_at:
          type: string
          format: date-time
          nullable: true
          description: पहले सत्र का टाइमस्टैम्प
        last_activity_at:
          type: string
          format: date-time
          nullable: true
          description: >-
            इस उपयोगकर्ता की सबसे हाल की गतिविधि का टाइमस्टैम्प (सत्र, लेन-देन,
            स्थिति परिवर्तन, डेटा संपादन, आदि)।
        tags:
          type: array
          items:
            type: object
            properties:
              uuid:
                type: string
                format: uuid
              name:
                type: string
              color:
                type: string
          description: इस उपयोगकर्ता को असाइन किए गए टैग
        created_at:
          type: string
          format: date-time
  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.