Veryfi Documents API

The Documents API from Veryfi — 2 operation(s) for documents.

OpenAPI Specification

veryfi-documents-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Veryfi OCR Any Documents API
  description: The Veryfi OCR API extracts structured data from financial documents including receipts, invoices, bank statements, checks, W-2s, W-8s, W-9s, business cards, contracts, and more. The API uses AI-powered OCR to capture line items, taxes, totals, barcodes, vendor details, and other financial data across 91 currencies and 38 languages with enterprise-grade accuracy.
  version: v8
  contact:
    name: Veryfi Support
    url: https://docs.veryfi.com/
    email: support@veryfi.com
  license:
    name: Proprietary
    url: https://www.veryfi.com/terms/
servers:
- url: https://api.veryfi.com/api/v8
  description: Veryfi OCR API v8
security:
- clientId: []
  apiKey: []
tags:
- name: Documents
paths:
  /partner/documents:
    post:
      operationId: processDocument
      summary: Process a Document
      description: Submit a document (receipt, invoice, bill, or other financial document) for AI-powered OCR extraction. Returns structured JSON with vendor details, line items, taxes, totals, and other captured fields. Supports file uploads, URLs, base64-encoded data, and S3 references. Optionally supports asynchronous processing via webhooks.
      tags:
      - Documents
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ProcessDocumentRequest'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/ProcessDocumentRequest'
      responses:
        '201':
          description: Document successfully processed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Document'
        '400':
          description: Bad request - malformed or missing required fields
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Unauthorized - invalid credentials
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '409':
          description: Rate limit exceeded
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
    get:
      operationId: listDocuments
      summary: List All Documents
      description: Retrieve a paginated list of previously processed documents with optional filtering by date range, tags, and other criteria.
      tags:
      - Documents
      parameters:
      - name: created_date__gt
        in: query
        required: false
        description: Filter documents created after this date (format YYYY-MM-DD+HH:MM:SS)
        schema:
          type: string
      - name: created_date__lt
        in: query
        required: false
        description: Filter documents created before this date
        schema:
          type: string
      - name: page
        in: query
        required: false
        description: Page number for pagination
        schema:
          type: integer
          default: 1
      - name: page_size
        in: query
        required: false
        description: Number of documents per page
        schema:
          type: integer
          default: 50
          maximum: 100
      responses:
        '200':
          description: List of documents
          content:
            application/json:
              schema:
                type: object
                properties:
                  count:
                    type: integer
                  documents:
                    type: array
                    items:
                      $ref: '#/components/schemas/Document'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /partner/documents/{documentId}:
    get:
      operationId: getDocument
      summary: Get a Document
      description: Retrieve a previously processed document by its ID.
      tags:
      - Documents
      parameters:
      - name: documentId
        in: path
        required: true
        description: Unique document identifier
        schema:
          type: integer
      responses:
        '200':
          description: Document details
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Document'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Document not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
    put:
      operationId: updateDocument
      summary: Update a Document
      description: Update metadata, tags, or category for a processed document.
      tags:
      - Documents
      parameters:
      - name: documentId
        in: path
        required: true
        description: Unique document identifier
        schema:
          type: integer
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                tags:
                  type: array
                  items:
                    type: string
                  description: Updated tags list
                category:
                  type: string
                  description: Updated category
                external_id:
                  type: string
                  description: External system reference ID
      responses:
        '200':
          description: Document updated
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Document'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Document not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
    delete:
      operationId: deleteDocument
      summary: Delete a Document
      description: Permanently delete a processed document and its extracted data.
      tags:
      - Documents
      parameters:
      - name: documentId
        in: path
        required: true
        description: Unique document identifier
        schema:
          type: integer
      responses:
        '200':
          description: Document deleted successfully
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Document not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
components:
  schemas:
    Document:
      type: object
      description: A processed document with extracted data
      properties:
        id:
          type: integer
          description: Unique document ID
        external_id:
          type: string
          description: Customer-provided external identifier
        document_type:
          type: string
          description: Detected or specified document type
        vendor:
          type: object
          description: Vendor information extracted from the document
          properties:
            name:
              type: string
            address:
              type: string
            phone_number:
              type: string
            email:
              type: string
        date:
          type: string
          description: Document date
        due_date:
          type: string
          description: Payment due date (for invoices)
        invoice_number:
          type: string
          description: Invoice or receipt number
        total:
          type: number
          format: float
          description: Total amount
        subtotal:
          type: number
          format: float
          description: Subtotal before taxes
        tax:
          type: number
          format: float
          description: Total tax amount
        tip:
          type: number
          format: float
          description: Tip/gratuity amount
        currency_code:
          type: string
          description: ISO 4217 currency code
        line_items:
          type: array
          description: Extracted line items
          items:
            type: object
            properties:
              description:
                type: string
              quantity:
                type: number
              price:
                type: number
              total:
                type: number
              sku:
                type: string
              tax:
                type: number
        tags:
          type: array
          items:
            type: string
          description: User-defined tags
        created:
          type: string
          format: date-time
          description: Processing timestamp
        updated:
          type: string
          format: date-time
          description: Last update timestamp
    Error:
      type: object
      description: API error response
      properties:
        status:
          type: integer
          description: HTTP status code
        error:
          type: string
          description: Error type
        message:
          type: string
          description: Human-readable error message
    ProcessDocumentRequest:
      type: object
      description: Request body for document processing operations
      properties:
        file_url:
          type: string
          format: uri
          description: Publicly accessible URL to the document
        file_urls:
          type: array
          items:
            type: string
            format: uri
          description: Multiple document URLs (for multi-page documents)
        file_data:
          type: string
          description: Base64-encoded document data
        file:
          type: string
          format: binary
          description: Binary file upload
        async:
          type: boolean
          default: false
          description: Enable asynchronous processing via webhook
        boost_mode:
          type: boolean
          default: false
          description: Skip enrichment for faster processing
        max_pages_to_process:
          type: integer
          default: 15
          maximum: 15
          description: Maximum pages to process
        bounding_boxes:
          type: boolean
          default: false
          description: Include coordinate data for extracted fields
        confidence_details:
          type: boolean
          default: false
          description: Include confidence scores for each extracted field
        external_id:
          type: string
          description: Custom identifier for the document in your system
        tags:
          type: array
          items:
            type: string
          description: Tags for document organization
        country:
          type: string
          description: Two-letter country code as currency hint
        parse_address:
          type: boolean
          description: Break address fields into individual components
  securitySchemes:
    clientId:
      type: apiKey
      in: header
      name: CLIENT-ID
      description: Your Veryfi account client identifier
    apiKey:
      type: apiKey
      in: header
      name: AUTHORIZATION
      description: 'API key in format: ''apikey USERNAME:API_KEY'''
    requestSignature:
      type: apiKey
      in: header
      name: X-Veryfi-Request-Signature
      description: HMAC-SHA256 signature for request validation