For AI agents: a documentation index is available at the root level at /llms.txt and /llms-full.txt. Append /llms.txt to any URL for a page-level index, or .md for the markdown version of any page.
  • Getting Started
    • Introduction
    • How Verifa Works
    • Quickstart
    • Choosing an Integration Method
  • Use Cases
    • KYC Onboarding
    • Age Verification
    • AML Compliance
    • Fraud Prevention
    • Marketplace Trust & Safety
  • Core Concepts
    • Overview
    • Sessions
    • Verifications & Checks
    • Workflows
    • Identities
    • Cases
    • Screening & Reports
    • Lists
  • Integration Guides
    • Overview
    • JavaScript SDK
    • Web Capture Flow
    • API-Only Integration
    • Mobile SDK
    • Webhooks Guide
    • MCP Server
    • Migrating from Persona
  • API Details
    • Overview
    • Authentication
    • Pagination
    • Rate Limiting
    • Versioning
    • Errors
    • Webhooks
    • Idempotency
    • Key Inflection
    • Data Access
    • Data Retention
  • Tutorials
    • Creating Your First Verification Session
    • Creating a Workflow
    • Receiving Webhooks & Validating Signatures
    • Handling Webhook Events
    • Custom Document Types & AI Extraction
  • Best Practices
    • Testing
    • Preventing Duplicates
    • Fraud Signals
    • Changelog
  • API Reference
      • GETList session documents
      • POSTUpload a document to a session
      • GETDownload a document
      • GETList documents
      • POSTUpload a standalone document
      • GETGet document metadata
      • DELRedact a document
      • PATCHUpdate document metadata
      • GETDownload a document via signed URL
      • GETPreview a document page as JPEG
      • GETList document extractions
      • GETList document checks
      • POSTTrigger document classification
      • POSTTrigger document extraction
      • POSTRun verification checks on a document
      • POSTCompare two documents
      • POSTBulk classify documents
      • POSTBulk extract documents
      • POSTBulk verify documents
      • GETList document fingerprints
      • POSTCreate a document fingerprint
      • DELDelete a document fingerprint
      • POSTFlag a document as compromised
      • POSTCompare a document to a verified identity
      • POSTRun AI-powered document insights
API ReferenceDocuments

Upload a document to a session

POST
https://devapi.withverifa.com/api/v1/sessions/:session_id/documents
POST
/api/v1/sessions/:session_id/documents
$curl -X POST https://devapi.withverifa.com/api/v1/sessions/session_id/documents \
> -H "X-API-Key: <apiKey>" \
> -H "Content-Type: multipart/form-data" \
> -F file=@string \
> -F document_type="id_front"
1{
2 "id": "doc_abc123",
3 "session_id": "ses_abc123",
4 "document_type": "id_front",
5 "mime_type": "image/jpeg",
6 "file_size_bytes": 245760,
7 "created_at": "2024-01-15T09:30:00Z"
8}
Upload a document image (ID front, ID back, or selfie) to a session via the API. This enables document submission from native mobile apps or custom UIs without using the hosted capture flow. If a document of the same type already exists, it is replaced (idempotent). If the session was in `pending` status, it transitions to `capturing`. **Required scope:** `documents:write`
Was this page helpful?
Previous

Download a document

Next
Built with

Upload a document image (ID front, ID back, or selfie) to a session via the API. This enables document submission from native mobile apps or custom UIs without using the hosted capture flow.

If a document of the same type already exists, it is replaced (idempotent). If the session was in pending status, it transitions to capturing.

Required scope: documents:write

Authentication

X-API-Keystring

Organization API key. Keys are prefixed with vk_live_ (production) or vk_sandbox_ (sandbox).

Path parameters

session_idstringRequired

Session ID (ses_*).

Headers

Verifa-VersiondateOptional

API version date string (e.g. 2026-02-01). If omitted, the version pinned to your API key is used.

Request

This endpoint expects a multipart form containing a file.
filefileRequired

The document image file (JPEG, PNG, WebP, or PDF). Max 10MB.

document_typeenumRequired
The type of document being uploaded.
poa_document_typestringOptional

Proof-of-address document subtype (e.g. utility_bill, bank_statement). Required when document_type is proof_of_address.

poa_document_datedateOptional

Date on the proof-of-address document (YYYY-MM-DD).

Response

Document uploaded successfully.
idstring
Public ID of the uploaded document.
session_idstring
Public ID of the session.
document_typeenum
The type of document uploaded.
Allowed values:
mime_typestring
MIME type of the uploaded file.
file_size_bytesinteger
Size of the uploaded file in bytes.
created_atdatetime
When the document was uploaded.

Errors

400
Bad Request Error
401
Unauthorized Error
404
Not Found Error
422
Unprocessable Entity Error