Verify Configuration
A verify request has three top-level fields. Only file is required.
The same body is accepted by the synchronous POST /verify and asynchronous POST /verify_runs endpoints. The response echoes the resolved configuration in config, including defaults that were applied. Every supported check runs on every run; there is no way to select a subset of signals.
File
Verify analyzes the exact bytes you submit:
Supported file types
Any other type fails with FILE_TYPE_NOT_SUPPORTED. A file whose extension or declared type disagrees with its actual bytes still runs, and the mismatch is reported under FILE_FORMAT_AND_PDF_STRUCTURE.
Config
config is validated strictly: a key that is not listed here returns 400.
engine
Selects which checks run and whether the document is parsed first.
engineVersion
Pins the engine release. Each release fixes the set of checks, the assessment model, and the risk policy together, so results for the same file are stable within a version.
Pin a version in production if you compare results over time or have tuned review thresholds against a particular release.
advancedOptions
Advanced options for the run. Unknown keys return 400.
requireParsing
If true, this forces the verify run to parse the document if it has not already been parsed in Extend. Parsing is for checks that require OCR, like detecting mismatches with the text layer. verify_agentic requires this to be true, and rejects false with 400. verify_light parses only when this is true. Defaults to false for verify_light to reduce latency.
In both cases, if the file has already been parsed in Extend with Verify’s default parse settings and you reuse the fileId without zero data retention (ZDR), the parsed results are used instead of parsing again. The response always reports what happened in config.advancedOptions.requireParsing. On verify_light, enabling the parse adds the parse-backed checks only; the content checks require verify_agentic.
Metadata
metadata is a free-form JSON object, up to 10 KB, that is stored with the run and returned on every read. Use it to carry your own identifiers.
The reserved extend:usage_tags key takes an array of strings for categorizing runs; tags may contain only letters, numbers, hyphens, and underscores. See How Credits Work for how usage tags appear in reporting.
Rate limits
POST /verify and POST /verify_runs count against your organization’s run-endpoint limit, GET /verify_runs and GET /verify_runs/{id} against the read limit, and cancel and delete against the write limit. See Rate Limits.
Full example
Python
TypeScript
Java
Go
cURL
For the full request schema, see the Verify File API reference.

