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

# Create verification

> Create a new verification



## OpenAPI

````yaml /api-specs/anycheck.yaml post /verifications
openapi: 3.0.3
info:
  title: AnyCheck API
  version: 1.0.0
  description: >
    # AnyCheck API Documentation


    The AnyCheck API (formerly KYB API) provides comprehensive business and
    identity verification services through a RESTful interface.


    ## Features

    - **Identity Verification**: KTP, NIK, and other identity document
    validation

    - **Business Documents**: BPKB, land certificates, and business registration
    verification

    - **Compliance**: PEP screening and fraud detection

    - **Bank Statement Analysis**: OCR extraction and financial analysis

    - **Template Management**: Create and manage verification templates

    - **Async Processing**: Queue-based verification with webhook notifications


    ## Authentication

    All endpoints (except `/ping` and `/health`) require authentication via the
    `X-API-Key` header.
  contact:
    name: API Support
    email: bd@fintelite.ai
  license:
    name: Proprietary
servers:
  - url: https://api.anycheck.ai
    description: Production server
security:
  - apiKey: []
tags:
  - name: Health
    description: Health check endpoints
  - name: Upload
    description: File upload operations
  - name: Authentication
    description: User authentication and registration
  - name: Groups
    description: Group resource management
  - name: Services
    description: Verification service operations
  - name: Folders
    description: Folder management for organizing verifications
  - name: Verifications
    description: Document verification operations
  - name: Templates
    description: Verification template management
  - name: Bank Statement Analysis
    description: Bank statement OCR extraction, review, and financial analytics
  - name: Drafts
    description: 'Draft verification management: save, edit, and submit verifications'
paths:
  /verifications:
    post:
      tags:
        - Verifications
      summary: Create verification
      description: Create a new verification
      operationId: createVerification
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - service_id
                - folder_id
                - configuration
              properties:
                service_id:
                  type: string
                  format: uuid
                  description: Service ID obtained from `GET /services`
                folder_id:
                  type: string
                  format: uuid
                  description: Folder to organize verification
                result_id:
                  type: string
                  format: uuid
                  description: Optional result ID to group verifications
                configuration:
                  type: object
                  description: >
                    Service-specific input configuration. Keys and required
                    fields differ per service.


                    For fields that require a file, first upload via `POST
                    /uploads` and pass the returned

                    `path` inside a `files` object keyed by the field name:

                    ```json

                    "files": { "ktp_file": ["<path from POST /upload>"] }

                    ```


                    See the [Verification Services
                    guide](/anycheck/concepts/verification-services) for

                    complete per-service field reference, validation rules, and
                    output schemas.
                webhook_url:
                  type: string
                  format: uri
                  nullable: true
                  description: >
                    Your endpoint URL to receive real-time status updates when
                    the verification progresses.

                    AnyCheck will POST a signed payload to this URL on each
                    status change.

                    See the [Webhooks guide](/anycheck/concepts/webhooks) for
                    payload format and signature verification.
                  example: https://your-app.com/webhooks/anycheck
                webhook_metadata:
                  type: object
                  description: >
                    Optional metadata attached to the webhook. Use the
                    `webhook_secret` key to set a per-verification

                    HMAC signing secret. If omitted, the payload is still sent
                    but without HMAC signing.
                  example:
                    webhook_secret: your-signing-secret
            examples:
              ktp_pep:
                summary: 'KTP & PEP: KTP + PEP Verification'
                value:
                  service_id: 3fc8b757-57d3-4607-998c-9bfbc4efa6cf
                  folder_id: your-folder-uuid
                  configuration:
                    verification_type: KTP_PEP
                    fraud_detection: false
                    files:
                      ktp_file:
                        - <path from POST /upload>
              nik_pep:
                summary: 'KTP & PEP: NIK + PEP Verification'
                value:
                  service_id: 3fc8b757-57d3-4607-998c-9bfbc4efa6cf
                  folder_id: your-folder-uuid
                  configuration:
                    verification_type: NIK_PEP
                    full_name: John Doe
                    nik: '3201234567890001'
              ktp_selfie:
                summary: 'KTP & PEP: KTP + Selfie Verification'
                value:
                  service_id: 3fc8b757-57d3-4607-998c-9bfbc4efa6cf
                  folder_id: your-folder-uuid
                  configuration:
                    verification_type: KTP_SELFIE
                    fraud_detection: false
                    files:
                      ktp_file:
                        - <path from POST /upload>
                      selfie_file:
                        - <path from POST /upload>
              pep_only:
                summary: 'KTP & PEP: PEP Only'
                value:
                  service_id: 3fc8b757-57d3-4607-998c-9bfbc4efa6cf
                  folder_id: your-folder-uuid
                  configuration:
                    verification_type: PEP
                    full_name: John Doe
              nik_only:
                summary: 'KTP & PEP: NIK Verification'
                value:
                  service_id: 3fc8b757-57d3-4607-998c-9bfbc4efa6cf
                  folder_id: your-folder-uuid
                  configuration:
                    verification_type: NIK
                    nik: '3201234567890001'
              nib_check:
                summary: NIB Check
                value:
                  service_id: 947c0643-c073-4e06-b232-6f1078f6f8f0
                  folder_id: your-folder-uuid
                  configuration:
                    nib: '1234567890123'
              bpkb_jabar:
                summary: 'BPKB: Jawa Barat'
                value:
                  service_id: 7d629b67-6861-4b23-9407-3702f81b2c10
                  folder_id: your-folder-uuid
                  configuration:
                    region: JABAR
                    license_plate_region_code: D
                    license_plate_number: '1234'
                    license_plate_suffix: ABC
              bpkb_diy:
                summary: 'BPKB: DI Yogyakarta'
                value:
                  service_id: 7d629b67-6861-4b23-9407-3702f81b2c10
                  folder_id: your-folder-uuid
                  configuration:
                    region: DIY
                    license_plate_region_code: AB
                    license_plate_number: '1234'
                    license_plate_suffix: XY
              bank_statement:
                summary: Bank Statement Analysis
                value:
                  service_id: ad37f118-ba70-48ab-9ee2-650cbf0da2b9
                  folder_id: your-folder-uuid
                  configuration:
                    fraud_detection: false
                    files:
                      bsa_file:
                        - <path from POST /upload>
              company_check_upload:
                summary: 'Company Check: Upload Akta'
                value:
                  service_id: b9fdd1c7-1052-4012-8716-e9bb2f9f7fb2
                  folder_id: your-folder-uuid
                  configuration:
                    verification_method: UPLOAD
                    verification_type: AKTA_COMPANY_CHECK
                    fraud_detection: false
                    files:
                      akta_file:
                        - <path from POST /upload>
              company_check_form:
                summary: 'Company Check: Search by Name'
                value:
                  service_id: b9fdd1c7-1052-4012-8716-e9bb2f9f7fb2
                  folder_id: your-folder-uuid
                  configuration:
                    verification_method: FORM
                    verification_type: COMPANY_CHECK_ONLY
                    company_name: PT Sribuu Inovasi Digital
              document_extraction_parse:
                summary: 'Document Extraction: Parse mode'
                value:
                  service_id: 29cf9e7c-c856-48a6-8a72-143c17817abf
                  folder_id: your-folder-uuid
                  configuration:
                    mode: parse
                    review_parser_mode: true
                    files:
                      document_extraction_file:
                        - <path from POST /upload>
              document_extraction_predict:
                summary: 'Document Extraction: Predict mode'
                value:
                  service_id: 29cf9e7c-c856-48a6-8a72-143c17817abf
                  folder_id: your-folder-uuid
                  configuration:
                    mode: predict
                    template_id: your-template-uuid
                    files:
                      document_extraction_file:
                        - <path from POST /upload>
              document_forensic:
                summary: Document Forensic
                value:
                  service_id: 22ff2fdf-c8e5-4b11-9331-ec0573368d86
                  folder_id: your-folder-uuid
                  configuration:
                    files:
                      document_forensic_file:
                        - <path from POST /upload>
              financial_statement:
                summary: Financial Statement Analysis
                value:
                  service_id: 686c5c93-884a-4b20-8578-1618eeef2034
                  folder_id: your-folder-uuid
                  configuration:
                    fraud_detection: false
                    files:
                      fsa_file:
                        - <path from POST /upload>
              land_certificate_form:
                summary: 'Land Certificate: Fill Form (Regular)'
                value:
                  service_id: 72b879b9-145c-4c37-8f5e-4db1b15d9ae4
                  folder_id: your-folder-uuid
                  configuration:
                    verification_type: REGULAR
                    verification_method: FORM
                    city_regency_id: <id from GET /forms/land-certificate/city-regencies>
                    subdistrict_id: <id from GET /forms/land-certificate/subdistricts>
                    number_type: NIB
                    nib: '12345'
              land_certificate_upload:
                summary: 'Land Certificate: Upload Document (Regular)'
                value:
                  service_id: 72b879b9-145c-4c37-8f5e-4db1b15d9ae4
                  folder_id: your-folder-uuid
                  configuration:
                    verification_type: REGULAR
                    verification_method: UPLOAD
                    fraud_detection: false
                    files:
                      land_certificate_file:
                        - <path from POST /upload>
              payslip:
                summary: Payslip Verification
                value:
                  service_id: 3c797a1e-0df4-4003-89e2-d32c8e38d3be
                  folder_id: your-folder-uuid
                  configuration:
                    fraud_detection: false
                    files:
                      payslip_file:
                        - <path from POST /upload>
              slik:
                summary: 'SLIK: Underwriting'
                value:
                  service_id: 85b65bf9-5249-49c2-bbd2-3b16c69ad614
                  folder_id: your-folder-uuid
                  configuration:
                    template_type: SLIK_UNDERWRITING
                    fraud_detection: false
                    files:
                      slik_file:
                        - <path from POST /upload>
              vehicle_price:
                summary: Vehicle Price
                value:
                  service_id: 1db69edd-aa5b-4573-80e9-2361e4830d9d
                  folder_id: your-folder-uuid
                  configuration:
                    vehicle_type: CAR
                    vehicle_name: Toyota Avanza
                    vehicle_year: 2022
      responses:
        '201':
          description: Verification created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Verification'
        '400':
          description: Invalid verification data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                error_code: INVALID_REQUEST
                message: Invalid request. Please check input data format and try again
                errors:
                  - field: service_id
                    message: This field is required
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '408':
          $ref: '#/components/responses/RequestTimeout'
        '500':
          $ref: '#/components/responses/VerificationFailed'
        '503':
          $ref: '#/components/responses/ServiceUnavailable'
components:
  schemas:
    Verification:
      type: object
      properties:
        id:
          type: string
          format: uuid
          description: Unique verification identifier
        service:
          $ref: '#/components/schemas/ServiceNameResponse'
        user_id:
          type: string
          format: uuid
          nullable: true
          description: User who created the verification
        api_key:
          type: string
          nullable: true
          description: API key used for this verification
          example: null
        folder_id:
          type: string
          format: uuid
          description: Folder containing this verification
        result_id:
          type: string
          format: uuid
          description: Result group identifier
        execution_time:
          type: number
          format: float
          description: Processing time in seconds
          example: 2.284
        status:
          type: string
          enum:
            - DRAFT
            - IN_QUEUE
            - IN_PROGRESS
            - COMPLETED
            - FAILED
            - CANCELLED
            - NEED_REVIEW
            - FRAUD_DETECTED
            - PARTIALLY_COMPLETED
            - PARTIALLY_FAILED
          description: Current verification status
          example: COMPLETED
        start_date:
          type: string
          format: date-time
          nullable: true
          description: Processing start time
        end_date:
          type: string
          format: date-time
          nullable: true
          description: Processing end time
        input_config:
          type: object
          description: Service-specific input configuration
          example:
            verification_type: KTP_SELFIE
            files:
              ktp_file:
                - /uploads/ktp.jpg
              selfie_file:
                - /uploads/selfie.jpg
            fraud_detection: false
        input_file_url:
          type: object
          description: URLs of input files organized by file type
          example:
            ktp_file:
              - https://example.com/files/ktp.jpg
            selfie_file:
              - https://example.com/files/selfie.jpg
          additionalProperties:
            type: array
            items:
              type: string
              format: uri
        output:
          type: object
          description: Verification results and extracted data
          example:
            face_match_confidence_level: LOW
            face_match_confidence_score: 2.284846674563825
            is_match_face: false
        output_file_url:
          type: string
          format: uri
          nullable: true
          description: URL to download detailed results
          example: https://example.com/output.json
        output_status:
          type: string
          enum:
            - VERIFIED
            - NOT_VERIFIED
            - PARTIALLY_NOT_VERIFIED
          nullable: true
          description: Overall verification result status
        external_job_id:
          type: object
          nullable: true
          description: External processing job identifiers
          properties:
            ocr_job_id:
              type: array
              items:
                type: string
                format: uuid
            fraud_job_id:
              type: array
              items:
                type: string
                format: uuid
        webhook_url:
          type: string
          format: uri
          nullable: true
          description: Webhook URL for notifications
          example: https://your-app.com/webhook
        webhook_metadata:
          type: object
          description: Custom metadata for webhook
        export_file_url:
          type: string
          format: uri
          nullable: true
          description: URL to download exported results
          example: https://example.com/export.xlsx
        credit_used:
          type: integer
          description: Credits consumed by this verification
          example: 10
        total_files:
          type: integer
          description: Number of files processed
          example: 2
        total_pages:
          type: integer
          description: Number of pages processed
          example: 5
        created_at:
          type: string
          format: date-time
          description: Verification creation timestamp
        updated_at:
          type: string
          format: date-time
          description: Last update timestamp
    ErrorResponse:
      type: object
      properties:
        error_code:
          type: string
          example: INVALID_REQUEST
          description: Error code identifying the type of error
        message:
          type: string
          example: Invalid request. Please check input data format and try again
          description: Human-readable error message
        errors:
          type: array
          description: Field-specific validation errors (optional)
          items:
            $ref: '#/components/schemas/FieldError'
    ServiceNameResponse:
      type: object
      properties:
        id:
          type: string
          format: uuid
        name:
          type: string
          example: KTP & PEP
    FieldError:
      type: object
      properties:
        field:
          type: string
          description: Name of the field with validation error
          example: service_id
        message:
          type: string
          description: Field-specific error message
          example: This field is required
      required:
        - field
        - message
  responses:
    Unauthorized:
      description: Unauthorized - Authentication required or invalid
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          examples:
            invalid_api_key:
              summary: Invalid API key
              value:
                error_code: INVALID_API_KEY
                message: API key is invalid
            api_key_expired:
              summary: Expired API key
              value:
                error_code: API_KEY_EXPIRED
                message: API key is expired
            unauthorized:
              summary: Missing authentication
              value:
                error_code: UNAUTHORIZED
                message: You are not authorized to perform this action
    Forbidden:
      description: Forbidden - User lacks required permissions
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          example:
            error_code: FORBIDDEN
            message: You are forbidden to perform this action
    RequestTimeout:
      description: Request timeout
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          example:
            error_code: REQUEST_TIMEOUT
            message: Request timed out. Please try again later
    VerificationFailed:
      description: Verification processing failed
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          example:
            error_code: VERIFICATION_FAILED
            message: An error occurred while processing verification
    ServiceUnavailable:
      description: Service unavailable
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          example:
            error_code: SERVICE_UNAVAILABLE
            message: Verification service is temporarily unavailable
  securitySchemes:
    apiKey:
      type: apiKey
      in: header
      name: X-API-Key
      description: API key for service-to-service authentication

````