> ## 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.

# Upload file

> Upload a file for verification processing. Supports document images, PDFs, and other verification-related files.



## OpenAPI

````yaml /api-specs/anycheck.yaml post /uploads
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:
  /uploads:
    post:
      tags:
        - Upload
      summary: Upload file
      description: >-
        Upload a file for verification processing. Supports document images,
        PDFs, and other verification-related files.
      operationId: uploadFile
      requestBody:
        required: true
        content:
          multipart/form-data:
            schema:
              type: object
              required:
                - file_category
                - files
              properties:
                file_category:
                  type: string
                  description: Category of the uploaded files
                  enum:
                    - VERIFICATION_INPUT_FILE
                    - PROFILE_PICTURE
                  example: VERIFICATION_INPUT_FILE
                files:
                  type: array
                  items:
                    type: string
                    format: binary
                  description: Files to upload (supports images, PDFs, documents)
                  minItems: 1
                file_passwords:
                  type: array
                  items:
                    type: string
                  description: >-
                    Optional passwords for protected files (e.g.,
                    password-protected PDFs). Array should match files array
                    order.
                  example:
                    - password1
                    - password2
      responses:
        '200':
          description: File uploaded successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  object_id:
                    type: string
                    format: uuid
                    description: Unique object identifier for the uploaded file
                    example: 1503f16a-67a8-4976-9b1c-9446ec626a8d
                  file_category:
                    type: string
                    description: Category of the uploaded file
                    example: VERIFICATION_INPUT_FILE
                    enum:
                      - VERIFICATION_INPUT_FILE
                      - PROFILE_PICTURE
                  files:
                    type: array
                    description: Array of uploaded file information
                    items:
                      type: object
                      properties:
                        path:
                          type: string
                          description: Server path to the uploaded file
                          example: uploads/selfie_123456.jpg
                        url:
                          type: string
                          format: uri
                          description: Pre-signed URL to access the uploaded file
                          example: >-
                            https://api.anycheck.ai/files/123e4567-e89b-12d3-a456-426614174000
                        page_count:
                          type: integer
                          description: Number of pages in the file (for documents)
                          example: 1
                      required:
                        - path
                        - url
                        - page_count
                required:
                  - object_id
                  - file_category
                  - files
        '400':
          description: Invalid file or request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                invalid_file_type:
                  summary: Unsupported file type
                  value:
                    error_code: INVALID_REQUEST
                    message: >-
                      Unsupported file type. Supported file types are JPG, PNG,
                      PDF, ...
                file_too_large:
                  summary: File too large
                  value:
                    error_code: INVALID_REQUEST
                    message: File size exceeds the maximum limit of 50MB
                missing_file:
                  summary: No file provided
                  value:
                    error_code: INVALID_REQUEST
                    message: >-
                      Invalid request. Please check input data format and try
                      again
                    errors:
                      - field: file
                        message: This field is required
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '408':
          $ref: '#/components/responses/RequestTimeout'
        '500':
          description: Upload failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                error_code: UPLOAD_FAILED
                message: File upload failed. Please try again
components:
  schemas:
    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'
    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
  securitySchemes:
    apiKey:
      type: apiKey
      in: header
      name: X-API-Key
      description: API key for service-to-service authentication

````