Skip to navigation

Verify Signals

Beta

Verify reports findings as Public Signals: the stable categories that can appear in output.signals[].type. A run returns at most one signal per category, carrying one summary, one riskAssessment, and every piece of evidence found in that category. Every supported check runs on every run, and signals that were not detected are not returned: absence means “not detected,” never “checked and clean.”

Signal categories

SignalDetectsIncluded in verify_light
FILE_FORMAT_AND_PDF_STRUCTUREFiles disguised as another type, PDF structure broken or rebuilt by an edit, content appended after the end of the file, and files that read differently to different PDF software.Yes
DIGITAL_SIGNATURE_INTEGRITYContent changed after the document was signed, signatures that do not match the file they are attached to, and signer certificates or timestamps that did not hold up when the signature was made.Yes
PROVENANCE_AND_ISSUER_MARKERSContent credentials (C2PA) that fail to verify, and provenance watermarks whose manifest has been stripped.Yes
REVISION_AND_PRODUCTION_HISTORYDocuments re-saved after issuance, backdated timestamps, image-editing software in the production chain, and a scanned page produced differently from the rest.Yes
CAPTURE_CONVERSION_AND_LAUNDERINGAnnotation layers that hide or change what a reader sees.Yes
PDF_LAYERS_TEXT_AND_FORMSValues covered over and retyped, image patches pasted over a scan, text hidden from readers, form values that differ from what the form displays, values set in a font the rest of the line does not use, and an OCR text layer that disagrees with the page.Yes. The OCR text-layer check runs only when the run parses the document; see advancedOptions.requireParsing.
IMAGE_COMPOSITING_AND_RECONSTRUCTIONRegions spliced in from another image, cloned from elsewhere on the page, or erased and painted back over.Yes
AI_GENERATED_CONTENTGenerator watermarks, content credentials that assert generation, and pages or regions a detection model judges to be synthetic.Yes
CROSS_FIELD_AND_SEMANTIC_CONSISTENCYDates that contradict each other, and names, addresses, identifiers, issuers, or locations stated differently in different places.No
FINANCIAL_RECONCILIATION_AND_SEQUENCE_CONTINUITYTotals that do not match their components, running balances that do not reconcile, and gaps in page numbers, document numbers, statement periods, or transaction order.No

Categories activate over time without a change to the enum, so handle every value. Content-based categories are found by reading the parsed document, which only verify_agentic does.

Evidence codes

Each signal’s evidence carries codes that say what was detected: the code on a validation finding, a history event, a value_comparison, or an inventory, and the code and component roles on a structural_pattern. Codes are stable SCREAMING_SNAKE identifiers. The set grows as new checks are implemented, so treat the codes you receive as an open list and handle values you do not recognise rather than rejecting them. An evidenceId is unique within the run; treat it as an opaque identifier.

For the list of codes currently in use, or to understand a particular code, contact support@extend.ai.

How signals are graded

Each signal’s riskAssessment is graded LOW, MEDIUM, or HIGH in the context of the whole document, because many anomalies are normal consequences of ordinary document workflows and only the surrounding context separates a benign re-save from a suspicious one. The document riskLevel is the highest grade among its signals, and a run with no detections returns LOW. See Response Format for the riskAssessment shape.