> ## Documentation Index
> Fetch the complete documentation index at: https://docs.dataspike.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Example of Possible Webhook Events

> Fake path to describe webhook format. Click `Callbacks` bellow to see possible Webhook Object options. More information about webhooks can be found in the [documentation](https://docs.dataspike.io/webhooks).




## OpenAPI

````yaml /api-reference/dataspike_openapi.yaml post /webhook
openapi: 3.1.0
info:
  title: Dataspike API
  description: >
    # Introduction


    Welcome to the Dataspike API! You can use our API to access AML and Docver
    API endpoints.


    **Production API endpoint**: [api.dataspike.io](https://api.dataspike.io)


    **Sandbox API endpoint**:
    [sandboxapi.dataspike.io](https://sandboxapi.dataspike.io)


    All API requests must contain header `Content-Type: application/json`


    For both endpoints API Key is required and can be generated at
    [dash.dataspike.io](https://dash.dataspike.io/api) Developer section


    You have to include API Key in each request using `ds-api-token` Header name
  version: v3
servers:
  - url: https://api.dataspike.io
    description: Production
  - url: https://sandboxapi.dataspike.io
    description: Sandbox
security:
  - ApiKeyAuth: []
tags:
  - name: AML Screening
    description: >
      ### PEP & Sanctions Screening API


      **Key Features:**


      1. **Real-time Screening**: Perform instant screenings against constantly
      updated PEP and sanctions databases, ensuring you have the most current
      information at your fingertips.


      2. **Customizable Workflow**: Tailor the screening process to your
      specific needs, setting up thresholds and alerts that suit your risk
      appetite.


      3. **Easy Integration**: Our API is designed with simplicity in mind,
      making integration into your applications a seamless experience.


      4. **Data Security**: We prioritize data security and compliance,
      implementing industry-leading measures to protect your sensitive
      information.
  - name: Applicants
    description: >
      ### Applicant API


      The Applicant API provides a powerful and flexible solution for creating
      new applicants, conducting AML (Anti-Money Laundering) checks, performing
      document verifications, and enabling customizable applicant monitoring
      settings. This API is designed to seamlessly integrate with your existing
      systems, allowing you to efficiently manage applicant data and compliance
      processes.


      **Key Features:**


      1. **Create New Applicants**: The Applicant API enables you to
      programmatically create new applicant profiles by providing essential
      details such as name or identification data.

      2. **AML Checks**: Efficiently conduct Anti-Money Laundering checks on
      applicants to ensure compliance with regulatory requirements and prevent
      fraudulent activities. The API leverages industry-leading AML databases to
      screen applicants against sanctions lists and other watchlists.

      3. **Customizable Monitoring Settings**: With the Applicant API, you have
      the freedom to tailor applicant monitoring settings according to your
      specific compliance needs. You can configure the frequency of screening
      applicants against sanctions lists, enabling you to stay up-to-date with
      any changes in their status.
  - name: Verifications
    description: >
      ### Verification API


      The Document Verification API offers a cutting-edge and secure solution
      for verifying the authenticity and validity of identity documents
      submitted by applicants within application or platform. This powerful API
      leverages advanced document recognition and verification technologies to
      streamline the verification process and improve overall user onboarding
      experience.


      **Key Features:**


      1. **Identity Document Validation**: The API supports various types of
      identity documents, such as passports, driver's licenses and more. It
      automatically extracts relevant information from these documents, ensuring
      seamless and reliable validation.

      2. **Biometric Verification**: For added security and fraud prevention,
      the API can perform biometric verification by comparing the photo on the
      identity document with a selfie or live photo provided by the applicant.

      3. **Real-Time Verification Results**: Verification results are provided
      in real-time, enabling swift decision-making in onboarding processes and
      other critical operations.
  - name: Verification profiles
    description: >
      ### Verification profiles API


      Verification profiles is designed to configure verification flow.


      **Key Features:**


      1. Setup which documents, countries are valid for verification.

      2. Enable or disable required checks for verification. For example
      disable/enable cross check verification.

      3. Any other custom settings. Please contact us to negotiate required
      custom behaviour.
  - name: File management
    description: >
      ### File Management API


      File Management API combines essential file management functionalities,
      including file upload, preview, and download, to facilitate efficient and
      secure handling of documents submitted for verification purposes.


      **Key Features:**


      1. **File Upload**: The API enables seamless file upload, allowing
      end-users to submit various types of documents, such as passports,
      driver's licenses, identity cards, and other relevant identification
      papers.

      2. **File Preview**: This functionality assists users in verifying the
      accuracy of the uploaded documents before proceeding with the verification
      process.

      3. **File Download**: Upon successful verification or when needed this
      feature allows to retain a copy of submitted verified documents for future
      use.
  - name: Webhooks
    description: >
      ### Webhooks API


      The AML and Document Verification Webhooks API provide essential
      event-driven notifications to developers, enabling seamless integration
      with Dataspike system application's AML checks and document verification
      processes. By leveraging these Webhooks, developers can receive real-time
      updates about AML hits, document verification results, and other
      activities related to applicant screening.
  - name: SDK
    description: >
      ### SDK API

      By leveraging the SDK API, developers can accelerate development, simplify
      integration, and enhance the overall user experience.
  - name: Verification links
    description: >
      ### Verification links API


      Verification links is designed to configure easy verification flow without
      any development on self side.


      **Quick guide**


      Create verification link. All your applicants now is possible to pass
      verification via this link available at https://am.dataspike.io/$link_id.
      Results will be available via webhook.


      Verification link is embedded to verification profile. Only one link can
      be created for profile.
  - name: Bankbooks
    x-displayName: Bankbooks
    description: >
      ### Bankbooks API


      The Bankbooks API is a tool designed to streamline the extraction process
      of account names and numbers from bankbook images, catering to specific
      countries. With this API, developers and financial institutions can
      effortlessly retrieve essential financial information from scanned or
      photographed bankbooks.


      ### Recommendations


      1. **Filter Out-of-Domain (OOD) Images by Similarity Score**

      The API returns a maximum similarity score between the bankbook found in
      the uploaded image and the bankbook images in the database. A recommended
      threshold to filter out-of-domain (OOD) images, such as credit cards or
      unrelated documents, is 0.75-0.8. We recommend to only consider images
      with a similarity score equal to or higher than this threshold as valid
      bankbook images.

      2. **Consider Manual Checks When Detected a Scanned Document**

      The API provides a boolean flag where the True value indicates that the
      uploaded image is a scanned document or a screenshot. While this flag
      works well for distinguishing photos of physical bankbooks from the
      scanned documents, you should be aware that it may give false negatives
      for screenshots made not in the bank's mobile app. Therefore, it's
      recommended to exercise caution when interpreting this flag and consider
      additional validation steps if necessary.

      3. **Consider Approximate String Matching for Names in Thai Language**

      In Thai language some letters can be extremely similar to each other. For
      example, the letters "ข" (kho khai) and "ฃ" (kho khuat) may appear
      visually similar, so the OCR (optical character recognition) model can
      confuse them sometimes. To address this issue, it's recommended to use
      approximate string matching techniques when comparing the extracted
      account name and number from the bankbook with the reference data. This
      can help account for minor discrepancies or variations in the OCR output
      due to visual similarities in Thai characters.



      ### Requirements:

      * The bankbook in the uploaded image must occupy more than 40% of the
      total area

      * The text information on the bankbook must be clearly visible to
      accurately extract information from it



      ### Additional comments:

      **Handling of Rare Bankbook Designs**

      Some bankbook designs, such as those from TMB or UOB, were rare in our
      training dataset. Additionally, screenshots from mobile apps may change
      quite often. If we encounter any issues with detecting or extracting
      information from these rare designs, we will retrain our models. Our
      alerting system ensures that we are promptly notified of any issues that
      require attention.
  - name: Transmon
    x-displayName: Transaction monitoring API
    description: >
      ### What is Transaction Monitoring


      Transaction monitoring is a flexible and highly customizable system
      designed to check financial transactions (both payor to payee transfers
      and payments during checkout).


      The system based on rules, which you can set through API.


      Flexible custom rules can be used to:

      * Reject ineligible transactions, optionally causes can be provided

      * Flag suspicious transactions for further analysis


      For example, you can add rule for rejecting transaction if its sum three
      times more than average for last 30 days for this user. See examples with
      details below.


      ### How it works


      ![Transaction Monitoring
      Diagram](https://cdn.n37z.com/images/docs/kyt/70079905-dcbd-4510-a4de-0b4d57b7dbd0.png)


      1. Desired rules must be set through API

      2. Each received transaction or payment processed by Transaction
      Monitoring, your rules executed

      3. Result for each transaction/payment sent via Webhooks (see
      TransmonWebhookObject in [Webhooks schema](#tag/webhooks_payloads))


      In custom rules you can access:

      * all the data provided in
      [transaction](#tag/Transmon/operation/post-transmon-transaction)/[payment](#tag/Transmon/operation/post-transmon-payment)
      (amount, currency_code, checkout_price and so on)

      * some aggregated statistics (min/max/average and total sum, transactions
      count) for every applicant for last 1, 7 and 30 days


      ### Transaction Monitoring API


      Transaction Monitoring API combines:

      - essential rules management functionalities to
      create/edit/(de)activate/remove rules

      - endpoints for sending transaction/payment data to Transaction Monitoring


      ### Which data can be used

      Fields from original event data
      ([transaction](#tag/Transmon/operation/post-transmon-transaction)/[payment](#tag/Transmon/operation/post-transmon-payment))
      can be accessed by `event.<field_name>`, for example -
      `event.currency_code`.


      Aggregated statistics for applicant can be accessed in form
      `stats.<period>.<indicator>`.

      Allowed periods are:

      - `last1d` - last 1 day*

      - `last7d` - last 7 days*

      - `last30d` - last 30 days*.


      *"day" means calendar day from 00:00 UTC.


      So, `last1d` means aggregated statistic since today 00:00 UTC. `last7d` -
      includes today + additional 6 full calendar days before.


      Allowed indicators:

      - `sum` - total sum of all transactions and payments for period

      - `avg` - average sum of transaction/payment for period

      - `min` - minimal sum for period

      - `max` - maximal sum for period

      - `transactions_count` - count of all transactions (and payments) for
      period.


      For example, `stats.last30d.avg` - average amount of transaction/payment
      for last 30 days for current applicant.


      ### Rules expressions syntax and fields


      **Arithmetic operators**

      | Operator | Description | Example               |

      | -------- | ----------- | --------------------- |

      | `+`      | sum         | `event.amount + 100`  |

      | `-`      | difference  | `event.amount - 100`  |

      | `*`      | product     | `2 * event.amount`    |

      | `/`      | quotient    | `event.amount / 3`    |



      **Comparison operators**

      | Operator | Description      |
      Example                                     |

      | -------- | ---------------- |
      ------------------------------------------- |

      | `==`     | equal            | `event.amount ==
      100.45`                    |

      | `!=`     | not equal        | `event.amount !=
      0`                         |

      | `<`      | less             | `event.amount <
      0`                          |

      | `<=`     | less or equal    | `event.amount <=
      0`                         |

      | `>`      | greater          | `event.amount >
      0`                          |

      | `>=`     | greater or equal | `event.amount >=
      0`                         |



      **Logical operators**

      | Operator | Description     |
      Example                                       |

      | -------- | --------------- |
      --------------------------------------------- |

      | `&&`     | conditional AND | `event.amount > 100 && event.amount <
      200`    |

      | `\|\|`   | conditional OR  | `event.amount <= 0 \|\| event.amount >
      10000` |

      | `!`      | NOT             | `!(event.amount ==
      0)`                        |



      **Membership operators**

      | Operator | Description                                            |
      Example                                  |

      | -------- | ------------------------------------------------------ |
      ---------------------------------------- |

      | `in`     | checks that left operand exists in right operand array |
      `event.payee_country_cd in ["US", "UK"]` |



      ### Examples

      1. Check sum of transaction above 10000 or below or equal to zero

      ```

      event.amount > 10000 || event.amount <= 0

      ```

      2. Check currency is USD or EUR

      ```

      event.currency_code in ["USD", "EUR"]

      ```

      3. Check payee country is not US and not UK

      ```

      !(event.payee_country_cd in ["US", "UK"])

      ```

      4. Check if transactions sum 2.5 times more than average for last 30 days
      for this user.

      ```

      event.amount > 2.5 * stats.last30d.avg

      ```
  - name: KYT Crypto
    x-displayName: KYT Crypto API
    description: >
      The **KYT Crypto API** enables users to perform **Know Your Transaction
      (KYT)** checks on cryptocurrency wallets across multiple blockchain
      networks. This service provides risk assessment and transaction monitoring
      to ensure compliance with anti-money laundering (AML) regulations.


      ### Features


      - Perform KYT checks on **cryptocurrency wallets**.

      - Supports major blockchain networks:
        - **Bitcoin (BTC)**
        - **Ethereum (ETH)**
        - **TRON (TRX)**
      - Returns detailed risk scores and compliance insights.

      - Real-time and batch wallet screening capabilities.
  - name: Deepfake API
    x-displayName: Deepfake API
    description: >
      The **Deepfake API** is a powerful fraud-prevention tool that detects
      manipulated media across **images, documents, video, and audio**.  

      It is designed for high-stakes **identity verification** and **compliance
      workflows**, helping organizations stop deepfake-based fraud before it
      causes damage.  


      With advanced AI analysis, the API can:  

      - Verify the authenticity of **selfies and liveness checks**  

      - Detect tampering in **ID documents** such as passports or driver’s
      licenses  

      - Analyze **video calls and recordings** for synthetic face swaps or
      manipulations  

      - Identify **AI-generated or cloned voices** in audio files  


      **Why use the Deepfake API?**  

      - Reduce fraud losses from synthetic identities and impersonation  

      - Strengthen KYC/AML compliance and meet regulatory requirements  

      - Build user trust by securing digital onboarding and remote verification
      flows  

      - Integrate easily via a developer-friendly REST API  


      In short, the Deepfake API helps you protect your platform, your users,
      and your reputation against the rising threat of AI-generated media.  
  - name: search_request
    x-displayName: AML Search Request
    description: |
      <SchemaDefinition schemaRef="#/components/schemas/SearchRequest" />
  - name: search_response
    x-displayName: AML Search Response
    description: |
      <SchemaDefinition schemaRef="#/components/schemas/SearchResponse" />
  - name: search_entity
    x-displayName: AML Entity Record
    description: |
      <SchemaDefinition schemaRef="#/components/schemas/EntityRecord" />
  - name: applicant_person_request
    x-displayName: New Applicant Person Request
    description: >
      <SchemaDefinition
      schemaRef="#/components/schemas/CreatePersonApplicantRequest" />
  - name: applicant_org_request
    x-displayName: New Applicant Organization Request
    description: >
      <SchemaDefinition
      schemaRef="#/components/schemas/CreateOrganizationApplicantRequest" />
  - name: applicant_person_object
    x-displayName: Applicant Person Object
    description: >
      <SchemaDefinition schemaRef="#/components/schemas/ApplicantPersonResponse"
      />
  - name: applicant_org_object
    x-displayName: Applicant Organization Object
    description: >
      <SchemaDefinition
      schemaRef="#/components/schemas/ApplicantOrganizationResponse" />
  - name: verification_request
    x-displayName: New Verification Request
    description: >
      <SchemaDefinition
      schemaRef="#/components/schemas/CreateVerificationRequest" />
  - name: verification_object
    x-displayName: Verification Object
    description: |
      <SchemaDefinition schemaRef="#/components/schemas/VerificationInfo" />
  - name: verification_error
    x-displayName: Verification Error codes
    description: >
      <SchemaDefinition schemaRef="#/components/schemas/VerificationErrorCode"
      />
  - name: webhooks_payloads
    x-displayName: AML & Docver & Transmon Webhook Payloads
    description: |
      <SchemaDefinition schemaRef="#/components/schemas/WebhookObject" />
  - name: Non-Document Verification
    x-displayName: Non-Document Verification
    description: >
      ### Non-Document Verification API


      The Non-Document Verification API allows initiating specific identity
      checks that do not rely on traditional document uploads. This includes
      verifying national identifiers like Brazil's CPF, Nigeria's NIN, or
      Nigeria's BVN against authoritative sources.


      **Key Features:**


      1.  **Targeted Checks**: Perform specific verification types relevant to
      the applicant's country and the required check.

      2.  **Real-time Results**: Obtain verification status (verified or failed)
      along with data returned from the source system.

      3.  **Integration**: Seamlessly integrate these checks into your
      onboarding or compliance workflows for existing applicants.
  - name: KYB Verification
    description: >
      ### KYB (Know Your Business) Verification API


      Verify company identity and legitimacy through document analysis and
      public registry checks. All KYB operations are asynchronous — submit a
      request and poll for results.


      **Verification methods:**


      1. **Document Verification** — upload and verify corporate documents
      (certificates of incorporation, shareholder certificates) to extract and
      validate company information.

      2. **US Company Registry Check** — look up a company in the US Secretary
      of State registry by name or SOS ID.
paths:
  /webhook:
    post:
      tags:
        - Webhooks
      summary: Example of Possible Webhook Events
      description: >
        Fake path to describe webhook format. Click `Callbacks` bellow to see
        possible Webhook Object options. More information about webhooks can be
        found in the [documentation](https://docs.dataspike.io/webhooks).
      operationId: fake-path
      responses:
        '200':
          description: Description of possible webhook schemas
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WebhookObject'
components:
  schemas:
    WebhookObject:
      type: object
      description: Common fields for any webhook event
      properties:
        id:
          type: string
          example: 01827ed4-c928-7a3c-9a30-7ab7cc169d11
          description: Unique webhook **event** id
        webhook_id:
          type: string
          example: 01827ed4-c928-7a3c-9a30-7ab7cc169d11
          description: >-
            Triggered webhook Id configuration. the configuration itself could
            be found in your [Dataspike account](https://dash.dataspike.io/api)
        event_type:
          type: string
          example: AML_SCREENING
          enum:
            - AML_SCREENING
            - DOCVER
            - TRANSACTION_MONITORING
            - KYT_WALLET_CHECK
        timestamp:
          type: string
          format: ISO-8601
          example: '2023-07-18T15:32:13.000Z'
          description: Timestamp of the webhook event
        payload:
          oneOf:
            - $ref: '#/components/schemas/AmlWebhookObject'
            - $ref: '#/components/schemas/DocverWebhookObject'
            - $ref: '#/components/schemas/TransmonWebhookObject'
            - $ref: '#/components/schemas/KYTCryptoCheckReport'
            - $ref: '#/components/schemas/DeepfakeResponse'
    AmlWebhookObject:
      type: object
      description: >-
        AML Notification Events are triggered upon the completion of AML
        screening.
      required:
        - applicant_id
        - screening_id
        - search_request
        - search_response
        - completed_at
      properties:
        risk_score:
          type: object
          properties:
            type:
              $ref: '#/components/schemas/RiskScore'
        applicant_id:
          type: string
          format: uuid
          example: 01827ed4-c928-7a3c-9a30-7ab7cc169d11
          description: Id of applicant
        external_id:
          type: string
          example: external_id_123
          description: External applicant Id
        screening_id:
          type: string
          format: uuid
          example: 01827ed4-c928-7a3c-9a30-7ab7cc169d11
          description: Screening identifier for corresponding AML screening operation
        search_request:
          $ref: '#/components/schemas/SearchRequest'
        search_response:
          $ref: '#/components/schemas/SearchResponse'
        completed_at:
          type: string
          format: ISO-8601
          example: '2023-07-18T15:32:13.000Z'
          description: Timestamp of the screening operation
    DocverWebhookObject:
      type: object
      description: >-
        Docver Notification Events are triggered upon the completion of document
        verification.
      properties:
        id:
          type: string
          format: uuid
          example: 01827ed4-c928-7a3c-9a30-7ab7cc169d11
          description: Verification id
        applicant_id:
          type: string
          format: uuid
          example: 01827ed4-c928-7a3c-9a30-7ab7cc169d11
          description: Id of applicant
        external_id:
          type: string
          example: external_id_123
          nullable: true
          description: External applicant Id
        status:
          $ref: '#/components/schemas/VerificationStatus'
        created_at:
          type: string
          format: ISO-8601
          example: '2023-07-18T15:32:13.000Z'
          description: Creation timestamp of the docver operation
        updated_at:
          type: string
          format: ISO-8601
          example: '2023-07-18T15:32:13.000Z'
          description: Update timestamp of the docver operation
        document_type:
          $ref: '#/components/schemas/DocumentType'
        checks:
          type: array
          items:
            allOf:
              - $ref: '#/components/schemas/MRZ'
              - $ref: '#/components/schemas/CheckEntity'
        tg_profile:
          type: string
          example: '1234567890'
          nullable: true
          description: Linked to Applicant Telegram Profile
    TransmonWebhookObject:
      type: object
      description: >-
        Transaction Monitoring Notification Events are triggered upon the
        completion of transaction check.
      properties:
        event_id:
          type: string
          format: uuid
          example: 01827ed4-c928-7a3c-9a30-7ab7cc169d11
          description: >-
            ID of transaction event (returned by [Send transaction
            event](#tag/Transmon/operation/post-transmon-transaction) and [Send
            payment event](#tag/Transmon/operation/post-transmon-payment))
        applicant_id:
          type: string
          format: uuid
          example: 01827ed4-c928-7a3c-9a30-7ab7cc169d11
          description: ID of applicant
        rejected:
          type: boolean
          example: true
          description: If true -> transaction was rejected
        causes:
          type: array
          items:
            type: string
          example:
            - RISKY_COUNTRY
            - TOO_YOUNG
          description: List of flags (causes) set by rules during check of transaction
        failed_rules:
          type: integer
          example: 0
          description: >-
            Number of rules failed due to error in rule expression. You should
            check your rules if value > 0.
    KYTCryptoCheckReport:
      description: >-
        A detailed risk analysis report for a blockchain address or transaction,
        generated by the KYT Crypto Intelligence engine.
      type: object
      required:
        - id
        - status
        - network
        - address
      properties:
        id:
          type: string
          description: Unique ID of the KYT check
          example: 01827ed4-c928-7a3c-9a30-7ab7cc169d11
          format: uuid
        status:
          type: string
          enum:
            - success
            - pending
            - failed
          description: Current status of the KYT Check
          example: success
        error_message:
          type: string
          description: Optional error message if check failed and the reason is clear
          example: Failed to fetch KYT report
        network:
          type: string
          enum:
            - ETH
            - BTC
            - TRX
          description: Blockchain network (e.g. "BTC", "ETH", "TRX")
          example: ETH
        address:
          type: string
          description: Wallet address being checked
          example: '0x1234567890123456789012345678901234567890'
        summary:
          $ref: '#/components/schemas/KYTReportSummary'
        balances:
          type: array
          items:
            $ref: '#/components/schemas/KYTBalance'
        transfers:
          $ref: '#/components/schemas/KYTTransfers'
        interactions:
          $ref: '#/components/schemas/KYTInteractions'
    DeepfakeResponse:
      description: >-
        Response payload containing the deepfake analysis results for an image,
        video, or streaming session.
      type: object
      required:
        - id
        - status
        - job_type
        - content_type
        - file_size_bytes
      properties:
        id:
          type: string
          format: uuid
          description: Job Id
          example: 01827ed4-c928-7a3c-9a30-7ab7cc169d11
        status:
          type: string
          description: Job Status
          enum:
            - queued
            - completed
            - failed
          example: completed
        job_type:
          type: string
          description: Job Type
          enum:
            - image
            - video
            - audio
          example: image
        content_type:
          type: string
          description: Content Type from original request
          example: image/jpeg
        file_size_bytes:
          type: integer
          description: File size in bytes
          example: 1024
        score:
          type: number
          description: Score of image. Defined only when job has completed successfully
          example: 0.985
        verdict:
          type: string
          description: Verdict of image. Defined only when job has completed
          enum:
            - deepfake_likely
            - deepfake_unlikely
          example: deepfake_unlikely
        error_code:
          type: string
          description: Error code of image. Defined only when job has failed
          enum:
            - NoFaceDetected
            - RuntimeError
            - FaceTooBlurry
            - FaceTooDark
            - FaceTooBright
            - Unknown
          example: NoFaceDetected
        message:
          type: string
          description: Additional message
          example: No face detected
        sandbox:
          type: boolean
          description: Flag indicates that verification is created in sandbox env
          example: false
    RiskScore:
      type: string
      enum:
        - Low
        - Medium
        - High
      description: Assigned Risk Score
    SearchRequest:
      type: object
      description: AML Search request
      required:
        - full_name
      properties:
        full_name:
          type: string
          example: Grace MUGABE
          description: >-
            The `full_name` is a mandatory field and serves as the primary
            search term, unless **both** the first and last names are provided.
            In such a scenario, the combination of the first and last names
            becomes the primary term, and the `full_name` is employed to enhance
            the relevance of results.
        first_name:
          type: string
          example: Grace
          description: >-
            This optional field serves to optimize the overall search experience
            when both `first_name` and `last_name` are provided.
        last_name:
          type: string
          example: MUGABE
          description: >-
            This optional field serves to optimize the overall search experience
            when both `first_name` and `last_name` are provided.
        countries:
          type: array
          default: []
          example:
            - ZW
          description: ISO 3166-1 alpha-2 country codes
          items:
            type: string
        cities:
          type: array
          default: []
          items:
            type: string
        postal_codes:
          type: array
          default: []
          items:
            type: string
        date_of_birth:
          $ref: '#/components/schemas/DateRange'
        risk_scores:
          type: array
          default: []
          example:
            - High
          items:
            $ref: '#/components/schemas/RiskScore'
        tags:
          type: array
          default: []
          example:
            - Sanctions
          items:
            $ref: '#/components/schemas/Tag'
        entity_types:
          type: array
          default: []
          example:
            - Person
          items:
            $ref: '#/components/schemas/EntityType'
        sources:
          type: array
          default: []
          items:
            $ref: '#/components/schemas/SourceId'
        fuzziness:
          type: boolean
          default: true
          description: >-
            A boolean flag (True/False). When set to True (default), broad
            matches are allowed. If set to False, only exact matches are
            permitted.
        fuzziness_level:
          type: number
          format: double
          minimum: 0
          maximum: 1
          default: 1
          nullable: true
          description: >-
            Controls the strictness of name matching. 0 means exact match, 1
            means broad match. Recommended value is 1. Intermediate values
            (e.g., 0.5) can be used to fine-tune the balance between precision
            and scope.
        phonetics:
          type: boolean
          default: true
          description: >-
            This setting enables phonetic similarity during AML searches, which
            is helpful for finding similar names across different languages. We
            generally recommend keeping this set to True.
        registration_ids:
          type: array
          default: []
          items:
            type: string
        mode:
          type: string
          enum:
            - AUTO
            - FULL_NAME_ONLY
            - FIRST_AND_LAST_NAME_ONLY
          default: AUTO
          description: >
            Controls how name fields are used for matching.

            - `AUTO` — automatically determine the best matching strategy.

            - `FULL_NAME_ONLY` — use only the `full_name` field.

            - `FIRST_AND_LAST_NAME_ONLY` — use only the `first_name` and
            `last_name` fields.
        gender:
          type: string
          description: Filter results by gender (e.g. Male, Female, Other)
        search_kyb:
          type: boolean
          description: >-
            When set to true, also search KYB (company) databases in addition to
            individual records.
    SearchResponse:
      type: object
      properties:
        requested_name:
          type: string
        search_uuid:
          type: string
          description: Search id, could be use later to fetch the existing search result
        max_risk_score:
          $ref: '#/components/schemas/RiskScore'
        data:
          type: array
          items:
            $ref: '#/components/schemas/EntityRecord'
        fatf_records:
          type: array
          description: >-
            FATF (Financial Action Task Force) records for countries referenced
            in search results
          items:
            $ref: '#/components/schemas/FatfRecord'
    VerificationStatus:
      type: string
      enum:
        - initial
        - pending
        - in_progress
        - verified
        - failed
        - canceled
        - expired
      description: >
        The First verification status is `initial`.


        Second one is `pending`, when some documents are uploaded to
        verification or applicant of verification, but not all required
        documents are uploaded.


        When all documents are uploaded and verification has been proceeded by
        api
        (https://docs.dataspike.io/api#tag/Verifications/operation/proceed-verification)
        or web sdk status becomes to `in_progress`.


        After `in_progress` status can be both `verified` or `failed` depending
        on the verification result.


        Transition to `canceled` status can be from any status if verification
        was canceled, except `verified` and `failed`.


        Transition to `expired` status can be from any status if verification
        has expired, except `verified`, `in_progress` and `failed`.


        ![Flow of status](/img/verification_status_flow.png "Verification status
        flow")
    DocumentType:
      type: string
      enum:
        - passport
        - id_card
        - residence_permit
        - driver_license
        - poa
        - selfie
        - liveness_photo
        - kyb_certificate_of_incorporation
        - kyb_ownership_document
      description: Possible document type
    MRZ:
      type: object
      nullable: true
      description: |
        Recognized MRZ data of document. The `data` object contains the
        fields documented below plus any additional OCR/MRZ fields the
        recognizer produced for the document — readers should treat
        unknown keys as forward-compatible additions.
      properties:
        data:
          type: object
          nullable: true
          additionalProperties: true
          properties:
            document_type:
              type: string
              description: |
                Raw MRZ document class (first MRZ character). Common values: `P`
                (passport), `I` / `A` / `C` (ID/travel card), `V` (visa).
                For the high-level document family use `poi_data.parsed_type`.
              example: P
            country:
              type: string
              description: >-
                Country of the document, reference
                [https://www.iban.com/country-codes](https://www.iban.com/country-codes)
              example: DEU
              format: ISO 3166-1 ALPHA-3 code
            name:
              type: string
              description: Extracted name
              nullable: true
              example: John
            surname:
              type: string
              description: Extracted surname
              nullable: true
              example: Doe
            doc_number:
              type: string
              description: Document number
              example: P-1234567890
            nationality:
              type: string
              nullable: true
              description: Extracted nationality
              example: DEU
              format: ISO 3166-1 ALPHA-3 code
            birth_date:
              type: string
              nullable: true
              description: Extracted birth date
              format: ISO-8601 date
              example: '1983-03-21'
            sex:
              type: string
              nullable: true
              description: Extracted sex, typically M or F
              example: M
            expiry_date:
              type: string
              nullable: true
              description: Extracted expiry date
              format: ISO-8601 date
              example: '2021-02-24'
    CheckEntity:
      type: object
      description: Object describes verification check, required documents and status
      properties:
        status:
          $ref: '#/components/schemas/CheckStatus'
        pending_documents:
          type: array
          description: List of required documents, that were not uploaded yet
          items:
            $ref: '#/components/schemas/DocumentType'
        errors:
          type: array
          items:
            type: object
            properties:
              code:
                $ref: '#/components/schemas/VerificationErrorCode'
              message:
                type: string
                description: Descriptive error for a corresponding error code
                example: document parsing failed
    KYTReportSummary:
      type: object
      properties:
        balance_usdt:
          type: number
          format: float
          description: Total balance in USDT
          example: 1000
        first_transaction_at:
          type: string
          format: date
          description: First transaction date
          example: '2023-07-18'
        last_transaction_at:
          type: string
          format: date
          example: '2023-07-18'
          description: Last transaction date
        total_received_usdt:
          type: number
          format: float
          description: Total received in USDT
          example: 1000
        total_sent_usdt:
          type: number
          format: float
          description: Total sent in USDT
          example: 1000
        total_transactions:
          type: integer
          description: Total number of transactions
          example: 10
    KYTBalance:
      type: object
      properties:
        amount:
          type: number
          format: float
          description: Balance in Token
          example: 1000
        amount_usdt:
          type: number
          format: float
          description: Balance in USDT
          example: 1000
        network:
          type: string
          description: Blockchain network (e.g. "BTC", "ETH", "TRX")
          example: ETH
        token_name:
          type: string
          description: Token name
          example: USDT
    KYTTransfers:
      type: object
      properties:
        incoming:
          type: array
          items:
            $ref: '#/components/schemas/KYTTransfer'
        outgoing:
          type: array
          items:
            $ref: '#/components/schemas/KYTTransfer'
    KYTInteractions:
      type: object
      properties:
        exchanges:
          type: array
          description: List of identified exchanges (e.g. Binance, Coinbase, etc.)
          items:
            type: string
            example: binance
        defi:
          type: array
          description: List of identified defi platforms (e.g. Uniswap, PancakeSwap, etc.)
          items:
            type: string
            example: uniswap
        fraud:
          type: array
          description: List of identified fraudulent activities (e.g. scam, etc.)
          items:
            type: string
            example: scam
    DateRange:
      type: object
      description: Date range, represented as a pair of dates in ISO 8601 format
      properties:
        gte:
          type: string
          format: date
          example: '1987-12-24T00:00:00.000Z'
        lte:
          type: string
          format: date
          example: '1987-12-24T00:00:00.000Z'
    Tag:
      type: string
      enum:
        - Finance
        - Legal
        - Terrorism
        - Criminal
        - PEP
        - Media
        - Social
        - Sanctions
        - UnofficialSource
        - Leaks
        - CompanyRegistry
        - Associate
        - Debarred
        - PublicInterest
        - RegulatoryWarning
      description: Possible Entity Tags
    EntityType:
      type: string
      enum:
        - Person
        - Organization
        - Country
        - Vessel
        - Aircraft
        - CryptoWallet
      description: Possible types
      default: Person
    SourceId:
      type: string
      description: >-
        Possible Source IDs, contains all publicly available sources, constantly
        updated, for the most up to date list please check
        https://dash.dataspike.io/pep-sanctions/data-sources
    EntityRecord:
      type: object
      description: All known information about entity
      properties:
        uuid:
          type: string
        type:
          $ref: '#/components/schemas/EntityType'
        annotation:
          type: string
          description: Any general information
          nullable: true
        tags:
          type: array
          items:
            $ref: '#/components/schemas/Tag'
        risk_score:
          $ref: '#/components/schemas/RiskScore'
        fields:
          $ref: '#/components/schemas/EntityRecord.EntityFields'
        updated_at:
          type: integer
          format: int64
          description: epoch seconds
        importance_score:
          type: number
          format: double
          description: >-
            Relative importance score of entity, use risk_score for a final
            decision
          nullable: true
        search_metadata:
          $ref: '#/components/schemas/EntityRecord.SearchMetadata'
        risk_score_value:
          type: number
          format: double
          description: Numeric risk score value
    FatfRecord:
      type: object
      description: FATF status record for a country
      properties:
        fatf_status:
          type: string
          enum:
            - FatfMember
            - GreyList
            - BlackList
            - PartiallyCompliant
          description: The country's FATF status
        url:
          type: string
          description: URL to the FATF source page
        description:
          type: string
          description: Description of the FATF status
        country:
          type: string
          description: Country name or ISO code
    CheckStatus:
      type: string
      enum:
        - pending
        - in_progress
        - verified
        - failed
        - canceled
        - expired
      description: Describes possible document check statuses for a specific verification
    VerificationErrorCode:
      type: integer
      example: 1001
      description: >
        Numeric error code returned when a verification check fails. Codes are
        grouped by category:


        | Range         | Category                                     |

        | ------------- | -------------------------------------------- |

        | 500 – 501     | Tampering and device-level edits             |

        | 1000 – 1099   | OCR and document detection                   |

        | 1100 – 1999   | Data field checks                            |

        | 2000 – 2999   | MRZ parsing and validation                   |

        | 3000 – 3099   | Document expiration                          |

        | 3100 – 3199   | Document mismatch                            |

        | 3200 – 3299   | Age and date of birth                        |

        | 4000 – 4499   | Face detection and comparison                |

        | 4500 – 4999   | Proof of Address                             |

        | 5000 – 5499   | Liveness                                     |

        | 6000 – 6499   | AML                                          |

        | 7000 – 7099   | Cross-check (duplicates)                     |

        | 8000 – 8099   | Verification flow                            |

        | 9000 – 9099   | Dependency failures                          |

        | 9500 – 9799   | KYB                                          |

        | 10000         | Device fingerprinting                        |

        | 11000 – 11099 | SSN                                          |


        See [Verification Error Codes](/api-reference/error-codes) for the full
        list of codes and messages.
    KYTTransfer:
      type: object
      properties:
        type:
          type: string
          description: Type of transfer
          example: cex
        amount:
          type: number
          format: float
          description: Total amount of transfer for current type
          example: 1000
        names:
          type: array
          items:
            type: string
            description: List of names of transferees
            example:
              - binance
    EntityRecord.EntityFields:
      type: object
      properties:
        names:
          type: array
          items:
            $ref: '#/components/schemas/EntityRecord.EntityFields.Name'
          description: Generic
        sources:
          type: array
          items:
            $ref: '#/components/schemas/Source'
        media:
          type: array
          items:
            $ref: '#/components/schemas/AdverseMedia'
        images:
          type: array
          items:
            $ref: '#/components/schemas/EntityRecord.EntityFields.GenericData'
        contact_info:
          type: array
          items:
            $ref: '#/components/schemas/EntityRecord.EntityFields.ContactInfo'
        registration_ids:
          type: array
          items:
            $ref: '#/components/schemas/EntityRecord.EntityFields.RegistrationId'
        addresses:
          type: array
          items:
            $ref: '#/components/schemas/EntityRecord.EntityFields.LocationData'
        genders:
          type: array
          items:
            $ref: '#/components/schemas/EntityRecord.EntityFields.Gender'
          description: Person
        dates_of_birth:
          type: array
          items:
            $ref: '#/components/schemas/DateRange'
        places_of_birth:
          type: array
          items:
            $ref: '#/components/schemas/EntityRecord.EntityFields.LocationData'
        dates_of_death:
          type: array
          items:
            $ref: '#/components/schemas/DateRange'
        places_of_death:
          type: array
          items:
            $ref: '#/components/schemas/EntityRecord.EntityFields.LocationData'
        citizenships:
          type: array
          items:
            type: string
        nationalities:
          type: array
          items:
            type: string
        political_roles:
          type: array
          items:
            $ref: '#/components/schemas/EntityRecord.EntityFields.PoliticalRole'
        occupations:
          type: array
          items:
            $ref: '#/components/schemas/EntityRecord.EntityFields.Occupation'
        companies_and_enterprises:
          type: array
          items:
            $ref: '#/components/schemas/EntityRecord.EntityFields.EntityInfo'
        owners_and_beneficiaries:
          type: array
          items:
            $ref: '#/components/schemas/EntityRecord.EntityFields.EntityInfo'
          description: Organization
        associates:
          type: array
          items:
            $ref: '#/components/schemas/EntityRecord.EntityFields.Associate'
        fatf_records:
          type: array
          description: FATF records for countries associated with this entity
          items:
            $ref: '#/components/schemas/FatfRecord'
    EntityRecord.SearchMetadata:
      type: object
      description: Search matching metadata for the entity
      properties:
        best_match_name:
          type: string
          description: The best matching name found for this entity
        name_match_percentage:
          type: number
          format: float
          description: Name match percentage (0-100)
        name_match_level:
          type: string
          enum:
            - ZERO_MATCH
            - NOT_ENOUGH_DATA
            - LOW
            - MEDIUM
            - HIGH
            - FULL_MATCH
          description: Level of name match confidence
        date_of_birth_matched:
          type: string
          enum:
            - FILTER_NOT_SET
            - NO_MATCH
            - MATCH
            - PARTIAL_MATCH
          description: Whether date of birth filter matched
        country_matched:
          type: string
          enum:
            - FILTER_NOT_SET
            - NO_MATCH
            - MATCH
            - PARTIAL_MATCH
          description: Whether country filter matched
        general_match_level:
          type: string
          enum:
            - ZERO_MATCH
            - NOT_ENOUGH_DATA
            - LOW
            - MEDIUM
            - HIGH
            - FULL_MATCH
          description: Overall match confidence level
        gender_matched:
          type: string
          enum:
            - FILTER_NOT_SET
            - NO_MATCH
            - MATCH
            - PARTIAL_MATCH
          description: Whether gender filter matched
        risk_profile_info:
          $ref: '#/components/schemas/RiskScoreProfileInfo'
    EntityRecord.EntityFields.Name:
      type: object
      properties:
        full_name:
          type: string
        first_name:
          type: string
          nullable: true
        last_name:
          type: string
          nullable: true
        middle_name:
          type: string
          nullable: true
        lang:
          type: string
          description: ISO 639-1 language code
          nullable: true
    Source:
      type: object
      description: Describes the sources, where current entity appeared
      properties:
        source_id:
          $ref: '#/components/schemas/SourceId'
        name:
          type: string
        reason:
          type: string
          nullable: true
        summary:
          type: string
          nullable: true
        source_url:
          type: string
        risk_score:
          $ref: '#/components/schemas/RiskScore'
        tags:
          type: array
          items:
            $ref: '#/components/schemas/Tag'
    AdverseMedia:
      type: object
      description: Adverse media record linked to an Entity
      properties:
        source_name:
          type: string
        source_url:
          type: string
        headline:
          type: string
          nullable: true
        summary:
          type: string
          nullable: true
        published_at:
          type: integer
          format: int64
        risk_score:
          $ref: '#/components/schemas/RiskScore'
        importance_score:
          type: number
          format: double
        sentiment:
          type: number
          format: double
        tags:
          type: array
          items:
            $ref: '#/components/schemas/Tag'
        country_codes:
          type: array
          description: ISO 3166-1 alpha-2 country codes
          items:
            type: string
    EntityRecord.EntityFields.GenericData:
      type: object
      properties:
        description:
          type: string
          nullable: true
        url:
          type: string
          nullable: true
    EntityRecord.EntityFields.ContactInfo:
      type: object
      properties:
        emails:
          type: array
          items:
            type: string
        phones:
          type: array
          items:
            type: string
        websites:
          type: array
          items:
            type: string
    EntityRecord.EntityFields.RegistrationId:
      type: object
      properties:
        id:
          type: string
        id_type:
          type: string
          description: >-
            Any local document type, e.g. 'Company registration number' or 'Tax
            ID'
          nullable: true
        date:
          type: string
          format: date
          description: ISO 8601 date
          nullable: true
        industry:
          type: string
          nullable: true
        country:
          type: string
          description: ISO 3166-1 alpha-2 country code
          nullable: true
        imo_number:
          type: string
          nullable: true
          description: IMO number (vessels only)
        mmsi_number:
          type: string
          nullable: true
          description: MMSI number (vessels only)
        currency:
          type: string
          nullable: true
          description: Currency (crypto wallets only)
    EntityRecord.EntityFields.LocationData:
      type: object
      description: Location data, when specified at least one of the fields must be present
      properties:
        country:
          type: string
          description: ISO 3166-1 alpha-2 country code
        region:
          type: string
        city:
          type: string
        postal_code:
          type: string
        address:
          type: string
    EntityRecord.EntityFields.Gender:
      type: string
      enum:
        - Male
        - Female
        - Other
      description: Possible Entity Gender values
    EntityRecord.EntityFields.PoliticalRole:
      type: object
      properties:
        role:
          type: string
        country:
          type: string
          description: ISO 3166-1 alpha-2 country code
          nullable: true
    EntityRecord.EntityFields.Occupation:
      type: object
      properties:
        occupation:
          type: string
        country:
          type: string
          description: ISO 3166-1 alpha-2 country code
          nullable: true
    EntityRecord.EntityFields.EntityInfo:
      type: object
      properties:
        name:
          type: string
        reference:
          type: string
          nullable: true
        role:
          type: string
          nullable: true
        country:
          type: string
          description: ISO 3166-1 alpha-2 country code
          nullable: true
        start_date:
          $ref: '#/components/schemas/DateRange'
        end_date:
          $ref: '#/components/schemas/DateRange'
        ownership_value:
          type: string
          nullable: true
          description: Ownership value (e.g. monetary amount)
        currency:
          type: string
          nullable: true
          description: Currency of the ownership value
        ownership_percentage:
          type: string
          nullable: true
          description: Ownership percentage
        additional_source:
          $ref: '#/components/schemas/Source'
    EntityRecord.EntityFields.Associate:
      type: object
      required:
        - uuid
        - name
      properties:
        uuid:
          type: string
        name:
          type: string
        start_date:
          $ref: '#/components/schemas/DateRange'
        end_date:
          $ref: '#/components/schemas/DateRange'
        relationship:
          type: string
        is_relative:
          type: boolean
    RiskScoreProfileInfo:
      type: object
      description: Risk score profile information used for scoring
      properties:
        id:
          type: string
          description: Risk score profile identifier
        name:
          type: string
          description: Risk score profile name
        version:
          type: integer
          description: Risk score profile version
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: ds-api-token

````