Verify Response Format
A verify run returns a document-level risk level, a summary, and the detected signals with their evidence. This page explains every field. The result is written once when the run completes and never recomputed, so what you read is what the run found at the time.
Response structure
A processed run looks like this (one signal shown).
Top-level fields
Statuses
Runs move from PROCESSING to exactly one terminal state. A transient failure during processing is retried automatically while the run stays PROCESSING; only a final failure marks the run FAILED.
Output
riskLevel is never a claim of authenticity. LOW means the checks that ran found nothing. An empty signals array does not mean every check applied to the document, and it does not mean the document is genuine.
Signal object
Each entry in signals is one detected category. When several checks detect something in the same category, they are combined into one signal with a single summary and the evidence from each.
Risk assessment
riskAssessment is a categorical grade for this signal: { "type": "LEVEL", "level": "LOW" | "MEDIUM" | "HIGH" }.
The grade reflects the signal in the context of the whole document: a re-save that follows a signature is graded differently from one that precedes it. Model-based detections carry a deterministic grade from calibrated thresholds; all others are graded by an assessment model that reads every detection together. See How signals are graded.
Evidence
Evidence is immutable detector output. It is produced by the check that detected the issue and is never rewritten by the assessment model, so you can rely on it as a record of what was measured. Every evidence item has exactly four fields:
The six types are composable building blocks shared across signals, not one type per signal. A single signal may carry several evidence items of the same or different types. The type value is lowercase; every identifier inside data (each code and component role) is SCREAMING_SNAKE and additive, so handle values you do not recognise. The Signals page explains evidence codes and how to request the current list.
Evidence types
The table summarises each type; the full schema for every variant, with each field’s type and description, is rendered on the Get Verify Run reference under output.signals[].evidence.
Named values
value_comparison, validation, inventory, history, and structural_pattern can carry values read from the document. A named value operates as a non-strongly-typed key-value pair for rendering and evaluating findings:
Examples by type
value_comparison: backdated modification date
Creation and modification timestamps read from the PDF /Info dictionary. The modification date precedes the creation date. The location is a byte range in the file, not a visible page region.
validation: signature no longer seals the file
Only the failed checks are returned. The location is the signature object.
inventory: embedded files
history: an incremental update after the original revision
Two ordered revisions, each anchored to a whole-file byte range.
structural_pattern: opaque mask followed by replacement text
Both components reference the same region on the page.
model_prediction: manipulated image region
data is empty; the locations identify the regions the model flagged.
Locations
Every location carries at least one resolved locator. Detectors omit locators they cannot resolve rather than infer them, so a location may have a byte range but no page, or a PDF object reference but no bounding box.
Verify’s boundingBox uses a top-left origin, which differs from the bottom-left PDF coordinate space. If you overlay Verify evidence on a page you rendered from Parse, scale by the page’s width and height rather than assuming both use the same units.
List summaries
GET /verify_runs returns run summaries rather than full runs. A summary has every top-level field of a run except output, and adds riskLevel so you can scan or filter results without fetching each run.
Filter with status, source, sourceId, riskLevel (processed runs whose result has not been purged), and fileNameContains, which also accepts a run ID or file ID. Sort with sortBy (updatedAt, the default, or createdAt) and sortDir (desc by default). See the List Verify Runs API reference.
Walking the result
Python
TypeScript
Java
Go
For the complete schema, see the Get Verify Run API reference.

