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

# Document verification

> Verify a supported identity document and return authenticity checks, extracted fields, and document images.

Use this endpoint to verify a document without creating a Trust Validation. Send the front image as a JPEG or PNG data URL. Include the back image when the document has two sides.

The response includes the overall recommendation, individual authenticity checks, process indicators, extracted document fields, and the configuration applied to the request. When `returnFullResolutionImage` is `true`, the `images` array also includes the full document image.

## Verification configuration

### `returnFullResolutionImage`

Controls whether the response includes the original full-resolution document image.

| Value   | Behaviour                                                                                       |
| ------- | ----------------------------------------------------------------------------------------------- |
| `true`  | Returns the full-resolution image for storage, auditing, manual review, or fraud investigation. |
| `false` | Returns the verification results and extracted document data without the full-resolution image. |

### `screenMatchLevel`

Determines how strictly the service checks for screen replay attacks. Higher levels detect digital displays more aggressively but may reject valid physical documents.

Select `LEVEL_1` through `LEVEL_10`. `LEVEL_1` is the least strict and `LEVEL_10` is the most strict.

### `photoForgeryMatchLevel`

Controls how strictly the service checks for photo forgery, including photo replacement, face swapping, and digital editing. Higher levels apply stricter checks but may reject more genuine documents.

Select `LEVEL_1` through `LEVEL_10`. `LEVEL_1` is the least strict and `LEVEL_10` is the most strict.

### `staticSecurityFeaturesMatchLevel`

Controls how strictly the service verifies visible security features such as background patterns, microprinting, fine-line artwork, and document-design consistency. Higher levels provide stricter fraud detection but may increase false rejections.

Select `LEVEL_1` through `LEVEL_10`. `LEVEL_1` is the least strict and `LEVEL_10` is the most strict. Set this field to `Disabled` to skip the check.

### `documentTypeFilter`

Restricts verification to the specified issuing country and document types. Set `country` to an ISO 3166-1 alpha-3 country code and list one or more supported values in `cardType`.

The following filter accepts only Malaysian driver's licences:

```json theme={null}
{
  "documentTypeFilter": {
    "country": "MYS",
    "cardType": [
      "malaysia_driver_license"
    ]
  }
}
```

## Supported document types

<Tabs>
  <Tab title="Philippines">
    Use `PHL` as the `country` value.

    | `cardType` value                    | Document              |
    | ----------------------------------- | --------------------- |
    | `philippines_driving_license`       | LTO Driver License    |
    | `philippines_prc`                   | PRC ID                |
    | `philippines_social_security`       | SSS ID                |
    | `philippines_umid_ssn`              | UMID ID               |
    | `philippines_health_insurance_card` | Health Insurance Card |
    | `philippines_tax_id`                | Tax ID                |
    | `philippines_passport`              | Passport              |
    | `philippines_philsys_id`            | PhilSys ID            |
    | `philippines_voter_id`              | Voter ID              |
    | `philippines_postal_id`             | Postal ID             |
    | `philippines_alien_id`              | Alien ID (ACR I-Card) |
  </Tab>

  <Tab title="Malaysia">
    Use `MYS` as the `country` value.

    | `cardType` value          | Document               |
    | ------------------------- | ---------------------- |
    | `malaysia_ic_check`       | MyKad                  |
    | `malaysia_driver_license` | Driver's License       |
    | `malaysia_i_kad`          | i-Kad                  |
    | `malaysia_mykas`          | MyKAS                  |
    | `malaysia_mykid`          | MyKid                  |
    | `malaysia_mypolis`        | MyPolis                |
    | `malaysia_mypr`           | MyPR                   |
    | `malaysia_mytentera`      | MyTentera              |
    | `malaysia_refugee_id`     | Refugee ID             |
    | `malaysia_passport`       | Polycarbonate Passport |
  </Tab>

  <Tab title="Indonesia">
    Use `IDN` as the `country` value.

    | `cardType` value           | Document            |
    | -------------------------- | ------------------- |
    | `ktp_details_extraction`   | Indonesian ID (KTP) |
    | `indonesia_driver_license` | Driver's License    |
    | `indonesia_passport`       | Passport            |
  </Tab>

  <Tab title="Australia">
    Use `AUS` as the `country` value.

    | `cardType` value                  | Document              |
    | --------------------------------- | --------------------- |
    | `australia_driver_license`        | Driver License        |
    | `australia_passport`              | Passport              |
    | `australia_identity_card`         | Identity Card         |
    | `australia_health_insurance_card` | Health Insurance Card |
  </Tab>
</Tabs>

<Note>
  The detected document must match both `country` and one of the values in `cardType`. Check `data.response.documentTypeFilter.documentTypeMatchesFilter` in the response to confirm the match.
</Note>

## Example configuration

This configuration verifies Malaysian driver's licences, applies level 5 screen detection and level 3 photo-forgery detection, skips static-security-feature validation, and returns the full-resolution image.

```json theme={null}
{
  "returnFullResolutionImage": true,
  "screenMatchLevel": "LEVEL_5",
  "photoForgeryMatchLevel": "LEVEL_3",
  "staticSecurityFeaturesMatchLevel": "Disabled",
  "documentTypeFilter": {
    "country": "MYS",
    "cardType": [
      "malaysia_driver_license"
    ]
  }
}
```

## Interpret the response

`success: true` means the API processed the request. Use `verificationStatus`, `data.response.verification.recommendedOutcome`, and `data.response.verification.result` to determine the verification outcome.

| Field                              | Meaning                                                                                                    |
| ---------------------------------- | ---------------------------------------------------------------------------------------------------------- |
| `data.response.checks`             | Nested authenticity, liveness, validity, and extracted-data checks.                                        |
| `data.response.processIndicators`  | Capture-quality and scan-process signals such as clarity, cropping, and hand presence.                     |
| `data.response.extraction`         | Extracted fields, side-specific results, and detected document classification.                             |
| `data.response.images`             | Returned document and portrait images. Availability depends on the request settings and detected document. |
| `data.response.optionsUsed`        | Effective verification settings applied by the service.                                                    |
| `data.response.documentTypeFilter` | Configured filters, detected type, and whether the detected document matched the filter.                   |
| `data.response.runtime`            | Processing duration, component versions, recognition path, and trace ID.                                   |

`NotPerformed` means that a check was disabled, unsupported, or not applicable to the submitted document. It does not by itself mean the document failed verification.


## OpenAPI

````yaml stateless-verification-api/compliance/document-verification.openapi.json POST /api/v3/verifications/document-verification-passthrough
openapi: 3.0.3
info:
  title: Document Verification Passthrough API
  version: 1.0.0
servers:
  - url: https://{environment-subdomain}.idmetagroup.com
    description: Your environment (replace `{environment-subdomain}`)
    variables:
      environment-subdomain:
        default: integrate
        description: IDmeta environment subdomain
security:
  - bearerAuth: []
paths:
  /api/v3/verifications/document-verification-passthrough:
    post:
      tags:
        - Compliance Verification
      summary: Document verification
      description: >-
        Verify a supported identity document without creating a Trust
        Validation. The response contains authenticity checks, extracted
        document fields, process indicators, images, and the effective
        verification configuration.
      operationId: documentVerificationPassthrough
      parameters:
        - name: Authorization
          in: header
          required: true
          schema:
            type: string
            example: Bearer {your_api_token}
        - name: Accept
          in: header
          required: false
          schema:
            type: string
            default: application/json
        - name: Content-Type
          in: header
          required: false
          schema:
            type: string
            default: application/json
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DocumentVerificationRequest'
            example:
              imageFrontSide: data:image/jpeg;base64,/9j/4AAQSkZJRg...
              imageBackSide: data:image/jpeg;base64,/9j/4AAQSkZJRg...
              metadata:
                customerRef: ACME-8891
              returnFullResolutionImage: true
              screenMatchLevel: LEVEL_5
              photoForgeryMatchLevel: LEVEL_3
              staticSecurityFeaturesMatchLevel: Disabled
              documentTypeFilter:
                country: MYS
                cardType:
                  - malaysia_driver_license
      responses:
        '200':
          description: >-
            Document verification completed. Use `verificationStatus` and the
            nested verification result to determine the business outcome.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DocumentVerificationSuccessResponse'
              examples:
                success:
                  summary: Success
                  value:
                    success: true
                    message: Document verification processed successfully
                    data:
                      response:
                        processingStatus: Completed
                        verification:
                          recommendedOutcome: Accept
                          result: Pass
                          certaintyLevel: High
                          performedChecks: 14
                          type: DetailedCheck
                        messages: []
                        checks:
                          - name: ExtractedDataCheck
                            result: Pass
                            certaintyLevel: High
                            type: DetailedCheck
                            checks:
                              - name: MatchCheck
                                result: NotPerformed
                                matchLevel: Unknown
                                type: TieredCheck
                                checks:
                                  - field: FirstName
                                    result: NotPerformed
                                    type: FieldCheck
                                  - field: LastName
                                    result: NotPerformed
                                    type: FieldCheck
                                  - field: FullName
                                    result: NotPerformed
                                    type: FieldCheck
                                  - field: Address
                                    result: NotPerformed
                                    type: FieldCheck
                                  - field: PlaceOfBirth
                                    result: NotPerformed
                                    type: FieldCheck
                                  - field: Race
                                    result: NotPerformed
                                    type: FieldCheck
                                  - field: Religion
                                    result: NotPerformed
                                    type: FieldCheck
                                  - field: Profession
                                    result: NotPerformed
                                    type: FieldCheck
                                  - field: MaritalStatus
                                    result: NotPerformed
                                    type: FieldCheck
                                  - field: ResidentialStatus
                                    result: NotPerformed
                                    type: FieldCheck
                                  - field: Employer
                                    result: NotPerformed
                                    type: FieldCheck
                                  - field: Sex
                                    result: NotPerformed
                                    type: FieldCheck
                                  - field: DateOfBirth
                                    result: NotPerformed
                                    type: FieldCheck
                                  - field: DateOfIssue
                                    result: NotPerformed
                                    type: FieldCheck
                                  - field: DateOfExpiry
                                    result: NotPerformed
                                    type: FieldCheck
                                  - field: DocumentNumber
                                    result: NotPerformed
                                    type: FieldCheck
                                  - field: PersonalIdNumber
                                    result: NotPerformed
                                    type: FieldCheck
                                  - field: DocumentAdditionalNumber
                                    result: NotPerformed
                                    type: FieldCheck
                                  - field: DocumentOptionalAdditionalNumber
                                    result: NotPerformed
                                    type: FieldCheck
                              - name: LogicCheck
                                result: Pass
                                type: Check
                                checks:
                                  - name: DateLogicCheck
                                    result: Pass
                                    type: Check
                                    checks:
                                      - name: DateOfBirthBeforeDateOfIssueCheck
                                        result: NotPerformed
                                        type: Check
                                      - name: DateOfBirthBeforeDateOfExpiryCheck
                                        result: Pass
                                        type: Check
                                      - name: DateOfIssueBeforeDateOfExpiryCheck
                                        result: NotPerformed
                                        type: Check
                                      - name: DateOfBirthInPastCheck
                                        result: Pass
                                        type: Check
                                      - name: DateOfIssueInPastCheck
                                        result: NotPerformed
                                        type: Check
                                  - name: DocumentNumberLogic
                                    result: NotPerformed
                                    type: Check
                                  - name: PersonalIdNumberLogic
                                    result: NotPerformed
                                    type: Check
                                  - name: InventoryControlNumberLogic
                                    result: NotPerformed
                                    type: Check
                                  - name: DocumentDiscriminatorLogic
                                    result: NotPerformed
                                    type: Check
                                  - name: CustomerIdNumberLogic
                                    result: NotPerformed
                                    type: Check
                              - name: FieldFormatCheck
                                result: Pass
                                type: Check
                                checks:
                                  - field: DateOfBirth
                                    result: Pass
                                    type: FieldCheck
                                  - field: DateOfExpiry
                                    result: Pass
                                    type: FieldCheck
                                  - field: DateOfIssue
                                    result: NotPerformed
                                    type: FieldCheck
                                  - field: DocumentNumber
                                    result: Pass
                                    type: FieldCheck
                                  - field: DocumentAdditionalNumber
                                    result: NotPerformed
                                    type: FieldCheck
                                  - field: DocumentOptionalAdditionalNumber
                                    result: NotPerformed
                                    type: FieldCheck
                                  - field: PersonalIdNumber
                                    result: NotPerformed
                                    type: FieldCheck
                                  - field: AdditionalPersonalIdNumber
                                    result: NotPerformed
                                    type: FieldCheck
                                  - field: Sex
                                    result: Pass
                                    type: FieldCheck
                                  - field: Nationality
                                    result: Pass
                                    type: FieldCheck
                                  - field: IssuingAuthority
                                    result: NotPerformed
                                    type: FieldCheck
                                  - field: MaritalStatus
                                    result: NotPerformed
                                    type: FieldCheck
                                  - field: Religion
                                    result: NotPerformed
                                    type: FieldCheck
                                  - field: ClassEffectiveDate
                                    result: NotPerformed
                                    type: FieldCheck
                                  - field: ClassExpiryDate
                                    result: NotPerformed
                                    type: FieldCheck
                              - name: BarcodeAuthenticity
                                result: NotPerformed
                                matchLevel: Unknown
                                type: TieredCheck
                                checks:
                                  - name: ContentCheck
                                    result: NotPerformed
                                    type: Check
                                  - name: ReadCheck
                                    result: NotPerformed
                                    type: Check
                              - name: SuspiciousDataCheck
                                result: Pass
                                certaintyLevel: High
                                type: DetailedCheck
                                checks:
                                  - name: SuspiciousNumberCheck
                                    result: Pass
                                    certaintyLevel: High
                                    type: DetailedCheck
                                  - name: SampleStringCheck
                                    result: Pass
                                    certaintyLevel: High
                                    type: DetailedCheck
                              - name: DataIntegrityCheck
                                result: Pass
                                type: Check
                              - name: MRZCheck
                                result: NotPerformed
                                type: Check
                                checks:
                                  - name: Parsed
                                    result: NotPerformed
                                    type: Check
                                  - name: CheckDigits
                                    result: NotPerformed
                                    type: Check
                          - name: DocumentLivenessCheck
                            result: Pass
                            type: Check
                            checks:
                              - name: ScreenCheck
                                result: Pass
                                matchLevel: Level10
                                type: TieredCheck
                              - name: PhotocopyCheck
                                result: Pass
                                matchLevel: Level10
                                type: TieredCheck
                          - name: VisualCheck
                            result: Pass
                            type: Check
                            checks:
                              - name: PhotoForgeryCheck
                                result: Pass
                                matchLevel: Level10
                                type: TieredCheck
                              - name: SecurityFeatures
                                result: NotPerformed
                                matchLevel: Unknown
                                type: TieredCheck
                                details: []
                              - name: GenerativeAiCheck
                                result: NotPerformed
                                matchLevel: Unknown
                                type: TieredCheck
                          - name: DocumentValidityCheck
                            result: Pass
                            type: Check
                            checks:
                              - name: VersionCheck
                                result: Pass
                                type: Check
                              - name: ExpiredCheck
                                result: Pass
                                type: Check
                        processIndicators:
                          - name: Clarity
                            type: ImageQuality
                            result: Pass
                          - name: HandPresence
                            type: ScanProcess
                            result: Fail
                          - name: Cropped
                            type: ImageQuality
                            result: Pass
                        extraction:
                          processingStatus: Success
                          recognitionStatus: Valid
                          overall:
                            - side: Unknown
                              script: Latin
                              value: EXAMPLE PERSON
                              type: DetailedStringResult
                              field: FullName
                            - side: Unknown
                              script: Latin
                              value: 123 EXAMPLE STREET, KUALA LUMPUR
                              type: DetailedStringResult
                              field: Address
                            - originalResult:
                                - side: Unknown
                                  script: Latin
                                  value: 1990/01/15
                                  type: DetailedStringResult
                              day: 15
                              month: 1
                              year: 1990
                              successfullyParsed: true
                              filledByDomainKnowledge: false
                              type: DetailedDateResult
                              field: DateOfBirth
                            - originalResult:
                                - side: Unknown
                                  script: Latin
                                  value: 2030/01/15
                                  type: DetailedStringResult
                              day: 15
                              month: 1
                              year: 2030
                              successfullyParsed: true
                              filledByDomainKnowledge: false
                              type: DetailedDateResult
                              field: DateOfExpiry
                            - side: Unknown
                              script: Latin
                              value: DL-EXAMPLE-001
                              type: DetailedStringResult
                              field: DocumentNumber
                            - side: Unknown
                              script: Latin
                              value: M
                              type: DetailedStringResult
                              field: Sex
                            - side: Unknown
                              script: Latin
                              value: MYS
                              type: DetailedStringResult
                              field: Nationality
                            - type: Result
                              field: DriverLicenseDetailedInfo
                              results:
                                - side: Unknown
                                  script: Latin
                                  value: NONE
                                  type: DetailedStringResult
                                  field: Conditions
                                - side: Unknown
                                  script: Latin
                                  value: D
                                  type: DetailedStringResult
                                  field: Class
                          viz:
                            front:
                              - side: Front
                                script: Latin
                                value: EXAMPLE PERSON
                                type: DetailedStringResult
                                field: FullName
                              - side: Front
                                script: Latin
                                value: 123 EXAMPLE STREET, KUALA LUMPUR
                                type: DetailedStringResult
                                field: Address
                              - side: Front
                                script: Latin
                                value: DL-EXAMPLE-001
                                type: DetailedStringResult
                                field: DocumentNumber
                            back: []
                          classInfo:
                            country: Malaysia
                            type: Dl
                            region: None
                            isoAlpha3CountryCode: MYS
                            isoAlpha2CountryCode: MY
                            isoNumericCountryCode: '458'
                          additionalInfo:
                            frontProcessingStatus: Success
                            backProcessingStatus: NotScanned
                            recognitionMode: FullRecognition
                            firstSideAdditionalProcessingInfo:
                              missingMandatoryFields: []
                              invalidCharacterFields: []
                              extraPresentFields: []
                            secondSideAdditionalProcessingInfo:
                              missingMandatoryFields: []
                              invalidCharacterFields: []
                              extraPresentFields: []
                        runtime:
                          startedOn: '2026-09-09T00:18:54.0326167Z'
                          finishedOn: '2026-09-09T00:18:55.8487633Z'
                          elapsedMs: 1816
                          serviceVersion: 4000.1.1
                          runnerVersion: unknown
                          runnerInstanceKey: unknown
                          runnerInstanceIndex: 0
                          wrapperVersion: 4000.1.1
                          extractionRecognizerVersion: v8001.0.0
                          verificationRecognizerVersion: v4000.1.1
                          blinkIdRecognizerVersion: 25.0.2
                          blinkIdVerifyRecognizerVersion: 19.2.0
                          dockerImageTag: 4000.1.1
                          clientSdkName: ''
                          clientSdkVersion: ''
                          recognitionPath: 'front: Path1'
                          traceId: >-
                            00-a66f051b403d552cdf1ebeeacf098286-6b22178c67c928cf-01
                        images:
                          - name: FullDocumentFrontImage
                            base64: '{{base64_image}}'
                          - name: FaceImage
                            base64: '{{base64_image}}'
                        optionsUsed:
                          screenMatchLevel: Level5
                          photocopyMatchLevel: Level3
                          barcodeAnomalyMatchLevel: Level3
                          photoForgeryMatchLevel: Level3
                          staticSecurityFeaturesMatchLevel: Disabled
                          dataMatchMatchLevel: Level5
                          generativeAiMatchLevel: Disabled
                          blurMatchLevel: Level3
                          glareMatchLevel: Level2
                          lightingMatchLevel: Disabled
                          sharpnessMatchLevel: Level2
                          handOcclusionMatchLevel: Level2
                          dpiMatchLevel: Disabled
                          tiltMatchLevel: Disabled
                          imageQualityInterpretation: Conservative
                          sideMode: FrontOnly
                          treatExpirationAsFraud: true
                        useCaseUsed:
                          documentVerificationPolicy: Standard
                          verificationContext: Remote
                          manualReviewStrategy: Never
                          manualReviewSensitivity: Low
                          captureConditions: NoControl
                        documentTypeFilter:
                          filteredCountry: MY
                          filteredDocumentTypes:
                            - malaysia_driver_license
                          filteredGenericDocumentTypes: []
                          detectedCountry: Malaysia
                          detectedDocumentType: Dl
                          documentTypeMatchesFilter: true
                    verificationStatus: VERIFIED
                    verificationStatusCode: 3
                    transactionId: e3817239-582f-4654-9884-f72d5522951d
                    verificationType: document_verification
                    metadata:
                      customerRef: ACME-8891
                    createdAt: 2026-09-09 00:18:53+0000
        '400':
          description: >-
            Validation failed. The verification source is not called and
            `transactionId` is null.
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/DocumentVerificationValidationErrorResponse
              examples:
                validationFailed:
                  summary: Validation failed
                  value:
                    success: false
                    code: VALIDATION_FAILED
                    message: >-
                      The request could not be validated. Please check the
                      submitted fields.
                    errors:
                      imageFrontSide:
                        - The image front side field is required.
                      documentTypeFilter.cardType.0:
                        - The selected documentTypeFilter.cardType.0 is invalid.
                      screenMatchLevel:
                        - The selected screen match level is invalid.
                    transactionId: null
                    verificationType: document_verification
                    createdAt: '2026-09-09T04:21:37Z'
        '500':
          description: >-
            An internal error occurred, or the verification source is
            unavailable.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DocumentVerificationServiceErrorResponse'
              examples:
                internalError:
                  summary: Internal server error
                  value:
                    success: false
                    code: INTERNAL_ERROR
                    message: Internal Server Error
                    verificationStatus: FAILED
                    verificationStatusCode: 4
                    transactionId: 9f2c1e84-7b3a-4d51-a6f0-2c8e5b17d904
                    verificationType: document_verification
                    metadata:
                      clientRef: ORDER-88213
                    createdAt: '2026-09-09T04:21:37Z'
                sourceUnavailable:
                  summary: Source unavailable
                  value:
                    success: false
                    code: SOURCE_UNAVAILABLE
                    message: >-
                      The verification source is currently unavailable. Please
                      try again later.
                    verificationStatus: FAILED
                    verificationStatusCode: 4
                    transactionId: 9f2c1e84-7b3a-4d51-a6f0-2c8e5b17d904
                    verificationType: document_verification
                    metadata:
                      clientRef: ORDER-88213
                    createdAt: '2026-09-09T04:21:37Z'
components:
  schemas:
    DocumentVerificationRequest:
      type: object
      required:
        - imageFrontSide
      properties:
        imageFrontSide:
          type: string
          description: >-
            Front document image as a JPEG or PNG data URL containing
            base64-encoded image data.
          example: data:image/jpeg;base64,/9j/4AAQSkZJRg...
        imageBackSide:
          type: string
          nullable: true
          description: >-
            Back document image as a JPEG or PNG data URL. Include this field
            for a two-sided document.
          example: data:image/jpeg;base64,/9j/4AAQSkZJRg...
        metadata:
          type: object
          nullable: true
          additionalProperties: true
          description: >-
            Your reference data. The API returns this object unchanged in the
            response.
          example:
            customerRef: ACME-8891
        returnFullResolutionImage:
          type: boolean
          description: >-
            Whether to return the full-resolution document image in
            `data.response.images`.
          example: true
        screenMatchLevel:
          type: string
          description: >-
            Controls how strictly the service checks for screen replay attacks.
            LEVEL_1 is the least strict and LEVEL_10 is the most strict. Higher
            levels may reject more valid physical documents.
          enum:
            - LEVEL_1
            - LEVEL_2
            - LEVEL_3
            - LEVEL_4
            - LEVEL_5
            - LEVEL_6
            - LEVEL_7
            - LEVEL_8
            - LEVEL_9
            - LEVEL_10
          example: LEVEL_5
        photoForgeryMatchLevel:
          type: string
          description: >-
            Controls how strictly the service checks for photo forgery. LEVEL_1
            is the least strict and LEVEL_10 is the most strict. Higher levels
            may reject more genuine documents.
          enum:
            - LEVEL_1
            - LEVEL_2
            - LEVEL_3
            - LEVEL_4
            - LEVEL_5
            - LEVEL_6
            - LEVEL_7
            - LEVEL_8
            - LEVEL_9
            - LEVEL_10
          example: LEVEL_3
        staticSecurityFeaturesMatchLevel:
          type: string
          description: >-
            Controls how strictly the service verifies visible security
            features. LEVEL_1 is the least strict and LEVEL_10 is the most
            strict. Higher levels may increase false rejections. Use Disabled to
            skip this check.
          enum:
            - Disabled
            - LEVEL_1
            - LEVEL_2
            - LEVEL_3
            - LEVEL_4
            - LEVEL_5
            - LEVEL_6
            - LEVEL_7
            - LEVEL_8
            - LEVEL_9
            - LEVEL_10
          example: Disabled
        documentTypeFilter:
          $ref: '#/components/schemas/DocumentTypeFilterRequest'
    DocumentVerificationSuccessResponse:
      type: object
      required:
        - success
        - message
        - data
        - verificationStatus
        - verificationStatusCode
        - transactionId
        - verificationType
        - createdAt
      properties:
        success:
          type: boolean
          description: Whether the request was processed successfully.
        message:
          type: string
        data:
          type: object
          required:
            - response
          properties:
            response:
              $ref: '#/components/schemas/DocumentVerificationResult'
        verificationStatus:
          type: string
          description: Business outcome for the verification request.
          example: VERIFIED
        verificationStatusCode:
          type: integer
          description: Numeric code for `verificationStatus`.
          example: 3
        transactionId:
          type: string
          format: uuid
        verificationType:
          type: string
          example: document_verification
        metadata:
          type: object
          nullable: true
          additionalProperties: true
          description: Metadata supplied in the request.
        createdAt:
          type: string
          description: UTC timestamp when the verification record was created.
    DocumentVerificationValidationErrorResponse:
      type: object
      required:
        - success
        - code
        - message
        - errors
        - transactionId
        - verificationType
        - createdAt
      properties:
        success:
          type: boolean
          example: false
        code:
          type: string
          example: VALIDATION_FAILED
        message:
          type: string
        errors:
          type: object
          description: Validation messages keyed by request field path.
          additionalProperties:
            type: array
            items:
              type: string
        transactionId:
          type: string
          format: uuid
          nullable: true
          example: null
        verificationType:
          type: string
          example: document_verification
        createdAt:
          type: string
          format: date-time
    DocumentVerificationServiceErrorResponse:
      type: object
      required:
        - success
        - code
        - message
        - verificationStatus
        - verificationStatusCode
        - transactionId
        - verificationType
        - createdAt
      properties:
        success:
          type: boolean
          example: false
        code:
          type: string
          enum:
            - SOURCE_UNAVAILABLE
            - INTERNAL_ERROR
        message:
          type: string
        verificationStatus:
          type: string
          example: FAILED
        verificationStatusCode:
          type: integer
          example: 4
        transactionId:
          type: string
          format: uuid
        verificationType:
          type: string
          example: document_verification
        metadata:
          type: object
          nullable: true
          additionalProperties: true
          description: Metadata supplied in the request.
        createdAt:
          type: string
          format: date-time
    DocumentTypeFilterRequest:
      type: object
      required:
        - country
        - cardType
      properties:
        country:
          type: string
          description: ISO 3166-1 alpha-3 code for the accepted issuing country.
          enum:
            - PHL
            - MYS
            - IDN
            - AUS
          example: MYS
        cardType:
          type: array
          minItems: 1
          description: >-
            Accepted document types. Each value must belong to the country
            selected in `country`.
          items:
            type: string
            enum:
              - philippines_driving_license
              - philippines_prc
              - philippines_social_security
              - philippines_umid_ssn
              - philippines_health_insurance_card
              - philippines_tax_id
              - philippines_passport
              - philippines_philsys_id
              - philippines_voter_id
              - philippines_postal_id
              - philippines_alien_id
              - malaysia_ic_check
              - malaysia_driver_license
              - malaysia_i_kad
              - malaysia_mykas
              - malaysia_mykid
              - malaysia_mypolis
              - malaysia_mypr
              - malaysia_mytentera
              - malaysia_refugee_id
              - malaysia_passport
              - ktp_details_extraction
              - indonesia_driver_license
              - indonesia_passport
              - australia_driver_license
              - australia_passport
              - australia_identity_card
              - australia_health_insurance_card
          example:
            - malaysia_driver_license
    DocumentVerificationResult:
      type: object
      properties:
        processingStatus:
          type: string
        verification:
          $ref: '#/components/schemas/VerificationSummary'
        messages:
          type: array
          items: {}
        checks:
          type: array
          items:
            $ref: '#/components/schemas/CheckResult'
        processIndicators:
          type: array
          items:
            $ref: '#/components/schemas/ProcessIndicator'
        extraction:
          $ref: '#/components/schemas/ExtractionResult'
        runtime:
          $ref: '#/components/schemas/RuntimeDetails'
        images:
          type: array
          items:
            $ref: '#/components/schemas/ReturnedImage'
        optionsUsed:
          type: object
          description: Effective verification settings used to process the request.
          additionalProperties: true
        useCaseUsed:
          type: object
          description: Effective document-verification use-case settings.
          additionalProperties: true
        documentTypeFilter:
          $ref: '#/components/schemas/DocumentTypeFilterResult'
    VerificationSummary:
      type: object
      properties:
        recommendedOutcome:
          type: string
          example: Accept
        result:
          type: string
          example: Pass
        certaintyLevel:
          type: string
          example: High
        performedChecks:
          type: integer
          example: 14
        type:
          type: string
          example: DetailedCheck
    CheckResult:
      type: object
      description: >-
        A verification check. Some checks contain nested checks or document
        fields.
      properties:
        name:
          type: string
        field:
          type: string
        result:
          type: string
          example: Pass
        certaintyLevel:
          type: string
        matchLevel:
          type: string
        type:
          type: string
        checks:
          type: array
          items:
            $ref: '#/components/schemas/CheckResult'
        details:
          type: array
          items: {}
    ProcessIndicator:
      type: object
      properties:
        name:
          type: string
        type:
          type: string
        result:
          type: string
    ExtractionResult:
      type: object
      description: >-
        OCR output and detected document classification. The extracted field set
        varies by document type.
      properties:
        processingStatus:
          type: string
        recognitionStatus:
          type: string
        overall:
          type: array
          items:
            type: object
            additionalProperties: true
        viz:
          type: object
          properties:
            front:
              type: array
              items:
                type: object
                additionalProperties: true
            back:
              type: array
              items:
                type: object
                additionalProperties: true
        classInfo:
          type: object
          additionalProperties: true
        additionalInfo:
          type: object
          additionalProperties: true
    RuntimeDetails:
      type: object
      description: >-
        Processing timing, component versions, recognition path, and trace
        information.
      properties:
        startedOn:
          type: string
          format: date-time
        finishedOn:
          type: string
          format: date-time
        elapsedMs:
          type: integer
        traceId:
          type: string
      additionalProperties: true
    ReturnedImage:
      type: object
      properties:
        name:
          type: string
          example: FullDocumentFrontImage
        base64:
          type: string
          description: Base64-encoded image data.
    DocumentTypeFilterResult:
      type: object
      properties:
        filteredCountry:
          type: string
          description: Configured issuing country in ISO 3166-1 alpha-2 format.
        filteredDocumentTypes:
          type: array
          items:
            type: string
        filteredGenericDocumentTypes:
          type: array
          items:
            type: string
        detectedCountry:
          type: string
        detectedDocumentType:
          type: string
        documentTypeMatchesFilter:
          type: boolean
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: Use your API token as a Bearer token in the `Authorization` header.

````