Skip to main content

Base URL

All API requests use the following base URL:

Authentication

Include your API key in the Authorization header as a Bearer token:
Keep your API key secret. Never expose it in client-side code, mobile apps, or public repositories. All API calls must originate from your backend server.

Create a Verification Session

cURL
Response:
201 Created
Use session_token to initialize the Web or Flutter SDK. Use session_url for redirect-based flows.

Upload a Document (Multipart)

cURL
Response:
200 OK
Upload a selfie with the same pattern:
cURL

AML Screening

Screen a person against global sanctions lists, PEP databases, and watchlists.
cURL
Response:
200 OK
Retrieve a previous screening:

Transaction Screening

Screen transactions for AML/CFT risk indicators.
cURL
Response:
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
Response:
200 OK
Supported networks: 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.
When you receive a 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 a data / meta pattern:

Webhook Verification

When you configure webhooks, Verilock signs every payload with HMAC-SHA256 so you can verify authenticity. Each webhook request includes a X-Verilock-Signature header:

Verify the signature

Always use constant-time comparison (timingSafeEqual, compare_digest, hash_equals) to prevent timing attacks.

Webhook payload structure

Common event types: session.completed, session.expired, aml.completed, transaction.screened, wallet.screened.