API Reference

Complete REST API documentation for VeriPlus compliance platform with code examples in JavaScript, Python, and cURL.

API Reference

VeriPlus provides a comprehensive REST API for integrating identity verification, AML screening, deepfake detection, and crypto compliance into your applications.

Base URL

Production: https://api.veriplus.co.uk/api/v3
Sandbox:    https://sandbox-api.veriplus.co.uk/api/v3

Authentication

All API requests require authentication via API key in the Authorization header:

Authorization: Bearer your_api_key_here

Get your API key from the Dashboard Settings.

Keep Your API Key Secret

Never expose API keys in client-side code or public repositories. Rotate keys immediately if compromised.

Quick Start

const apiKey = 'vp_live_abc123...';
const baseUrl = 'https://api.veriplus.co.uk/api/v3';
 
async function createApplicant() {
  const response = await fetch(`${baseUrl}/applicants`, {
    method: 'POST',
    headers: {
      'Authorization': `Bearer ${apiKey}`,
      'Content-Type': 'application/json'
    },
    body: JSON.stringify({
      firstName: 'John',
      lastName: 'Doe',
      email: '[email protected]',
      dateOfBirth: '1990-01-15',
      country: 'GB'
    })
  });
 
  const data = await response.json();
  console.log('Applicant created:', data.applicantId);
  return data;
}

API Endpoints Overview

CategoryEndpointsPurpose
Authentication/auth/*API key management
Applicants/applicants/*Create and manage applicants
Verifications/verifications/*Identity verification workflows
AML Screening/aml/*Sanctions, PEP, adverse media searches
Deepfake Detection/deepfake/*AI-generated content detection
KYT Crypto/kyt/*Cryptocurrency wallet screening
Webhooks/webhooks/*Event notifications

Request Format

All POST/PUT requests must include Content-Type: application/json header and valid JSON body.

Common Request Parameters

ParameterTypeDescription
organizationIdstringYour organisation ID (auto-detected from API key)
idempotencyKeystringOptional unique key to prevent duplicate requests
callbackUrlstringOptional webhook URL for async results

Example with Idempotency

const idempotencyKey = `verif_${Date.now()}_${Math.random()}`;
 
const response = await fetch(`${baseUrl}/verifications`, {
  method: 'POST',
  headers: {
    'Authorization': `Bearer ${apiKey}`,
    'Content-Type': 'application/json',
    'Idempotency-Key': idempotencyKey
  },
  body: JSON.stringify({
    applicantId: 'app_abc123',
    profileType: 'STANDARD'
  })
});

Response Format

All API responses follow a consistent structure:

Success Response (200-299)

{
  "success": true,
  "data": {
    "id": "resource_id",
    "status": "completed",
    // ... resource-specific fields
  },
  "meta": {
    "timestamp": "2024-01-15T10:30:00Z",
    "requestId": "req_xyz789"
  }
}

Error Response (400-599)

{
  "success": false,
  "error": {
    "code": "INSUFFICIENT_CREDITS",
    "message": "Not enough credits to perform this operation",
    "details": {
      "required": 2,
      "available": 0
    }
  },
  "meta": {
    "timestamp": "2024-01-15T10:30:00Z",
    "requestId": "req_xyz789"
  }
}

Rate Limits

PlanRequests/MinRequests/Day
Free10100
Basic301,000
Professional10010,000
Enterprise500Unlimited

Rate limit headers included in all responses:

X-RateLimit-Limit: 30
X-RateLimit-Remaining: 25
X-RateLimit-Reset: 1642251600

Rate Limit Exceeded

When rate limit is exceeded, API returns 429 Too Many Requests. Implement exponential backoff in your client.

Pagination

List endpoints support cursor-based pagination:

GET /api/v3/applicants?limit=50&cursor=abc123

Parameters:

  • limit: Number of results (default: 20, max: 100)
  • cursor: Pagination cursor from previous response

Response:

{
  "success": true,
  "data": [...],
  "pagination": {
    "hasMore": true,
    "nextCursor": "xyz789",
    "total": 1234
  }
}

Filtering and Sorting

Most list endpoints support filtering and sorting:

// Filter by status and sort by creation date
GET /api/v3/verifications?status=COMPLETED&sortBy=createdAt&order=desc
 
// Filter by date range
GET /api/v3/applicants?createdFrom=2024-01-01&createdTo=2024-01-31

Common Query Parameters:

  • status: Filter by status
  • createdFrom, createdTo: Date range filters (ISO 8601)
  • sortBy: Field to sort by
  • order: asc or desc

Credit Costs

Each API operation consumes credits from your organisation's balance. The following costs are automatically pulled from our database:

Verification

Verification TypeCredits
Document Verification1
Identity Verification (Standard)1
Identity Verification (Enhanced)2
Biometric Verification3

AML

AML Check TypeCredits
Sanctions Check1
PEP Screening2
Adverse Media Check3
Basic AML Check1
Enhanced AML Check2
Monitoring (per month)1

Deepfake Detection

Media TypeCredits
Image Analysis2
Video Analysis5
Audio Analysis3
Document Analysis4

KYT Crypto

KYT OperationCredits
Wallet Check2
Monitoring (per month)1

Check your credit balance:

GET /api/v3/credits/balance

Sandboxing

Use the sandbox environment for testing without consuming credits:

https://sandbox-api.veriplus.co.uk/api/v3

Sandbox Behavior:

  • No credits consumed
  • Simulated responses (predictable results)
  • Test API keys start with vp_test_
  • Same endpoints as production

Webhooks

VeriPlus can send real-time event notifications to your server:

POST /api/v3/webhooks
 
{
  "url": "https://yourdomain.com/webhooks/veriplus",
  "events": [
    "verification.completed",
    "aml.match_found",
    "deepfake.scan_completed"
  ],
  "secret": "your_webhook_secret"
}

See Webhooks Documentation for complete event reference.

SDKs and Libraries

Official SDKs:

  • JavaScript/TypeScript: npm install @veriplus/node-sdk
  • Python: pip install veriplus-sdk
  • PHP: Coming soon
  • Ruby: Coming soon

Community SDKs available on GitHub.

API Versioning

Current version: v3

  • Breaking changes will result in new version (v4, v5, etc.)
  • Previous versions supported for 12 months after deprecation
  • Version specified in URL path: /api/v3/...

Support

Next Steps

Ready to integrate?

Get your API key and start building in minutes.

Ready to get started?

Start with our free plan. No credit card required.

We value your privacy

We use cookies to enhance your browsing experience, serve personalized content, and analyze our traffic. By clicking "Accept All", you consent to our use of cookies. Read our Privacy Policy and Cookie Policy for more information.