verifiliDefault Page

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:

  1. Sign up for a Verifili account at https://portal.verifili.com

  2. Log in to your dashboard and navigate to the "API Keys" section.

  3. 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:

  1. Obtain your API keys (see above).

  2. 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

Accept

application/json

Expected response format

Authorization

Bearer <access_token>

Your API Access Token

Content-Type

application/json

Request body format

Request Body

Field

Type

Required

Description

full_name

String

Yes

Customer's full name

email

String

Yes

Customer's email address

external_id

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

Customer ID

String

Unique identifier for the customer

Token

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

Accept

application/json

Expected response format

Authorization

Bearer <customer_token>

Token from Step 1

Content-Type

application/json

Request body format

Request Body

Field

Type

Required

Description

type

String

Yes

Document type (idcard, passport)

front_image_base64

String

Yes

Base64-encoded front image

back_image_base64

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

document_id

String

Unique ID for the document

status

String

Verification status (pending, completed, failed)

Example Response
{
  "document_id": "doc_789e2f1a-4c2b-4e8f-9d3a-5b7c8e9f0a1b",
  "status": "pending"
}
Notes
  • Verifili processes the document in the background. Use the document_id to 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

Accept

application/json

Expected response format

Authorization

Bearer <customer_token>

Token from Step 1

Content-Type

application/json

Request body format

Request Body

Field

Type

Required

Description

image_base64

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

selfie_id

String

Unique ID for the selfie

status

String

Verification status (pending, completed, failed)

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

Accept

application/json

Expected response format

Authorization

Bearer <customer_token>

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

inspection_id

String

Unique ID for the inspection report

status

String

Inspection status (completed, failed)

result

String

Outcome (verified, unverified)

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

check_id

The document_id or selfie_id from previous steps

Request Headers

Header

Value

Description

Accept

application/json

Expected response format

Authorization

Bearer <customer_token>

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

200

Success

{ "status": "completed" }

400

Bad Request

{ "error": "Missing full_name" }

401

Unauthorized

{ "error": "Invalid token" }

429

Too Many Requests

{ "error": "Rate limit exceeded" }

500

Server Error

{ "error": "Internal 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:

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!