Document Signature Detection API

{{pageDetails.pageSubtitle}}

{{pageDetails.pageDesc}}

    Cutting-Edge Features    

Why Arya Signature Detection?

Supports Multiple Documents & Formats

Detects signatures across varied types of documents and signature styles, handwritten and digital

Get Signature Confidence Score

Provides a confidence score for each detected signature, indicating the likelihood of authenticity

Signature Area Enhancenment

Uses advanced AI to enhance signature areas, removing noise and improving quality for better readability

Automated Signature Cropping

Automates cropping of signature cards for accurate matching with reference signatures for verification

An AI Platform that you've
always wanted
With more than 80+ APIs, we stand out as the go-to-platform for developers, consistently delivering unparalleled success rates in driving critical decisions.
200 M+

Annual API Volume

95 %+

Accuracy Rate

720 K

Daily API Volume

< 5 Mins

Time to launch

    Effortless AI For Everyone    

More Reasons To Love Arya AI

Hassle-Free,

No Code Platform

Easy to adopt

& integrate

99.99%

API Success Rate

Reliable &

Secure

    Helpful Resources    

Learn More From Our Resources

Blog
Card image cap

29 Feb 2024

A Comprehensive Guide to Document Classification

Data is crucial for any organization or business, especially for banks and...

Blog
Card image cap

5 April 2024

Fraud Detection: A Comprehensive Guide for Lenders

Financial fraud is a huge risk that can lead to organizations and...

Blog
Card image cap

15 April 2023

A Comprehensive Guide to AI Identity Verification

The importance of identity verification for banks and businesses cannot be...

Samples to try

Check out the API results using samples provided below.

Drag and drop files

Supports: PDF, JPG, PNG, etc

Drag and drop files

Supports: PDF, JPG, PNG, etc

Please wait...

Uploaded File

JSON
 
Copied

					  

sign: {{k+1}}

Confidence score :  {{v.confidence | number : 2}}%

No signature detected

Documentation

HTTP Method: Post
Endpoint
{{getEndpoint(url, api_version, pageDetails.ping_endpoint)}}
Copied
API Token
{{tokenDisplay}}
Copied
API Token UAT
postman wrapper button
{{tokenUDisplay}}
Copied

Usage and Code Samples

curl --location --request POST '{{url}}/api/{{api_version}}/{{pageDetails.ping_endpoint}}' \
--header 'token: < your private token >' \
--header 'content-type: application/json' \
--data-raw '{
	"output_format":'snippets',
	"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, "{ "output_format":'snippets', "doc_base64": '< base64 string of document >',"req_id": '< req id string >'  }");
Request request = new Request.Builder()
	.url("{{url}}/api/{{api_version}}/{{pageDetails.ping_endpoint}}")
	.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/{{api_version}}/{{pageDetails.ping_endpoint}}")
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 = "{"output_format":'snippets', "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/{{api_version}}/{{pageDetails.ping_endpoint}}");
  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 = "{"output_format":'snippets', "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/{{api_version}}/{{pageDetails.ping_endpoint}}',
  'headers': {
  'token': '< your private token >',
  'content-type':'application/json'
},
body: '{"output_format":'snippets', "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/{{api_version}}/{{pageDetails.ping_endpoint}}");
ṣclient.Timeout = -1;
var request = new RestRequest(Method.POST);
request.AddHeader("token", "< your private token >");
request.AddHeader("content-type", "application/json");
var body = @"{" + "" +
@"    "output_format": 'snippets'," + "" +
@"    "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/{{api_version}}/{{pageDetails.ping_endpoint}}');
$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('{"output_format":'snippets', "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();
}
?>
import requests
url = "{{url}}/api/{{api_version}}/{{pageDetails.ping_endpoint}}"
payload = {"output_format":'snippets', "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 {
  "output_format" : < string >,
  "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 >,
  "signs" : < dict >,
}

Field Details

Request Field Details
Fields Values/Description
req_id Unique request ID used for processing requests
output_format 'coordinates' or 'snippets' for required output format. (Default value is 'snippets')
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
doc_type Type of KYC document uploaded
error_message If success is False then: Error message
signs
  • Dictionary with number of keys equal to number of signatures detected. For example, signs dictionary can have keys such as "Sign_1", "Sign_2", "Sign_3", and so on
  • signs["Sign_1"] is a dictionary with keys as bounding box coordinates and confidence scores:
    1. "left"
    2. "top"
    3. "height"
    4. "width"
    5. "confidence"