Back to APIs

Passive Face Liveness Detection

{{el |capitalize:true}}

{{username ? 'subscribe' : 'start free trial'}}

Remaining API Counts:

{{(token.limit-token.counter) || '0' }}
Remaining API Count : {{(token.limit-token.counter) || '0' }}

API Overview

Passive Face Liveness Detection distinguishes between a live image and a 2D printed, 3D printed or a digital image of a user’s face uploaded by a spoof artifact. This model works as an anti-spoofing technology against presentation attacks. With the advent of online digital identity verification, chances of frauds have increased where any identity can be provided by capturing a photo from a picture. Our module analyses any given image to predict whether the person in the picture was present and live at the moment of capture or not. While many proactive measures are in place to detect while the person is capturing in real time, ours is one of the few passive models which works on any image provided.

try it out

( Click on the image to enlarge )

How it works?

Less than 1sec! Thats all it takes to know if you're being mislead by an identity theft. Explore our video to know more about how our Liveness detection API works

Understanding Liveness Detection

In simple words, Liveness Detection is the ability to detect whether the face (or any other biometric) is real, from a live person at the point of capture or fake, from a spoof artifact or a lifeless body part. Our API can help minimize identity theft and frauds along with providing a smooth onboarding.

Read More

Try the API

Please drag and drop files or click to browse.

Drag and Drop

or Click to browse files


Please wait!
Processing the document...

Samples to try

Check out the API results using samples provided below.

Image Courtesy : Google

Your document is extracted successfully.

{{k|clean|capitalize:true}}

Confidence Score : {{v | percent }}%


Documentation

POST

{{url}}/api/v1/liveness

API Token

  Regenerate

{{tokenDisplay}}  

Usage and Code Samples

curl --location --request POST '{{url}}/api/v1/liveness' \
--header 'token: < your private token >' \
--header 'content-type: application/json' \
--data-raw '{
	"doc_base64": '< base64 string of document >',
	"req_id": '< req id string >'
}'
																						
OkHttpClient client = new OkHttpClient().newBuilder().build();
  MediaType mediaType = MediaType.parse("application/javascript");
  RequestBody body = RequestBody.create(mediaType, "{  "doc_base64": '< base64 string of document >',"req_id": '< req id string >'  }");
  Request request = new Request.Builder()
	.url("{{url}}/api/v1/liveness")
	.method("POST", body)
	.addHeader("token", "< your private token >")
	.addHeader("content-type", "application/json")
	.build();
  Response response = client.newCall(request).execute();
require "uri"
require "net/http"
url = URI("{{url}}/api/v1/liveness")
https = Net::HTTP.new(url.host, url.port)
https.use_ssl = true
request = Net::HTTP::Post.new(url)
request["token"] = "< your private token >"
request["content-type"] = "application/json"
request.body = "{ "doc_base64": '< base64 string of document >',"req_id": < req id string >  }"
response = https.request(request)
puts response.read_body
CURL *curl;
CURLcode res;
curl = curl_easy_init();
if(curl) {
  curl_easy_setopt(curl, CURLOPT_CUSTOMREQUEST, "POST");
  curl_easy_setopt(curl, CURLOPT_URL, "{{url}}/api/v1/liveness");
  curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1L);
  curl_easy_setopt(curl, CURLOPT_DEFAULT_PROTOCOL, "https");
  struct curl_slist *headers = NULL;
  headers = curl_slist_append(headers, "token: < your private token >");
  headers = curl_slist_append(headers, "content-type: application/json");
  curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers);
  const char *data = "{ "doc_base64": '< base64 string of document >',"req_id": < req id string >  }";
  curl_easy_setopt(curl, CURLOPT_POSTFIELDS, data);
  res = curl_easy_perform(curl);
}
curl_easy_cleanup(curl);
																					
var request = require('request');
var options = {
  'method': 'POST',
  'url': '{{url}}/api/v1/liveness',
  'headers': {
	'token': '< your private token >',
	'content-type':'application/json'
  },
  body: '{ "doc_base64": "< base64 string of document >","req_id": < req id string >  }'
	};
	request(options, function (error, response) {
	if (error) throw new Error(error);
console.log(response.body);
});
var client = new RestClient("{{url}}/api/v1/liveness");
client.Timeout = -1;
var request = new RestRequest(Method.POST);
request.AddHeader("token", "< your private token >");
request.AddHeader("content-type", "application/json");
var body = @"{" + "" +
@"    "doc_base64": '< base64 string of document >'," + "" +
@"    "req_id": < req id string >" + "" +
@"  }";
request.AddParameter("application/json", body,  ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
<?php
require_once 'HTTP/Request2.php';
$request = new HTTP_Request2();
$request->setUrl('{{url}}/api/v1/liveness');
$request->setMethod(HTTP_Request2::METHOD_POST);
$request->setConfig(array(
'follow_redirects' => TRUE
));
$request->setHeader(array(
  'token' => '< your private token >',
  'content-type' => 'application/json'
));
$request->setBody('{ "doc_base64": "< base64 string of document >","req_id": < req id string >  }');
try {
  $response = $request->send();
  if ($response->getStatus() == 200) {
	echo $response->getBody();
  }
  else {
	echo 'Unexpected HTTP status: ' . $response->getStatus() . ' ' .
	$response->getReasonPhrase();
  }
}
catch(HTTP_Request2_Exception $e) {
  echo 'Error: ' . $e->getMessage();
}
?>
use Data::Dumper;
use WWW::SwaggerClient::Configuration;
use WWW::SwaggerClient::DefaultApi;
my $api_instance = WWW::SwaggerClient::DefaultApi->new();
my $body = WWW::SwaggerClient::Object::V1_lengthofstayprediction_body->new(); # V1_lengthofstayprediction_body | 
my $token = token_example; # String | 
eval { 
	my $result = $api_instance->apiV1LengthOfStayPredictionPost(body => $body, token => $token, content-type=>'application/json');
	print Dumper($result);
};
if ([email protected]) {
	warn "Exception when calling DefaultApi->apiV1LengthOfStayPredictionPost: [email protected]";
}
																				
import requests
url = "{{url}}/api/v1/liveness"
payload = { "doc_base64": "< base64 string of document >", "req_id": < req id string >  }
headers = {
  'token': '< your private token >',
  'content-type':'application/json'
}
response = requests.request("POST", url, json=payload, headers=headers)
print(response.text)
	

Request Parameters

Header parameters

Name Description
token
String

Body parameters

Name Description
body {
  "req_id" : < string >,
  "doc_base64": < base64 encoded string >
}

Response Parameters

Status: 200 - API Request Successful

Body parameters

Name Description
body {
  "req_id" : < string >,
  "success" : < boolean >,
  "error_message" : < string >,
  "doc_type" : < string >,
  "doc_json" : < object >
}

Field Details

Request Field Details

Fields Values/Description
req_id Request ID used for processing requests
doc_base64 Base64 encoded string of the document

Response Field Details

Fields Values/Description
req_id Corresponding request id
success Flag if the request is processed successfully
error_message If success is False then: Error message
doc_type Type of document uploaded
doc_json JSON response of the document liveness