Check a statement for tamper signals
Upload a statement and get evidence about whether the file was edited: reconciliation, revisions, producer, fonts, overlays drawn over text, and date order. This is evidence, never a verdict. A forger who regenerates the file with the bank's own library and recomputes every balance passes every check. `clean` means no signals; a `checks_skipped` warning means a check could not run on part of the file. HTTP 200 with error signals is a normal outcome. Counts as one parse for your plan. The anonymous demo key can call it with a Turnstile token: it shares the demo's per-IP budget, and its report carries the same additive `_demo` envelope as a demo parse. The file is read in memory and never written to disk.
Header Parameters
Request Body
multipart/form-data
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
application/json
application/json
application/json
application/json
application/json
application/json
curl -X POST "https://example.com/v1/inspect" \ -F pdf="string"{ "bank": "string", "format_version": "string", "signals": [ { "code": "string", "severity": "warn", "detail": "string", "page": 0, "row": 0 } ], "clean": true}{ "error": "string", "error_class": "string", "format_version": "string", "marker_coverage": 0}{ "error": "string", "error_class": "string", "format_version": "string", "marker_coverage": 0}{ "error": "string", "error_class": "string", "format_version": "string", "marker_coverage": 0}{ "error": "string", "error_class": "string", "format_version": "string", "marker_coverage": 0}{ "error": "string", "error_class": "string", "format_version": "string", "marker_coverage": 0}{ "error": "string", "error_class": "string", "format_version": "string", "marker_coverage": 0}Redact a bank statement POST
Upload a PDF (or XLSX) statement and get the same document back with names, account numbers and BVN masked in place. The response body is the redacted file. The file is read in memory and never written to disk. Counts as one parse for your plan. Over a free cap it returns 402: there is no canned sample for a redacted document. Sync only: a request holds one of the worker's engine slots for the length of the redaction.
Self-host
Two paths. MIT engine for on-prem parsing. Full cloud stack for the complete API.