> ## 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: 1:1 चेहरा तुलना

> Didit का POST /v3/face-match/ 1:1 चेहरा तुलना के लिए। पहचान सत्यापन, एक्सेस कंट्रोल, पुनः प्रमाणीकरण। 2s से कम अनुमान, भुगतान-प्रति-उपयोग मूल्य।



## OpenAPI

````yaml hi/openapi-25.json POST /v3/face-match/
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/face-match/:
    post:
      tags:
        - Standalone APIs
      summary: चेहरा मिलान
      description: >-
        दो चेहरे की छवियों की तुलना (1:1) करें और एक समानता `score` (0–100) के
        साथ एक `Approved`/`Declined` `status` प्राप्त करें।


        **यह कैसे काम करता है।** दोनों छवियों को एक बायोमेट्रिक मॉडल द्वारा
        डिकोड और विश्लेषित किया जाता है (यदि कैप्चर तिरछे या उल्टे हो सकते हैं
        तो `rotate_image=true` सेट करें), फिर दोनों चेहरों के बीच एक समानता
        स्कोर की गणना की जाती है। `face_match_score_decline_threshold` (डिफ़ॉल्ट
        `30`) से **सख्ती से ऊपर** का स्कोर `status: "Approved"` लौटाता है; इसके
        बराबर या नीचे का स्कोर `LOW_FACE_MATCH_SIMILARITY` चेतावनी के साथ
        `Declined` लौटाता है। यदि किसी भी चेहरे के जोड़े का स्कोर नहीं निकाला जा
        सकता है, तो भी कॉल `status: "Declined"` और `NO_REFERENCE_IMAGE` चेतावनी
        के साथ `200` लौटाता है — डिफ़ॉल्ट सेव पाथ पर `score` `null` होता है, या
        `save_api_request=false` के साथ `0` होता है। सर्वोत्तम परिणामों के लिए
        प्रति छवि एक स्पष्ट, सामने की ओर मुख वाला चेहरा सबमिट करें।


        **बिलिंग।** प्रत्येक `200` रिस्पॉन्स एक चेहरा मिलान API क्रेडिट की खपत
        करता है (आपके प्लान क्रेडिट या टॉप अप बैलेंस से भुगतान किया जाता है)। जब
        संगठन का बैलेंस कॉल को कवर नहीं कर सकता है, तो endpoint किसी भी छवि
        प्रोसेसिंग से पहले पर्याप्त क्रेडिट न होने वाली त्रुटि के साथ `403`
        लौटाता है।


        **सत्र स्थायित्व (`save_api_request`, डिफ़ॉल्ट `true`)।** जब `true` हो,
        तो कॉल को API-प्रकार के सत्र के रूप में बनाए रखा जाता है: यह Business
        Console में दिखाई देता है, लौटाया गया `request_id` एक वास्तविक सत्र id
        है जिसे आप `GET /v3/session/{sessionId}/decision/` को पास कर सकते हैं,
        दोनों छवियों को सत्र के चेहरा-मिलान स्रोत/लक्ष्य छवियों के रूप में
        संग्रहीत किया जाता है, और आपके कॉन्फ़िगर किए गए webhook endpoints पर एक
        `status.updated` webhook भेजा जाता है। जब `false` हो, तो कुछ भी संग्रहीत
        नहीं होता है और `request_id` एक बार उपयोग होने वाला सहसंबंध UUID होता है
        जिसे बाद में नहीं देखा जा सकता है।


        **चेहरा खोज इंडेक्स।** यह endpoint कभी भी आपके चेहरा खोज इंडेक्स में
        चेहरों को नामांकित नहीं करता है और कभी भी ब्लॉकलिस्ट या डुप्लिकेट
        स्क्रीनिंग नहीं चलाता है — उनके लिए `POST /v3/passive-liveness/` या
        `POST /v3/face-search/` का उपयोग करें।


        **सैंडबॉक्स।** सैंडबॉक्स API कुंजियाँ सभी प्रोसेसिंग और बिलिंग को छोड़
        देती हैं: अनुरोध सत्यापन के बाद (गलत इनपुट अभी भी `400` लौटाता है),
        endpoint एक स्थिर `Approved` मॉक payload लौटाता है, कोई सत्र बनाए नहीं
        रखा जाता है, और कोई क्रेडिट की खपत नहीं होती है।


        **प्रमाणीकरण।** `x-api-key` हेडर में अपने एप्लिकेशन की API कुंजी भेजें।
        अनुपलब्ध या अमान्य क्रेडेंशियल्स `403` लौटाते हैं (`{"detail": "You do
        not have permission to perform this action."}`) — यह API कभी भी `401`
        नहीं लौटाता है।


        **रेट लिमिट।** सभी POST/PATCH/DELETE endpoints पर प्रति API कुंजी 300
        अनुरोध/मिनट का साझा राइट बजट; इसे पार करने पर `429` मिलता है।
      operationId: post_v3face-match
      parameters: []
      requestBody:
        required: true
        content:
          multipart/form-data:
            schema:
              type: object
              required:
                - user_image
                - ref_image
              properties:
                user_image:
                  type: string
                  format: binary
                  description: >-
                    सत्यापित करने के लिए लाइव या संभावित चेहरे की छवि (उदा. एक
                    सेल्फ़ी)। ऐसा एकल सामने की ओर मुख किया हुआ फ़ोटो सबमिट करें
                    जिसमें विषय का चेहरा स्पष्ट रूप से दिखाई दे रहा हो और अच्छी
                    रोशनी हो। अनुमत एक्सटेंशन: `tiff`, `jpg`, `jpeg`, `png`,
                    `webp`। अधिकतम अपलोड आकार: **5 MB** (बड़ी फ़ाइलों को `400`
                    के साथ अस्वीकार कर दिया जाता है)। प्रोसेसिंग से पहले छवियों
                    को स्वचालित रूप से ~0.5 MB तक कंप्रेस किया जाता है, इसलिए
                    बहुत उच्च रिज़ॉल्यूशन से सटीकता में सुधार नहीं होता है।
                ref_image:
                  type: string
                  format: binary
                  description: >-
                    तुलना करने के लिए संदर्भ चेहरे की छवि (उदा., पहचान दस्तावेज़
                    का पोर्ट्रेट या पहले नामांकित फ़ोटो)। `user_image` के समान
                    ही प्रारूप और आकार सीमाएँ।
                face_match_score_decline_threshold:
                  type: number
                  format: float
                  default: 30
                  minimum: 0
                  maximum: 100
                  description: >-
                    समानता थ्रेशोल्ड (0–100) जो रिस्पॉन्स `status` को निर्धारित
                    करता है। इस मान **के बराबर या उससे कम** परिकलित स्कोर
                    `status` को `Declined` पर सेट करता है और
                    `LOW_FACE_MATCH_SIMILARITY` चेतावनी जोड़ता है; इससे अधिक का
                    स्कोर `Approved` लौटाता है। डिफ़ॉल्ट `30` अनुमेय है — अधिक
                    सख्त सत्यापन के लिए इसे बढ़ाएं (उदा. `50`–`60`)। 0–100 के
                    बाहर के मान `400` लौटाते हैं।
                  example: 50
                rotate_image:
                  type: boolean
                  default: false
                  description: >-
                    जब `true` हो, तो सेवा 90-डिग्री अंतराल (0, 90, 180, 270) में
                    इनपुट छवियों को आज़माती है और उस ओरिएंटेशन का उपयोग करती है
                    जिससे सबसे अच्छा फ़ेस डिटेक्शन प्राप्त होता है — अनुपलब्ध
                    EXIF ओरिएंटेशन वाले मोबाइल कैप्चर के लिए उपयोगी। इससे
                    विलंबता बढ़ती है, इसलिए इसे केवल तभी सक्षम करें यदि आप सीधी
                    छवियों की गारंटी नहीं दे सकते।
                  example: false
                save_api_request:
                  type: boolean
                  default: true
                  description: >-
                    `true` (डिफ़ॉल्ट) होने पर, कॉल को API-प्रकार के सत्र के रूप
                    में बनाए रखता है — Business Console में दृश्यमान, लौटाए गए
                    `request_id` का उपयोग करके `GET
                    /v3/session/{sessionId}/decision/` के माध्यम से प्राप्त करने
                    योग्य, और `status.updated` webhook के माध्यम से घोषित किया
                    जाता है। `false` होने पर, कुछ भी संग्रहीत नहीं किया जाता है
                    और `request_id` केवल रिस्पॉन्स सहसंबंध के लिए एक अस्थायी
                    UUID होता है।
                  example: true
                vendor_data:
                  type: string
                  description: >-
                    वैकल्पिक अपारदर्शी स्ट्रिंग (आपकी आंतरिक उपयोगकर्ता ID,
                    ईमेल, UUID…) जो स्थायी सत्र पर संग्रहीत होती है और रिस्पॉन्स
                    में वापस भेजी जाती है। इसका उपयोग अपने स्वयं के रिकॉर्ड के
                    साथ API कॉल को सहसंबंधित करने और बाद में सत्रों को फ़िल्टर
                    करने के लिए करें।
                  example: user-123
                metadata:
                  type: object
                  additionalProperties: true
                  description: >-
                    सत्र के साथ संग्रहीत वैकल्पिक JSON ऑब्जेक्ट (जब
                    `save_api_request=true`) और रिस्पॉन्स में वापस प्रतिध्वनित
                    होता है। मल्टीपार्ट अनुरोधों में, इसे JSON-एन्कोडेड स्ट्रिंग
                    फ़ील्ड (उदा. `metadata={"flow":"login"}`) के रूप में भेजें —
                    इसे एक ऑब्जेक्ट में पार्स किया जाता है।
                  example:
                    flow: login
                    device_id: abc123
            example:
              user_image: (binary JPEG/PNG of the live selfie)
              ref_image: (binary JPEG/PNG of the reference photo)
              face_match_score_decline_threshold: 50
              rotate_image: false
              save_api_request: true
              vendor_data: user-123
              metadata:
                flow: login
      responses:
        '200':
          description: >-
            चेहरा मिलान परिकलित किया गया है। `face_match.score` एक 0–100 फ़्लोट
            (दो दशमलव) है; जब स्कोर सख्ती से
            `face_match_score_decline_threshold` से ऊपर होता है तो `status`,
            `Approved` होता है, अन्यथा एक व्याख्यात्मक चेतावनी के साथ `Declined`
            होता है। कम समानता या स्कोर न करने योग्य जोड़ी भी `200` लौटाती है —
            केवल HTTP कोड ही नहीं, बल्कि `face_match.status` और
            `face_match.warnings` की भी जाँच करें। जब `save_api_request=true`
            हो, तो `request_id` सुरक्षित रखा गया सत्र आईडी होता है।
          content:
            application/json:
              examples:
                Approved:
                  summary: समान व्यक्ति — थ्रेशोल्ड से ऊपर स्कोर
                  value:
                    request_id: f9f5a777-8002-44c6-baaf-128bcfd6e226
                    face_match:
                      status: Approved
                      score: 99.41
                      user_image:
                        entities:
                          - bbox:
                              - 661
                              - 728
                              - 1688
                              - 2188
                            confidence: 0.732973
                            age: 26.91
                            gender: male
                            race: null
                        best_angle: 0
                      ref_image:
                        entities:
                          - bbox:
                              - 653
                              - 745
                              - 1691
                              - 2185
                            confidence: 0.722082
                            age: 27
                            gender: male
                            race: null
                        best_angle: 0
                      warnings: []
                    vendor_data: user-123
                    metadata:
                      flow: login
                    created_at: '2026-06-12T01:04:42.763237+00:00'
                Declined - low similarity:
                  summary: अस्वीकृति थ्रेशोल्ड पर या उससे कम स्कोर
                  value:
                    request_id: 7cdda24e-311a-46d3-a3bb-e5d9b564ce73
                    face_match:
                      status: Declined
                      score: 24.87
                      user_image:
                        entities:
                          - bbox:
                              - 661
                              - 728
                              - 1688
                              - 2188
                            confidence: 0.732973
                            age: 26.91
                            gender: male
                            race: null
                        best_angle: 0
                      ref_image:
                        entities:
                          - bbox:
                              - 156
                              - 234
                              - 679
                              - 898
                            confidence: 0.717775
                            age: 41.2
                            gender: male
                            race: null
                        best_angle: 0
                      warnings:
                        - risk: LOW_FACE_MATCH_SIMILARITY
                          feature: FACEMATCH
                          additional_data: null
                          log_type: error
                          short_description: Low face match similarity
                          long_description: >-
                            The facial features of the provided image don't
                            closely match the reference image, suggesting a
                            potential identity mismatch.
                    vendor_data: user-123
                    metadata: null
                    created_at: '2026-06-12T01:08:19.859116+00:00'
              schema:
                type: object
                properties:
                  request_id:
                    type: string
                    format: uuid
                    description: >-
                      `save_api_request=true` होने पर सहेजी गई सत्र ID (`GET
                      /v3/session/{sessionId}/decision/` के साथ उपयोग योग्य);
                      अन्यथा एक क्षणिक सहसंबंध UUID।
                  face_match:
                    type: object
                    properties:
                      status:
                        type: string
                        enum:
                          - Approved
                          - Declined
                        description: >-
                          `Approved` जब समानता स्कोर
                          `face_match_score_decline_threshold` से कड़ाई से अधिक
                          हो और स्कोर की गणना की जा सकी हो; अन्यथा `Declined`
                          (एक चेतावनी कारण बताती है)।
                      score:
                        type: number
                        format: float
                        nullable: true
                        minimum: 0
                        maximum: 100
                        description: >-
                          0 से 100 तक समानता स्कोर — मॉडल का विश्वास कि दोनों
                          छवियाँ एक ही व्यक्ति को दर्शाती हैं। केवल तभी दो दशमलव
                          स्थानों तक पूर्णांकित किया जाता है जब
                          `save_api_request` का मान true हो;
                          `save_api_request=false` के साथ मूल फ़्लोट लौटाया जाता
                          है। जब किसी चेहरे के जोड़े को स्कोर नहीं किया जा सका
                          (डिफ़ॉल्ट `save_api_request=true` के साथ) तो `null`;
                          `save_api_request=false` के साथ यही स्थिति `score: 0`
                          के रूप में सामने आ सकती है। दोनों ही मामलों में
                          `NO_REFERENCE_IMAGE` चेतावनी मौजूद होती है और `status`
                          का मान `Declined` होता है।
                        example: 99.41
                      user_image:
                        type: object
                        description: विश्लेषित छवियों के लिए चेहरा-पहचान परिणाम।
                        properties:
                          entities:
                            type: array
                            items:
                              type: object
                              properties:
                                bbox:
                                  type: array
                                  items:
                                    type: integer
                                  minItems: 4
                                  maxItems: 4
                                  description: >-
                                    प्रोसेस की गई छवि में `[x_min, y_min, x_max,
                                    y_max]` पिक्सेल निर्देशांक के रूप में पहचाने
                                    गए चेहरे का बाउंडिंग बॉक्स।
                                  example:
                                    - 661
                                    - 728
                                    - 1688
                                    - 2188
                                confidence:
                                  type: number
                                  format: float
                                  minimum: 0
                                  maximum: 1
                                  description: चेहरा-पहचान विश्वास (0–1)।
                                  example: 0.732973
                                age:
                                  type: number
                                  format: float
                                  description: >-
                                    पहचाने गए चेहरे की मॉडल-अनुमानित आयु, वर्षों
                                    में। केवल सूचनात्मक — यह चेहरा मिलान निर्णय
                                    को प्रभावित नहीं करती है।
                                  example: 26.91
                                gender:
                                  type: string
                                  description: >-
                                    पहचाने गए चेहरे का मॉडल-अनुमानित लिंग
                                    (`male` या `female`)। केवल सूचनात्मक।
                                  example: male
                                race:
                                  type: string
                                  nullable: true
                                  description: >-
                                    आरक्षित फ़ील्ड — इस endpoint से मिलने वाले
                                    रिस्पॉन्स में हमेशा `null` होता है।
                                  example: null
                            description: प्रत्येक पहचाने गए चेहरे के लिए एक प्रविष्टि।
                          best_angle:
                            type: integer
                            description: >-
                              रोटेशन (डिग्री: 0, 90, 180, या 270) जिसने चेहरे का
                              सर्वोत्तम डिटेक्शन उत्पन्न किया। केवल तभी
                              गैर-शून्य जब `rotate_image=true` ने ओरिएंटेशन को
                              ठीक किया।
                            example: 0
                      ref_image:
                        type: object
                        description: >-
                          संदर्भ छवि के लिए चेहरा-पहचान परिणाम, `user_image`
                          जैसा ही प्रारूप।
                        properties:
                          entities:
                            type: array
                            items:
                              type: object
                              properties:
                                bbox:
                                  type: array
                                  items:
                                    type: integer
                                  minItems: 4
                                  maxItems: 4
                                  description: >-
                                    प्रोसेस की गई छवि में `[x_min, y_min, x_max,
                                    y_max]` पिक्सेल निर्देशांक के रूप में पहचाने
                                    गए चेहरे का बाउंडिंग बॉक्स।
                                  example:
                                    - 661
                                    - 728
                                    - 1688
                                    - 2188
                                confidence:
                                  type: number
                                  format: float
                                  minimum: 0
                                  maximum: 1
                                  description: चेहरा-पहचान विश्वास (0–1)।
                                  example: 0.732973
                                age:
                                  type: number
                                  format: float
                                  description: >-
                                    पहचाने गए चेहरे की मॉडल-अनुमानित आयु, वर्षों
                                    में। केवल सूचनात्मक — यह चेहरा मिलान निर्णय
                                    को प्रभावित नहीं करती है।
                                  example: 26.91
                                gender:
                                  type: string
                                  description: >-
                                    पहचाने गए चेहरे का मॉडल-अनुमानित लिंग
                                    (`male` या `female`)। केवल सूचनात्मक।
                                  example: male
                                race:
                                  type: string
                                  nullable: true
                                  description: >-
                                    आरक्षित फ़ील्ड — इस endpoint से मिलने वाले
                                    रिस्पॉन्स में हमेशा `null` होता है।
                                  example: null
                            description: प्रत्येक पहचाने गए चेहरे के लिए एक प्रविष्टि।
                          best_angle:
                            type: integer
                            example: 0
                      warnings:
                        type: array
                        description: >-
                          बिना किसी जोखिम वाली स्वीकृति पर खाली।
                          `NO_REFERENCE_IMAGE` (`error`) — किसी भी चेहरे के
                          जोड़े का स्कोर नहीं किया जा सका;
                          `LOW_FACE_MATCH_SIMILARITY` (`error`) — स्कोर
                          अस्वीकृति थ्रेशोल्ड पर या उससे नीचे है। इनमें से कोई
                          भी `status` को `Declined` पर सेट करता है।
                        items:
                          type: object
                          properties:
                            risk:
                              type: string
                              enum:
                                - NO_REFERENCE_IMAGE
                                - LOW_FACE_MATCH_SIMILARITY
                              description: मशीन-पठनीय जोखिम कोड।
                            feature:
                              type: string
                              enum:
                                - FACEMATCH
                              description: >-
                                सुविधा जिसने चेतावनी उत्पन्न की। इस endpoint पर
                                हमेशा `FACEMATCH`।
                            additional_data:
                              type: object
                              nullable: true
                              additionalProperties: true
                              description: चेहरा मिलान चेतावनियों के लिए हमेशा `null`।
                            log_type:
                              type: string
                              enum:
                                - error
                                - warning
                                - information
                              description: >-
                                गंभीरता। `error` चेतावनियाँ `status` को
                                `Declined` में बदल देती हैं; `warning` और
                                `information` प्रविष्टियाँ केवल सलाहकारी होती
                                हैं और अपने आप कभी अस्वीकृत नहीं करती हैं।
                            short_description:
                              type: string
                              description: जोखिम का मानव-पठनीय एक पंक्ति का सारांश।
                            long_description:
                              type: string
                              description: जोखिम का मानव-पठनीय स्पष्टीकरण।
                  vendor_data:
                    type: string
                    nullable: true
                    description: आपके द्वारा भेजे गए `vendor_data` का इको, या `null`।
                  metadata:
                    type: object
                    nullable: true
                    additionalProperties: true
                    description: आपके द्वारा भेजे गए `metadata` ऑब्जेक्ट का इको, या `null`।
                  created_at:
                    type: string
                    format: date-time
                    description: >-
                      रिस्पॉन्स जनरेट होने का ISO 8601 टाइमस्टैम्प (UTC), उदा.
                      `2026-06-12T01:04:42.763237+00:00`।
        '400':
          description: >-
            सत्यापन त्रुटि। तब लौटाई जाती है जब आवश्यक इमेज गायब हो, 5 MB से
            अधिक हो, इसका एक्सटेंशन असमर्थित हो, या जब कोई विकल्प सीमा से बाहर
            हो। बॉडी DRF का मानक फ़ील्ड-त्रुटि एनवेलप है: प्रति आपत्तिजनक फ़ील्ड
            संदेशों की एक सरणी।
          content:
            application/json:
              examples:
                Missing required image:
                  summary: '`ref_image` (या `user_image`) फ़ॉर्म डेटा में शामिल नहीं है'
                  value:
                    ref_image:
                      - No file was submitted.
                Unsupported file extension:
                  summary: फ़ाइल एक्सटेंशन tiff/jpg/jpeg/png/webp से बाहर है
                  value:
                    user_image:
                      - >-
                        File extension “txt” is not allowed. Allowed extensions
                        are: tiff, jpg, jpeg, png, webp.
                File too large:
                  summary: अपलोड 5 MB की सीमा से अधिक है
                  value:
                    user_image:
                      - File size should not exceed 5 MB
                Threshold out of range:
                  summary: '`face_match_score_decline_threshold` 0–100 से बाहर है'
                  value:
                    face_match_score_decline_threshold:
                      - Ensure this value is less than or equal to 100.
        '403':
          description: >-
            अनुमति अस्वीकृत। तब लौटाया जाता है जब `x-api-key` हेडर अनुपलब्ध हो,
            और तब भी जब कॉल करने वाले संगठन का बैलेंस कॉल को कवर नहीं कर सकता;
            गलत, निरस्त या समय-सीमा समाप्त कुंजी `401` लौटाती है। अनुपलब्ध कुंजी
            `{"detail": ...}` के साथ `403` लौटाती है; गलत, निरस्त या समय-सीमा
            समाप्त कुंजी `401` लौटाती है। क्रेडिट की कमी किसी भी इमेज प्रोसेसिंग
            से पहले `{"error": ...}` के साथ `403` लौटाती है।
          content:
            application/json:
              examples:
                Missing or invalid API key:
                  summary: कोई `x-api-key` हेडर नहीं, या कुंजी अमान्य/निरस्त है
                  value:
                    detail: You do not have permission to perform this action.
                Not enough credits:
                  summary: संगठन का बैलेंस कॉल को कवर नहीं कर सकता
                  value:
                    error: >-
                      You don't have enough credits to perform this request.
                      Please top up at https://business.didit.me
        '429':
          description: >-
            रेट लिमिट पार हो गई। POST/PATCH/DELETE endpoints प्रति मिनट प्रति
            API कुंजी 300 राइट अनुरोधों का बजट साझा करते हैं (लेन-देन निर्माण और
            इवेंट इनजेशन का 600 का एक अलग बजट है)। रिस्पॉन्स में
            `X-RateLimit-Limit`, `X-RateLimit-Remaining`, `X-RateLimit-Reset` और
            `Retry-After` हेडर होते हैं।
          content:
            application/json:
              examples:
                Write rate limit exceeded:
                  summary: वर्तमान मिनट में 300 से अधिक राइट अनुरोध
                  value:
                    detail: >-
                      Write request rate limit exceeded. You can make up to 300
                      requests per minute.
              schema:
                type: object
                properties:
                  detail:
                    type: string
      security:
        - ApiKeyAuth: []
      x-codeSamples:
        - lang: curl
          label: cURL
          source: |-
            curl -X POST 'https://verification.didit.me/v3/face-match/' \
              -H 'x-api-key: YOUR_API_KEY' \
              -F 'user_image=@./selfie.jpg' \
              -F 'ref_image=@./id_portrait.jpg' \
              -F 'face_match_score_decline_threshold=50' \
              -F 'save_api_request=true' \
              -F 'vendor_data=user-123'
        - lang: python
          label: Python
          source: |-
            from didit import Didit

            # Reads DIDIT_API_KEY.
            client = Didit()

            result = client.face_match.compare(
                user_image=open("user_image.jpg", "rb"),
                ref_image=open("ref_image.jpg", "rb"),
                face_match_score_decline_threshold=50.0,
                rotate_image=False,
                save_api_request=True,
                vendor_data="user-123",
                metadata={"flow": "login"},
            )
            print(result)
        - lang: javascript
          label: Node.js
          source: |-
            import Didit, { fileFromPath } from "@didit-protocol/sdk-node";

            // Reads DIDIT_API_KEY.
            const didit = new Didit();

            const result = await didit.faceMatch.compare({
              user_image: await fileFromPath("user_image.jpg"),
              ref_image: await fileFromPath("ref_image.jpg"),
              face_match_score_decline_threshold: 50.0,
              rotate_image: false,
              save_api_request: true,
              vendor_data: "user-123",
              metadata: { flow: "login" },
            });
            console.log(result);
        - lang: go
          label: Go
          source: "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.FaceMatch.Compare(ctx, didit.FaceMatchCompareParams{\n\tUserImage:                      didit.FileFromPath(\"user_image.jpg\"),\n\tRefImage:                       didit.FileFromPath(\"ref_image.jpg\"),\n\tFaceMatchScoreDeclineThreshold: didit.Float(50.0),\n\tRotateImage:                    didit.Bool(false),\n\tSaveAPIRequest:                 didit.Bool(true),\n\tVendorData:                     didit.String(\"user-123\"),\n\tMetadata:                       didit.Some(map[string]any{\"flow\": \"login\"}),\n})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
        - lang: java
          label: Java
          source: >-
            import java.nio.file.Path;

            import java.util.Map;

            import me.didit.Didit;

            import me.didit.types.FaceMatchCompareParams;


            // Reads DIDIT_API_KEY.

            Didit client = new Didit();


            var result =
            client.faceMatch().compare(FaceMatchCompareParams.builder()
                    .userImage(Path.of("user_image.jpg"))
                    .refImage(Path.of("ref_image.jpg"))
                    .faceMatchScoreDeclineThreshold(50.0)
                    .rotateImage(false)
                    .saveApiRequest(true)
                    .vendorData("user-123")
                    .metadata(Map.of("flow", "login"))
                    .build());
            System.out.println(result);
        - lang: php
          label: PHP
          source: |-
            <?php

            require 'vendor/autoload.php';

            use Didit\DiditClient;
            use Didit\File;

            // Reads DIDIT_API_KEY.
            $didit = new DiditClient();

            $result = $didit->faceMatch->compare([
                'user_image' => File::fromPath('user_image.jpg'),
                'ref_image' => File::fromPath('ref_image.jpg'),
                'face_match_score_decline_threshold' => 50.0,
                'rotate_image' => false,
                'save_api_request' => true,
                'vendor_data' => 'user-123',
                'metadata' => ['flow' => 'login'],
            ]);
            print_r($result->toArray());
        - lang: ruby
          label: Ruby
          source: |-
            require "didit"

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

            result = didit.face_match.compare(
              user_image: Pathname("user_image.jpg"),
              ref_image: Pathname("ref_image.jpg"),
              face_match_score_decline_threshold: 50.0,
              rotate_image: false,
              save_api_request: true,
              vendor_data: "user-123",
              metadata: { flow: "login" }
            )
            puts result.to_h
        - lang: csharp
          label: .NET
          source: >-
            using System;

            using System.Collections.Generic;

            using System.Text.Json;

            using Didit;


            // Reads DIDIT_API_KEY.

            using var client = new DiditClient();


            var result = await client.FaceMatch.CompareAsync(new
            FaceMatchCompareParams

            {
                UserImage = FileUpload.FromPath("user_image.jpg"),
                RefImage = FileUpload.FromPath("ref_image.jpg"),
                FaceMatchScoreDeclineThreshold = 50.0,
                RotateImage = false,
                SaveApiRequest = true,
                VendorData = "user-123",
                Metadata = new Dictionary<string, object> { ["flow"] = "login" },
            });

            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.