Docs
API referenceComplianceSupportHomeLog inSign up
  • Introduction
  • Guides
    • API Quick Guide
      • Perform AML Screening
      • Perform Document Check
      • Perform Identity Check
      • Perform Proof of Address Check
      • Perform Multi-Bureau Check
    • Web Portal Quick Guide
      • Perform AML Screening
      • Perform Document Check
      • Perform Multi-Bureau Check
      • Send verification link to client
    • Web SDK Guide
      • Web SDK integration guide
      • Web SDK customizations
    • Mobile SDK Guide
      • Mobile SDK integration guide
      • Mobile SDK stages
      • Mobile SDK tracked events
      • Mobile SDK error codes
    • Hosted Solution Guide
      • Integration guide
    • Postman Guide
    • Webhooks Guide
    • Integration Checklist
  • Check Types
    • AML Screening Check
      • Lists coverage
    • Document Check
      • ID coverage
      • RFID authentication
      • Redaction
      • Expected sides per type
    • Identity Check
    • Enhanced Identity Check
    • Proof of Address Check
    • Multi-Bureau Check
      • Service coverage
    • Face Authentication Check
    • Age Estimation Check
    • Automation
  • Other Services
    • AML Risk Profile
    • Bulk Processing
    • Autofill
    • Company Search
    • Address Search
    • Custom Lists
    • Advanced Case Management
  • Access Management
    • Teams and User Roles
    • Single Sign On (SSO)
      • SSO with Okta
      • SSO with Microsoft Entra ID
  • Useful Resources
    • Testing Data
  • API Reference
Powered by GitBook
On this page
  • Overview of flow
  • 1. Create a client
  • 2. Create a live photo
  • 3. Create a document
  • 4. Upload front side image of an ID
  • 5. Create a check
  • 6. Retrieve outcome

Was this helpful?

  1. Guides
  2. API Quick Guide

Perform Identity Check

PreviousPerform Document CheckNextPerform Proof of Address Check

Last updated 1 year ago

Was this helpful?

You can run this check immediately via our . It's publicly available and doesn't require an account.

Overview of flow

1. Create a client

The first step in creating any check is to create a client from your backend server. A client can be a person or a company. For a person, you must provide their first name and last name. Only the name is required for a company.

Example request for creating a client

curl -X POST https://api.complycube.com/v1/clients \
     -H 'Authorization: <YOUR_API_KEY>' \
     -H 'Content-Type: application/json' \
     -d '{
          "type": "person",
          "email": "john.doe@example.com",
          "personDetails":{
               "firstName": "John",
               "lastName" :"Doe"
          }
        }'
const { ComplyCube } = require("@complycube/api");

const complycube = new ComplyCube({ apiKey: "<YOUR_API_KEY>" });

const client = await complycube.client.create({
  type: "person",
  email: "john.doe@example.com",
  personDetails: {
    firstName: "John",
    lastName: "Doe"
  }
});
from complycube import ComplyCubeClient
cc_api = ComplyCubeClient(api_key='<YOUR API KEY>')

new_client = {
    'type':'person',
    'email':'john.doe@example.com',
    'personDetails': {
        'firstName':'John',
        'lastName':'Doe'
    }
}

client = cc_api.clients.create(**new_client)
use ComplyCube\ComplyCubeClient;

$ccapi = new ComplyCubeClient('<YOUR_API_KEY>');

$result = $ccapi->clients()->create(['type' => 'person',
                                     'email' => 'john.doe@example.com',
                                     'personDetails' => ['firstName' => 'John',
                                                         'lastName' => 'Doe']]);
using ComplyCube.Net;
using ComplyCube.Net.Resources.Clients;

var clientApi = new ClientApi(new ComplyCubeClient("<YOUR_API_KEY>"));

var newClient = new ClientRequest {
                           type = "person", 
                           email = "john@smith.com",              
                           personDetails = new PersonDetails { 
                                                      firstName = "John", 
                                                      lastName = "Doe" 
                           }      
                }
                
var client = await clientApi.CreateAsync(newclient);

Example response

The response will contain an id (the Client ID). It is required for the next step.

{
    "id": "5eb04fcd0f3e360008035eb1",
    "type": "person",
    "email": "john.doe@example.com",
    "personDetails": {
        "firstName": "John",
        "lastName": "Doe"
    },
    "createdAt": "2020-01-04T17:24:29.146Z",
    "updatedAt": "2020-01-04T17:24:29.146Z"
}

2. Create a live photo

Upload a live photo by providing the Client ID and document type (e.g. passport, national ID).

Upload a BASE64 encoded selfie image of the customer. The image should be JPG or PNG and between 34 KB and 4 MB in size.

Example request for uploading the live photo

Below is a sample BASE64 encoded file. Download it, and copy its content. Then paste into the data attribute when making the request.

curl -X POST https://api.complycube.com/v1/livePhotos \
     -H 'Authorization: <YOUR_API_KEY>' \
     -H 'Content-Type: application/json' \
     -d '{
          "clientId":"5eb04fcd0f3e360008035eb1",
          "data": "<BASE64_DATA_CONTENT>"
        }'
const livePhoto = await complycube.livePhoto.upload("5eb04fcd0f3e360008035eb1", {
    data: "<BASE64_DATA_CONTENT>"
}
livePhoto = cc_api.livephotos.upload('5eb04fcd0f3e360008035eb1', 
                                     data='<BASE64_DATA_CONTENT>')
$img = $ccapi->livephotos()->upload('5eb04fcd0f3e360008035eb1',
                                   ['data' => '<BASE64_DATA_CONTENT>']);
var livePhotoRequest = new LivePhotoRequest
                    {
                        clientId = "5eb04fcd0f3e360008035eb1",
                        data= "<BASE64_DATA_CONTENT>"
                    };

var livePhoto = await livePhotoApi.UploadAsync(livePhotoRequest);

Example response

The response will contain an id (the Document ID). It is required for the next step.

{
    "id": "5eb1b5f231778a0008d1c3f6",
    "clientId": "5eb04fcd0f3e360008035eb1",
    "downloadLink": "/livePhotos/5eb1b5f231778a0008d1c3f6/download",
    "contentType": "images/jpg",
    "size": 44896,
    "createdAt": "2020-01-01T14:06:44.756Z",
    "updatedAt": "2020-01-01T14:06:44.756Z"
}

3. Create a document

Create a document by providing the Client ID and document type (e.g. passport, national ID).

Example request for creating a client

curl -X POST https://api.complycube.com/v1/documents \
     -H 'Authorization: <YOUR_API_KEY>' \
     -H 'Content-Type: application/json' \
     -d '{
          "clientId":"5eb04fcd0f3e360008035eb1",
          "type": "passport"
        }'
const document = await complycube.document.create("5eb04fcd0f3e360008035eb1", {
  type: "passport"
});
document = cc_api.documents.create('5eb04fcd0f3e360008035eb1', type='passport')
$doc = $ccapi->documents()->create('5eb04fcd0f3e360008035eb1',
                                   ['type' => 'passport']);
var docRequest = new DocumentRequest
                    {
                        clientId = "5eb04fcd0f3e360008035eb1",
                        type = "passport"
                    };
                    
var document = await docApi.CreateAsync(docRequest);

Example response

The response will contain an id (the Document ID). It is required for the next step.

{
    "id": "5ebd40714f23960008c81527",
    "type": "passport",
    "createdAt": "2020-01-04T17:25:21.116Z",
    "updatedAt": "2020-01-04T17:25:21.116Z"
}

4. Upload front side image of an ID

Images should be JPG or PNG and between 34 KB and 4 MB in size.

Example request for uploading the front-side image of a document

Below is a sample BASE64 encoded file. Download it, and copy its content. Then paste into the data attribute when making the request.

curl -X POST https://api.complycube.com/v1/documents/5ebd40714f23960008c81527/upload/front \
     -H 'Authorization: <YOUR_API_KEY>' \
     -H 'Content-Type: application/json' \
     -d '{
          "fileName": "front-test.jpg",
          "data": "<BASE64_DATA_CONTENT>"
        }'
const frontImage = await complycube.document.upload("5ebd40714f23960008c81527", {
    fileName: "front-test.jpg",
    data: "<BASE64_DATA_CONTENT>"
}, "front");
image = { 
    'fileName': 'front-test.jpg',
    'data' : '<BASE64_DATA_CONTENT>'
    }
    
front_img = cc_api.documents.upload('5ebd40714f23960008c81527', 'front', **image)
$up = $ccapi->documents()->upload('5ebd40714f23960008c81527', 
                                  'front', 
                                  ['fileName' => 'front-test.jpg',
                                   'data' => '<BASE64_DATA_CONTENT>']);
var docFront = new ImageRequest
                    {
                        fileName = "front-test.jpg",
                        data= "<BASE64_DATA_CONTENT>"
                    };

var img = await docApi.UploadImageAsync("5ebd40714f23960008c81527", 
                                        "front", 
                                        docFront);

Example response

The response will contain an id (the Live Photo ID). It is required for the next step.

{
    "id": "5eb169302d868c0008828591",
    "fileName": "front-test.jpg",
    "documentSide": "front",
    "downloadLink": "/documents/5ebd40714f23960008c81527/images/5eb169302d868c0008828591/download",
    "contentType": "image/jpg",
    "size": 72716,
    "createdAt": "2020-01-04T17:25:21.116Z",
    "updatedAt": "2020-01-04T17:25:21.116Z"
}

5. Create a check

Create a check by providing the Client ID, Live Photo ID, Document ID and check type.

Example request for creating a check

curl -X POST https://api.complycube.com/v1/checks \
     -H 'Authorization: <YOUR_API_KEY>' \
     -H 'Content-Type: application/json' \
     -d '{
          "clientId":"5eb04fcd0f3e360008035eb1",
          "livePhotoId":"5eb1b5f231778a0008d1c3f6",
          "documentId":"5ebd40714f23960008c81527",
          "type": "identity_check"
        }'
const check = await complycube.check.create("5eb04fcd0f3e360008035eb1", {
        livePhotoId: "5eb1b5f231778a0008d1c3f6",
        documentId: "5ebd40714f23960008c81527",
        type: "identity_check"
});
check = cc_api.check.create('5ebd40714f23960008c81527', 
                                'identity_check', 
                                livePhotoId='5eb169302d868c0008828591'
                                documentId='5ebd40714f23960008c81527')
$result = $ccapi->checks()->create('5eb1276d96be4a0008713af5',
                                   ['type' => 'identity_check',
                                   'livePhotoId' => '5eb169302d868c0008828591',
                                   'documentId' => '5ebd40714f23960008c81527']);
var checkRequest = new CheckRequest
                    {
                        clientId = "5eb04fcd0f3e360008035eb1",
                        documentId = "5ebd40714f23960008c81527",
                        livePhotoId = "5eb169302d868c0008828591",
                        type = "identity_check"
                    };

var check = await checkApi.CreateAsync(checkRequest);

Example response

The response will contain an id (the Check ID). It is required for the next step.

{
    "id": "65c12a6426d2ab000814037e",
    "entityName": "John Doe",
    "type": "identity_check",
    "clientId": "5eb04fcd0f3e360008035eb1",
    "livePhotoId": "5eb1b5f231778a0008d1c3f6",
    "documentId": "5ebd40714f23960008c81527",
    "status": "pending",
    "createdAt": "2020-01-04T17:25:21.116Z",
    "updatedAt": "2020-01-04T17:25:21.116Z"
}

6. Retrieve outcome

ComplyCube will perform the check. You can retrieve a check's outcome and breakdown via the API.

Example request for retrieving the check outcome

curl -X GET https://api.complycube.com/v1/checks/5ebd40714f23960008c81527 \
     -H 'Authorization: <YOUR_API_KEY>'
const check = await complycube.check.get("5ebd40714f23960008c81527");
check = cc_api.checks.get('5ebd40714f23960008c81527')
$check = $ccapi->checks()->get('5ebd40714f23960008c81527');
var check = await checkApi.GetAsync("5ebd40714f23960008c81527");

Example response

{
   "id": "5e94b88a01bce00008c86f06",
   "entityName": "John Doe",
   "type": "identity_check",
   "clientId": "5e94b75d01bce00008c86f02",
   "documentId": "5e94b87b01bce00008c86f03",
   "livePhotoId": "5e94b88901bce00008c86f05",
   "status": "complete",
   "result": {
      "outcome": "clear",
      "breakdown": {
         "faceAnalysis": {
            "faceDetection": "clear",
            "facialSimilarity": "clear",
            "breakdown": {
               "facialSimilarityScore": 100
            }
         },
         "authenticityAnalysis": {
            "spoofedImageAnalysis": "clear",
            "livenessCheck": "clear",
            "breakdown": {
               "livenessCheckScore": 100
            }
         },
         "integrityAnalysis": {
            "faceDetection": "clear"
         }
      }
   },
   "createdAt": "2020-01-04T17:25:21.116Z",
   "updatedAt": "2020-01-04T17:25:21.116Z"
}

Upload a BASE64 encoded image of the front-side of the ID document. Depending on the type and country combination, may be required.

If you have , a notification is sent upon completion of the check.

both sides of the ID
set up webhooks
Learn more about result outcome and breakdown ➔
Demo Postman collection
58KB
base64-encoded-livephoto-sample.txt
Sample - BASE64 encoded selfie
95KB
base64-encoded-id-sample.txt
Sample - BASE64 encoded front-side of passport
Identity check API flow