Base URL
All API requests use the following base URL:Authentication
Include your API key in theAuthorization header as a Bearer token:
Create a Verification Session
cURL
201 Created
session_token to initialize the Web or Flutter SDK. Use session_url for redirect-based flows.
Upload a Document (Multipart)
cURL
200 OK
Upload a selfie with the same pattern:
cURL
AML Screening
Screen a person against global sanctions lists, PEP databases, and watchlists.cURL
200 OK
Transaction Screening
Screen transactions for AML/CFT risk indicators.cURL
200 OK
Batch screening
Screen up to 100 transactions in a single request:cURL
Wallet Screening
Screen crypto wallet addresses against known illicit activity databases.cURL
200 OK
ethereum, bitcoin, polygon, bsc, solana, tron, arbitrum, optimism.
Error Responses
All errors follow a consistent JSON structure:Validation error example
422 Unprocessable Entity
Rate Limiting
Every response includes rate-limit headers:Default rate limit is 120 requests/minute per API key. Contact us if you need higher limits for production workloads.
429, wait for the number of seconds specified in Retry-After before retrying. Our SDKs handle this automatically with exponential backoff.
Pagination
List endpoints return paginated results using adata / meta pattern:
Webhook Verification
When you configure webhooks, Verilock signs every payload with HMAC-SHA256 so you can verify authenticity. Each webhook request includes aX-Verilock-Signature header:
Verify the signature
Webhook payload structure
session.completed, session.expired, aml.completed, transaction.screened, wallet.screened.
