Signature detection for lending packets
Loan files are a stack of pages, and only some of those pages must be signed. Run detection on the pages you require, and hold the file when one of them comes back with no mark.
A new account starts with 10 detection credits. The playground asks you to sign in, then calls the same API.
A checklist, not a model of the loan
Underwriting already knows which exhibits need a signature: the note, the application, a rider. Encode that as data on your side (signatureRequired on a page). Ask the detector only whether a mark is present. Amazon Textract's Analyze Lending API is a different product. It classifies mortgage packages and is priced on the Textract pricing page (the examples there use $0.07 per supported page). This API does not classify documents. The price comparison for signature-only calls is on the Textract alternative page.
Per-page images
This sample matches the image API that is live today. pages is your own list. The endpoint does not take an array of URLs. One request, one image.
async function missingSignaturePages(pages, apiKey) {
const missing = [];
for (const page of pages) {
const response = await fetch("https://signature-detector.com/api/detect", {
method: "POST",
headers: {
"Content-Type": "application/json",
"x-api-key": apiKey,
},
body: JSON.stringify({ imageUrl: page.imageUrl }),
});
const data = await response.json();
if (!response.ok) {
throw new Error(data.error || `Page ${page.number} failed (${response.status})`);
}
if (page.signatureRequired && data.result.count === 0) {
missing.push(page.number);
}
}
return missing;
}Parallelize with Promise.all if you need to. The route does not apply its own rate limit. A 402 means the account is out of credits. Stop the batch there instead of failing one page at a time with the same error. Refunds happen when the detector fails, not when you simply run out of credits.
One PDF, pages in the JSON
With PDF input, you do not loop requests. Send pdfUrl or pdfBase64 and read the top-level pages array. Page numbers in that array are 1-based. creditsUsed is the page count, or 0 when the same file is cached. Compare page numbers to your required-page list. Empty detections on a required page is the same hold as count === 0 in the sample above. The field contract is on PDF signature detection, and a Python version is in Detect signatures in PDFs with Python.
Hand the box to a processor
A count is a coarse filter. The processor still needs to see the mark on the right line. Pass bbox through, or crop it with the method in extracting signature crops. Do not infer the borrower's identity from the box position.
Credits
- $10 per 100,000 credits, which is $0.0001 each. An image that is not served from cache spends 1 credit. A PDF spends 1 credit per page.
- 10 credits are added when the account is created.
- $1 minimum purchase. That is 10,000 credits. There is no subscription.
- Credits do not expire. The balance stays on the account until a detection spends it. A failed detection puts the credit back. Repeating an image or an identical PDF returns
cached: trueand does not spend a credit. On a PDF that hit iscreditsUsed: 0. - Buy credits from the dashboard or estimate a volume on the pricing page.
FAQ
Can the API tell a note from a disclosure?
No. You decide which page numbers require a signature. The API returns marks on the image or PDF page you send. It does not classify the document type.
How should a multi-page PDF be sent?
Prefer pdfUrl or pdfBase64. pages, count, and creditsUsed are top-level fields. You can still render each required page to an image and send imageUrl or imageBase64, one request per page. An uncached image spends 1 credit. A PDF spends 1 credit per page.
Does this satisfy a lending regulation?
No. Finding a visual mark is not a compliance opinion, a TRID check, or confirmation that the borrower signed the right line. It is a filter so underwriters do not open a packet that is blank where a signature was required.
What does a 12-page packet cost?
A 12-page PDF that is not cached costs 12 credits, one per page, including pages with no mark. At $0.0001 per credit that is $0.0012. Sending 12 page images is the same 12 credits. If the balance is below 12, the PDF call returns HTTP 402 and nothing is charged. The same PDF bytes sent again return creditsUsed 0.
Do unused credits roll off at month end?
No. Credits do not expire. A new account starts with 10 credits. The minimum purchase is $1 for 10,000 credits. There is no monthly plan.
Related reading
- PDF signature detection
Send pdfUrl or pdfBase64. pages, count, and creditsUsed are top-level.
- Check if a document is signed
Turn a detection count into a review decision without treating it as identity proof.
- KYC intake
Flag application images that have no signature mark before a reviewer opens them.
- Contracts
Record where signature marks sit on an agreement, then crop them for a human.
- Signature detection API
Request fields, response boxes, credits, and the errors the endpoint actually returns.
- Textract vs Signature Detector
The arithmetic behind a 100,000-page signature bill.
Try it on your own file
Upload an image in the playground, or create an API key from the dashboard after signup. Read the API docs for the request fields.
