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 document types
      • POSTCreate a document type
      • DELDelete a document type
      • PATCHUpdate a document type
      • GETList document groups
      • POSTCreate a document group
      • DELDelete a document group
      • PATCHUpdate a document group
API ReferenceDocument Types

Create a document type

POST
https://devapi.withverifa.com/api/v1/settings/document-types
POST
/api/v1/settings/document-types
$curl -X POST https://devapi.withverifa.com/api/v1/settings/document-types \
> -H "X-API-Key: <apiKey>" \
> -H "Content-Type: application/json" \
> -d '{
> "slug": "auto_insurance_card",
> "label": "Auto Insurance Card",
> "category": "financial"
>}'
1{
2 "id": "doc_8f3b2c1a9d4e4f7b8a6c1234567890ab",
3 "org_id": "org_5a7d9e3f2b1c4d6e8f0a1234567890cd",
4 "slug": "auto_insurance_card",
5 "label": "Auto Insurance Card",
6 "category": "financial",
7 "is_active": true,
8 "created_at": "2024-01-15T09:30:00Z",
9 "updated_at": "2024-01-15T09:30:00Z",
10 "description": "Auto insurance proof-of-coverage card showing policy number, VIN, named insured, and effective and expiration dates of coverage.",
11 "extraction_hints": {
12 "vin": "Vehicle Identification Number, 17 alphanumeric characters",
13 "policy_number": "Insurance policy reference number",
14 "issue_date": "Effective start date of the policy (YYYY-MM-DD)",
15 "expiry_date": "End date of the policy coverage (YYYY-MM-DD)"
16 },
17 "check_suite": [
18 [
19 "document_authenticity",
20 "identity",
21 "required"
22 ],
23 [
24 "policy_validity",
25 "financial",
26 "optional"
27 ]
28 ]
29}

Creates a new custom document type for your organization. Document types define how documents of a given kind are classified, extracted, and verified.

Required scope: settings:write (or legacy documents:write).

Was this page helpful?
Previous

Delete a document type

Next
Built with

Authentication

X-API-Keystring

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

Headers

Idempotency-KeystringOptional<=255 characters

Unique key for idempotent requests. Cached for 24 hours. Sending the same key with different parameters returns 422.

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 an object.
slugstringRequiredformat: "^[a-z0-9_-]+$"

URL-safe identifier for this document type.

labelstringRequired

Human-readable display label.

categorystringRequired

Document category (e.g. identity, address, financial).

descriptionstringOptional
Optional description of this document type.
extraction_hintsmap from strings to anyOptional
OCR and extraction configuration hints.
check_suitemap from strings to anyOptional
Verification check suite configuration.

Response

Document type created.
idstring
Document type ID.
org_idstring
Organization ID.
slugstring

URL-safe identifier for this document type.

labelstring

Human-readable display label.

categorystring

Parent category for grouping in the dashboard. One of: financial, corporate, identity, address, vehicle, government, or other.

is_activeboolean
Whether this document type is active.
created_atdatetime
updated_atdatetime
descriptionstring or null

Free-text visual + content description of this document type. Used by Verifa’s document classifier to recognize uploaded documents and pick this type when it matches. Be specific about logos, layouts, and prominent fields — clearer descriptions give better classification accuracy.

extraction_hintsmap from strings to strings or null

Map of {field_name: hint} describing the structured fields to extract from documents of this type. Each hint is a short free-text description of how to identify the field — including common synonyms, expected format, and any disambiguation tips (“Member ID, sometimes labeled ‘Subscriber ID’ or ‘Policy #’”).

When set, uploaded documents of this type are passed through Verifa’s document extractor and the resulting fields appear on the document’s extracted_fields response field. All extraction runs on Verifa’s private infrastructure — document content is never sent to third-party services.

check_suitelist of lists of strings or null

Optional override of the verification check suite for documents of this type. Each entry is a [check_name, category, requirement] tuple. When set, this overrides the org-level check_config and the hardcoded default suite for the matching classification.

Errors

400
Bad Request Error
401
Unauthorized Error
422
Unprocessable Entity Error