Verifili API Documentation
OverviewCopied!
Welcome to the Verifili API! This documentation provides everything you need to integrate Verifili’s eKYC services into your application or website. Our API enables you to verify customer identities securely and efficiently through document authentication, selfie verification, and inspection generation.
The Verifili API is RESTful, uses JSON for data exchange, and requires authentication via API keys (Access Tokens) for secure access. Follow the steps below to get started.
Base URLCopied!
All API endpoints are accessed via the following base URL:
https://api.verifili.com/v1
AuthenticationCopied!
Verifili uses Bearer Token authentication for all API requests. You must include an
Authorization
header with your Access Token or Customer Token (depending on the endpoint) in every request. Requests without a valid token or with an expired/invalid token will return a
401 Unauthorized
error.
Example header:
Authorization: Bearer <access_token>
Obtaining Your API Keys
To begin, you need an Access Token:
-
Sign up for a Verifili account at https://portal.verifili.com
-
Log in to your dashboard and navigate to the "API Keys" section.
-
Generate a new Access Token. Store it securely—this is your key to authenticate server-side requests.
Note: Never expose your Access Token in client-side code.
Quick Start GuideCopied!
Integrating Verifili into your application involves two main steps:
-
Obtain your API keys (see above).
-
Perform the onboarding process (detailed below).
Follow the onboarding steps to create a customer, verify their identity documents, authenticate their selfie, and generate an inspection report.
Onboarding ProcessCopied!
The onboarding process consists of four sequential API calls. Each step builds on the previous one, ensuring a complete eKYC verification flow.
Step 1: Create a Customer
Create a new customer profile to initiate the onboarding process. This generates a unique Customer ID and a Customer Token, which are required for subsequent steps.
Endpoint
POST /onboarding/create
Request Headers
|
Header |
Value |
Description |
|---|---|---|
|
|
|
Expected response format |
|
|
|
Your API Access Token |
|
|
|
Request body format |
Request Body
|
Field |
Type |
Required |
Description |
|---|---|---|---|
|
|
String |
Yes |
Customer's full name |
|
|
String |
Yes |
Customer's email address |
|
|
String |
No |
Your internal reference ID (optional) |
Example Request
curl -X 'POST' \
'https://api.verifili.com/v1/onboarding/create' \
-H 'accept: application/json' \
-H 'Authorization: Bearer <access_token>' \
-H 'Content-Type: application/json' \
-d '{
"full_name": "John Doe",
"email": "[email protected]",
"external_id": "user123"
}'
Response
|
Field |
Type |
Description |
|---|---|---|
|
|
String |
Unique identifier for the customer |
|
|
String |
Bearer Token for customer-specific requests |
Example Response
{
"Customer ID": "acef5421-630a-4b1c-822d-dbe40d2bef3d",
"Token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."
}
Error Responses
-
400 Bad Request: Missing or invalid parameters. -
401 Unauthorized: Invalid or expired Access Token.
Step 2: Document Authentication and Verification
Submit a customer’s ID document (e.g., ID card or passport) for OCR and verification. Both front and back images are required.
Endpoint
POST /onboarding/ocr_base64
Request Headers
|
Header |
Value |
Description |
|---|---|---|
|
|
|
Expected response format |
|
|
|
Token from Step 1 |
|
|
|
Request body format |
Request Body
|
Field |
Type |
Required |
Description |
|---|---|---|---|
|
|
String |
Yes |
Document type ( |
|
|
String |
Yes |
Base64-encoded front image |
|
|
String |
Yes |
Base64-encoded back image |
Image Requirements:
-
Format: JPG or PNG
-
Size: 34 KB to 4 MB
Example Request
curl -X 'POST' \
'https://api.verifili.com/v1/onboarding/ocr_base64' \
-H 'accept: application/json' \
-H 'Authorization: Bearer <customer_token>' \
-H 'Content-Type: application/json' \
-d '{
"type": "idcard",
"front_image_base64": "data:image/jpeg;base64,/9j/4AAQSkZJRg...",
"back_image_base64": "data:image/jpeg;base64,/9j/4AAQSkZJRg..."
}'
Response
|
Field |
Type |
Description |
|---|---|---|
|
|
String |
Unique ID for the document |
|
|
String |
Verification status ( |
Example Response
{
"document_id": "doc_789e2f1a-4c2b-4e8f-9d3a-5b7c8e9f0a1b",
"status": "pending"
}
Notes
-
Verifili processes the document in the background. Use the
document_idto check the status later (see "Retrieve Check Outcome" below). -
Errors may occur if images are invalid or too large/small.
Step 3: Selfie Authentication
Submit a live selfie photo to verify the customer’s identity against the document provided in Step 2.
Endpoint
POST /onboarding/face_match_base64
Request Headers
|
Header |
Value |
Description |
|---|---|---|
|
|
|
Expected response format |
|
|
|
Token from Step 1 |
|
|
|
Request body format |
Request Body
|
Field |
Type |
Required |
Description |
|---|---|---|---|
|
|
String |
Yes |
Base64-encoded selfie image |
Image Requirements:
-
Format: JPG or PNG
-
Size: 34 KB to 4 MB
Example Request
curl -X 'POST' \
'https://api.verifili.com/v1/onboarding/face_match_base64' \
-H 'accept: application/json' \
-H 'Authorization: Bearer <customer_token>' \
-H 'Content-Type: application/json' \
-d '{
"image_base64": "data:image/jpeg;base64,/9j/4AAQSkZJRg..."
}'
Response
|
Field |
Type |
Description |
|---|---|---|
|
|
String |
Unique ID for the selfie |
|
|
String |
Verification status ( |
Example Response
{
"selfie_id": "selfie_123e4567-e89b-12d3-a456-426614174000",
"status": "pending"
}
Step 4: Generate Customer Inspection
Finalize the onboarding process by generating an inspection report for the customer.
Endpoint
POST /onboarding/inspection
Request Headers
|
Header |
Value |
Description |
|---|---|---|
|
|
|
Expected response format |
|
|
|
Token from Step 1 |
Request Body
No body is required for this request.
Example Request
curl -X 'POST' \
'https://api.verifili.com/v1/onboarding/inspection' \
-H 'accept: application/json' \
-H 'Authorization: Bearer <customer_token>'
Response
|
Field |
Type |
Description |
|---|---|---|
|
|
String |
Unique ID for the inspection report |
|
|
String |
Inspection status ( |
|
|
String |
Outcome ( |
Example Response
{
"inspection_id": "insp_987fcde5-1234-5678-9abc-def012345678",
"status": "completed",
"result": "verified"
}
Additional EndpointsCopied!
Retrieve Check Outcome
Retrieve the detailed outcome of a document or selfie verification.
Endpoint
GET /onboarding/check/<check_id>
Path Parameters
|
Parameter |
Description |
|---|---|
|
|
The |
Request Headers
|
Header |
Value |
Description |
|---|---|---|
|
|
|
Expected response format |
|
|
|
Token from Step 1 |
Example Request
curl -X 'GET' \
'https://api.verifili.com/v1/onboarding/check/doc_789e2f1a-4c2b-4e8f-9d3a-5b7c8e9f0a1b' \
-H 'accept: application/json' \
-H 'Authorization: Bearer <customer_token>'
Example Response
{
"check_id": "doc_789e2f1a-4c2b-4e8f-9d3a-5b7c8e9f0a1b",
"status": "completed",
"result": "verified",
"details": {
"name_match": true,
"document_validity": true,
"ocr_data": {
"full_name": "John Doe",
"document_number": "123456789"
}
}
}
Error HandlingCopied!
Verifili API uses standard HTTP status codes to indicate success or failure:
|
Code |
Description |
Example Response |
|---|---|---|
|
|
Success |
|
|
|
Bad Request |
|
|
|
Unauthorized |
|
|
|
Too Many Requests |
|
|
|
Server Error |
|
Rate LimitsCopied!
-
Default Limit: 100 requests per minute per Access Token.
-
Contact [email protected] to request an increase.
SupportCopied!
For questions or assistance, reach out to our team:
-
Email: [email protected]
-
Documentation: verifili.com/docs
-
Status: status.verifili.com
This documentation provides a robust foundation for integrating Verifili’s eKYC services. Let me know if you’d like to expand on specific sections or add more features!