> ## 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: विक्रेता उपयोगकर्ता प्रोफ़ाइल

> vendor_data के साथ उपयोगकर्ता बनाने या आयात करने के बाद, Didit में मौजूदा उपयोगकर्ता प्रोफ़ाइल पर base64 चेहरा छवि अपलोड करें।



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



      
      

\<pre>

\`Goal: Attach a trusted imported face image to an existing Didit User profile.

Use case: I am migrating users from another provider. I already have a stable vendor_data and a face image I am allowed to process. I want the User profile to carry that face for evidence, duplicate detection, and face search.

Flow:
1\. Create or retrieve the User by vendor_data:
POST https://verification.didit.me/v3/users/create/
GET  https://verification.didit.me/v3/users/{vendor_data}/
2\. Read didit_internal_id from the User response.
3\. Upload the face to:
POST https://verification.didit.me/v3/organization/{organization_id}/application/{application_id}/vendor-users/by-id/{didit_internal_id}/faces/upload/

Auth: x-api-key for the same application.
Content-Type: application/json

Request body:
\- image (string, required) — raw base64-encoded JPG or PNG. Do not include a data URL prefix. Max decoded size: 2 MB.
\- comment (string, optional) — operator-visible note, for example "Imported from previous KYC provider".

Response 201:
\{
"uuid": "face-upload-uuid",
"image_url": "https://signed-url.example/...",
"comment": "Imported from previous KYC provider",
"uploaded_by": "api",
"created_at": "2026-05-18T12:00:00Z"
}

Limits:
\- Max 5 manually uploaded faces per User.
\- The image must decode as an image and contain a detectable face.
\- This enrolls the face for profile evidence and matching. It does not add the face to a blocklist.

To block a face, use POST /v3/lists/{list_uuid}/entries/face-upload/ with a face-type list instead.`

\</pre>



      
      

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

## अवलोकनजब आप किसी दूसरे प्रदाता से उपयोगकर्ता आयात करते हैं और हर व्यक्ति के लिए पहले से एक विश्वसनीय चेहरे की छवि आपके पास है, तब इस endpoint का उपयोग करें। उपयोगकर्ता अब भी आपके `vendor_data` से जुड़ा रहता है, लेकिन यह प्रोफ़ाइल अटैचमेंट endpoint लक्ष्य उपयोगकर्ता को स्पष्ट रूप से पहचानने के लिए `didit_internal_id` का उपयोग करता है।> [!NOTE]
>
> यह [सूची में चेहरा अपलोड करें](https://docs.didit.me/hi/management-api/lists/upload-face.md) से अलग है। प्रोफ़ाइल अपलोड किसी उपयोगकर्ता से चेहरा जोड़ता है, ताकि साक्ष्य, डुप्लिकेट पहचान और चेहरा खोज के लिए उसका उपयोग हो सके। सूची अपलोड चेहरे को चेहरा-प्रकार ब्लॉकलिस्ट में जोड़ता है, ताकि भविष्य के मिलान सत्र अस्वीकार किए जा सकें।## Endpoint**`POST /v3/organization/{organization_id}/application/{application_id}/vendor-users/by-id/{didit_internal_id}/faces/upload/`**## माइग्रेशन प्रवाह**1. उपयोगकर्ता बनाएँ या खोजें**नई प्रोफ़ाइल के लिए [`POST /v3/users/create/`](https://docs.didit.me/hi/management-api/users/create) कॉल करें, या किसी मौजूदा प्रोफ़ाइल के लिए [`GET /v3/users/{vendor_data}/`](https://docs.didit.me/hi/management-api/users/get) कॉल करें।**2. didit\_internal\_id सहेजें**उपयोगकर्ता रिस्पॉन्स में `didit_internal_id` शामिल होता है। अपने डेटाबेस में `vendor_data` का उपयोग जारी रखें; `didit_internal_id` का उपयोग केवल प्रोफ़ाइल अटैचमेंट endpoint के लिए करें।**3. चेहरा अपलोड करें**`image` फ़ील्ड में कच्ची base64 छवि भेजें। सहेजने से पहले बैकएंड छवि डिकोडिंग, छवि आकार और चेहरे का पता लगाने की जाँच करता है।## उदाहरण```bash theme={null}
# 1. Create the User keyed by your external id
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-42",
    "display_name": "Jane Doe",
    "metadata": { "previous_provider": "legacy-kyc-vendor" }
  }'

# 2. Upload an imported face to the returned didit_internal_id
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"
  }'
```## अनुरोध का मुख्य भाग| फ़ील्ड | प्रकार | आवश्यक | विवरण |
| - | - | - | - |
| `image` | string | हाँ | कच्चा base64-encoded JPG या PNG। `data:image/...;base64,` शामिल न करें। अधिकतम डिकोड किया गया आकार: 2 MB। |
| `comment` | string | नहीं | ऑपरेटर को दिखने वाली टिप्पणी, जो उपयोगकर्ता प्रोफ़ाइल पर दिखाई जाती है। |## रिस्पॉन्स```json theme={null}
{
  "uuid": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee",
  "image_url": "https://signed-url.example/face.jpg",
  "comment": "Imported from previous KYC provider",
  "uploaded_by": "api",
  "created_at": "2026-05-18T12:00:00Z"
}
```## सत्यापन और सीमाएँ- हर उपयोगकर्ता के लिए मैन्युअल रूप से अधिकतम 5 चेहरे अपलोड किए जा सकते हैं।
- डिकोड की गई छवि का अधिकतम आकार 2 MB है।
- छवि मान्य base64 होनी चाहिए और उसे छवि के रूप में डिकोड किया जा सकना चाहिए।
- छवि में पहचाना जा सकने वाला चेहरा होना चाहिए। जब संभव हो, सामने से देखे गए, अच्छी रोशनी वाले चेहरे का क्रॉप उपयोग करें।
- अपलोड किया गया चेहरा भविष्य की डुप्लिकेट पहचान और चेहरा खोज के लिए इंडेक्स किया जाता है।
- अपलोड किया गया चेहरा स्वचालित रूप से ब्लॉकलिस्ट में नहीं जोड़ा जाता।## अपलोड किए गए चेहरों की सूची बनाएँ या हटाएँप्रोफ़ाइल में मौजूद चेहरों की सूची देखें:```bash theme={null}
curl https://verification.didit.me/v3/organization/$ORGANIZATION_ID/application/$APPLICATION_ID/vendor-users/by-id/$DIDIT_INTERNAL_ID/faces/ \
  -H "x-api-key: YOUR_API_KEY"
```प्रोफ़ाइल से एक चेहरा हटाएँ:```bash theme={null}
curl -X DELETE https://verification.didit.me/v3/organization/$ORGANIZATION_ID/application/$APPLICATION_ID/vendor-users/by-id/$DIDIT_INTERNAL_ID/faces/$FACE_UUID/ \
  -H "x-api-key: YOUR_API_KEY"
```## अनुमतियाँउसी एप्लिकेशन की API कुंजी का उपयोग करें। कुंजी ऐसे ऐप की होनी चाहिए जिसे लक्ष्य उपयोगकर्ता प्रोफ़ाइल प्रबंधित करने की अनुमति हो।## विफलता के प्रकार- `400` – अमान्य base64, अमान्य छवि, कोई पता लगाने योग्य चेहरा नहीं, 2 MB से बड़ी छवि, या उपयोगकर्ता के पास पहले से 5 अपलोड किए गए चेहरे हैं।
- `401` – क्रेडेंशियल गायब हैं या अमान्य हैं।
- `403` – API कुंजी मान्य है, लेकिन इस उपयोगकर्ता प्रोफ़ाइल को प्रबंधित करने की अनुमति नहीं है।
- `404` – एप्लिकेशन में उस `didit_internal_id` के लिए कोई उपयोगकर्ता मौजूद नहीं है।
- `429` – रेट लिमिट लागू है; `Retry-After` का उपयोग करके प्रतीक्षा करें और फिर पुनः प्रयास करें।## संबंधित- [उपयोगकर्ता बनाएँ](https://docs.didit.me/hi/management-api/users/create.md)
- [उपयोगकर्ता प्राप्त करें](https://docs.didit.me/hi/management-api/users/get.md)
- [उपयोगकर्ता इंपोर्ट और एक्सपोर्ट करें](https://docs.didit.me/hi/entities/users/import-export.md)
- [चेहरे और बायोमेट्रिक्स](https://docs.didit.me/hi/entities/users/faces-and-biometrics.md)
- [ब्लॉकलिस्ट में चेहरा अपलोड करें](https://docs.didit.me/hi/management-api/lists/upload-face.md)


## OpenAPI

````yaml hi/openapi-25.json POST /v3/organization/{organization_id}/application/{application_id}/vendor-users/by-id/{didit_internal_id}/faces/upload/
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/organization/{organization_id}/application/{application_id}/vendor-users/by-id/{didit_internal_id}/faces/upload/:
    post:
      tags:
        - Users
      summary: उपयोगकर्ता का चेहरा अपलोड करें
      description: >-
        किसी मौजूदा User प्रोफ़ाइल में एक विश्वसनीय इंपोर्ट की गई चेहरे की छवि
        संलग्न करें। `vendor_data` द्वारा किसी User को बनाने या प्राप्त करने और
        उसके `didit_internal_id` को पढ़ने के बाद इसका उपयोग करें। अपलोड किया गया
        चेहरा User प्रोफ़ाइल पर संग्रहीत किया जाता है और डुप्लिकेट पहचान तथा
        चेहरा खोज के लिए अनुक्रमित किया जाता है। इसे चेहरा ब्लॉकलिस्ट में नहीं
        जोड़ा जाता है।
      operationId: upload_user_face
      parameters:
        - name: organization_id
          in: path
          required: true
          schema:
            type: string
            format: uuid
          description: संगठन UUID जिसके स्वामित्व में एप्लिकेशन है।
        - name: application_id
          in: path
          required: true
          schema:
            type: string
            format: uuid
          description: एप्लिकेशन UUID जिसके पास उपयोगकर्ता प्रोफ़ाइल का स्वामित्व है।
        - name: didit_internal_id
          in: path
          required: true
          schema:
            type: string
            format: uuid
          description: >-
            Didit का आंतरिक उपयोगकर्ता UUID, जिसे `GET /v3/users/{vendor_data}/`
            और `POST /v3/users/create/` द्वारा `didit_internal_id` के रूप में
            लौटाया जाता है।
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - image
              properties:
                image:
                  type: string
                  format: byte
                  description: >-
                    रॉ base64-एन्कोडेड JPG या PNG चेहरे की छवि।
                    `data:image/...;base64,` प्रीफ़िक्स शामिल न करें। अधिकतम
                    डिकोड किया गया आकार: 2 MB।
                comment:
                  type: string
                  description: अपलोड किए गए चेहरे के लिए वैकल्पिक ऑपरेटर-दृश्यमान नोट।
                  default: ''
            examples:
              Imported face:
                summary: पिछले प्रदाता से इंपोर्ट किया गया चेहरा संलग्न करें
                value:
                  image: /9j/4AAQSkZJRgABAQEA...
                  comment: Imported from previous KYC provider
      responses:
        '201':
          description: चेहरा अपलोड किया गया और उपयोगकर्ता प्रोफ़ाइल से संलग्न किया गया।
          content:
            application/json:
              schema:
                type: object
                required:
                  - uuid
                  - image_url
                  - comment
                  - uploaded_by
                  - created_at
                properties:
                  uuid:
                    type: string
                    format: uuid
                    description: अपलोड किए गए उपयोगकर्ता फ़ेस रिकॉर्ड का UUID।
                  image_url:
                    type: string
                    format: uri
                    nullable: true
                    description: अपलोड की गई चेहरे की छवि के लिए हस्ताक्षरित URL।
                  comment:
                    type: string
                    nullable: true
                    description: चेहरा अपलोड करते समय दी गई टिप्पणी।
                  uploaded_by:
                    type: string
                    nullable: true
                    description: उपलब्ध होने पर अपलोडर का ईमेल या कर्ता पहचानकर्ता।
                  created_at:
                    type: string
                    format: date-time
                    description: अपलोड टाइमस्टैम्प।
              examples:
                Uploaded:
                  value:
                    uuid: aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee
                    image_url: https://signed-url.example/face.jpg
                    comment: Imported from previous KYC provider
                    uploaded_by: api
                    created_at: '2026-05-18T12:00:00Z'
        '400':
          description: >-
            अमान्य अनुरोध body या छवि। सामान्य कारण: अमान्य base64, अमान्य छवि,
            कोई पता लगाने योग्य चेहरा नहीं, 2 MB से अधिक की छवि, गायब एम्बेडिंग,
            या उपयोगकर्ता के पास पहले से ही 5 अपलोड किए गए चेहरे हैं।
          content:
            application/json:
              examples:
                No face:
                  value:
                    image: >-
                      No face detected in the image. Please upload a clear photo
                      with a visible face.
                Too many faces:
                  value:
                    detail: Maximum of 5 faces per user reached.
                Too large:
                  value:
                    image: Image exceeds maximum size of 2 MB.
        '401':
          description: अनुपलब्ध या अमान्य API कुंजी।
          content:
            application/json:
              examples:
                Missing key:
                  value:
                    detail: Authentication credentials were not provided.
        '403':
          description: >-
            क्रेडेंशियल मान्य है लेकिन इस एप्लिकेशन के लिए उपयोगकर्ता प्रोफ़ाइल
            नहीं लिख सकता है।
          content:
            application/json:
              examples:
                Forbidden:
                  value:
                    detail: You do not have permission to perform this action.
        '404':
          description: >-
            एप्लिकेशन में उस `didit_internal_id` के लिए कोई उपयोगकर्ता मौजूद
            नहीं है।
          content:
            application/json:
              examples:
                Not found:
                  value:
                    detail: Not found.
        '429':
          description: रेट लिमिट पार हो गई; थोड़ा रुकें और पुनः प्रयास करें।
          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/organization/11111111-2222-3333-4444-555555555555/application/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee/vendor-users/by-id/f4e5e1f2-94a9-4f86-8c16-2b7d9b4db418/faces/upload/'
            \
              -H 'x-api-key: YOUR_API_KEY' \
              -H 'Content-Type: application/json' \
              -d '{"image": "/9j/4AAQSkZJRgABAQEA...", "comment": "Imported from previous KYC provider"}'
        - lang: python
          label: Python
          source: |-
            from didit import Didit

            # Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID
            # and DIDIT_APPLICATION_ID.
            client = Didit()

            result = client.users.upload_face(
                "11111111-2222-3333-4444-555555555555",
                image="/9j/4AAQSkZJRgABAQEA...",
                comment="Imported from previous KYC provider",
            )
            print(result)
        - lang: javascript
          label: Node.js
          source: >-
            import Didit from "@didit-protocol/sdk-node";


            // Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID

            // and DIDIT_APPLICATION_ID.

            const didit = new Didit();


            const result = await
            didit.users.uploadFace("11111111-2222-3333-4444-555555555555", {
              image: "/9j/4AAQSkZJRgABAQEA...",
              comment: "Imported from previous KYC provider",
            });

            console.log(result);
        - lang: go
          label: Go
          source: "ctx := context.Background()\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nclient := didit.NewClient()\n\nresult, err := client.Users.UploadFace(ctx, \"11111111-2222-3333-4444-555555555555\", didit.UsersUploadFaceParams{\n\tImage:   \"/9j/4AAQSkZJRgABAQEA...\",\n\tComment: didit.String(\"Imported from previous KYC provider\"),\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.UsersUploadFaceParams;


            // Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID

            // and DIDIT_APPLICATION_ID.

            Didit client = new Didit();


            var result =
            client.users().uploadFace("11111111-2222-3333-4444-555555555555",
            UsersUploadFaceParams.builder()
                    .image("/9j/4AAQSkZJRgABAQEA...")
                    .comment("Imported from previous KYC provider")
                    .build());
            System.out.println(result);
        - lang: php
          label: PHP
          source: >-
            <?php


            require 'vendor/autoload.php';


            use Didit\DiditClient;


            // Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID

            // and DIDIT_APPLICATION_ID.

            $didit = new DiditClient();


            $result =
            $didit->users->uploadFace('11111111-2222-3333-4444-555555555555', [
                'image' => '/9j/4AAQSkZJRgABAQEA...',
                'comment' => 'Imported from previous KYC provider',
            ]);

            print_r($result->toArray());
        - lang: ruby
          label: Ruby
          source: |-
            require "didit"

            # Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID
            # and DIDIT_APPLICATION_ID.
            didit = Didit::Client.new

            result = didit.users.upload_face(
              "11111111-2222-3333-4444-555555555555",
              image: "/9j/4AAQSkZJRgABAQEA...",
              comment: "Imported from previous KYC provider"
            )
            puts result.to_h
        - lang: csharp
          label: .NET
          source: >-
            using System;

            using System.Text.Json;

            using Didit;


            // Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID

            // and DIDIT_APPLICATION_ID.

            using var client = new DiditClient();


            var result = await
            client.Users.UploadFaceAsync("11111111-2222-3333-4444-555555555555",
            new UsersUploadFaceParams

            {
                Image = "/9j/4AAQSkZJRgABAQEA...",
                Comment = "Imported from previous KYC provider",
            });

            Console.WriteLine(JsonSerializer.Serialize(result));
components:
  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.