Signature Match
Documents & BiometricsCompare a signature on a document with a reference specimen and get a match score.
Detect the signature in a scanned form or cheque, compare it with the specimen on file and return a similarity score with a match verdict, replacing eyeball checks in operations teams.
Endpoint
POST
https://app.emver.io/api/sandbox/v1/signature-match
Authorization: Bearer YOUR_API_KEY
Content-Type: application/json
Accept: application/json
Request parameters
| Field | Type | Description |
|---|---|---|
reference_image
required
|
file | Reference signature image |
document_image
required
|
file | Document image |
threshold
optional
|
number | Match threshold (0–100) |
Example request
cURL
curl -X POST https://app.emver.io/api/sandbox/v1/signature-match \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-d '{
"reference_image": "<base64>",
"document_image": "<base64>",
"threshold": 0
}'
import requests
response = requests.post(
"https://app.emver.io/api/sandbox/v1/signature-match",
headers={
"Authorization": "Bearer YOUR_API_KEY",
"Accept": "application/json",
},
json={
"reference_image": "<base64>",
"document_image": "<base64>",
"threshold": 0
},
timeout=60,
)
response.raise_for_status()
data = response.json()
const response = await fetch("https://app.emver.io/api/sandbox/v1/signature-match", {
method: "POST",
headers: {
"Authorization": "Bearer YOUR_API_KEY",
"Content-Type": "application/json",
"Accept": "application/json",
},
body: JSON.stringify({
"reference_image": "<base64>",
"document_image": "<base64>",
"threshold": 0
}),
});
const data = await response.json();
$response = Http::withToken('YOUR_API_KEY')
->acceptJson()
->post('https://app.emver.io/api/sandbox/v1/signature-match', {
"reference_image": "<base64>",
"document_image": "<base64>",
"threshold": 0
});
$data = $response->json();
Replace YOUR_API_KEY and the placeholder values. Use the switch above to see production URLs.
Response
Structure · 200
{
"status": INTEGER,
"message": STRING,
"data": {
"match": BOOLEAN,
"score": NUMBER,
"signature_detected": BOOLEAN
}
}
Example · 200
{
"status": 200,
"message": "string",
"data": {
"match": true,
"score": 0,
"signature_detected": true
}
}
Error · 4xx / 5xx
{
"status": INTEGER,
"message": STRING
}
See Errors & status codes for what each status means and which calls are billed.
About this API
Upload two images: the reference specimen and the document carrying the signature to verify. The API locates the signature, normalises it and returns a confidence score with a configurable threshold verdict.
Typical uses
- Cheque and mandate processing. Match against the account specimen before clearing.
- Loan and insurance forms. Confirm the applicant signed every page.
Questions
- What image formats are accepted?
- JPEG, PNG and PDF pages. Send the highest resolution you have; scans at 200 dpi or above give the most stable scores.