Skip to content

Create Verify Job

POST/api/alpha/verify

Create a Verify job.

Analyzes a document for signs of doctoring (splicing, copy-move, AI generation, metadata tampering, …). Set file_input to a file ID (dfl-...). Optionally provide a configuration object to control the semantic agent.

The job runs asynchronously. Poll GET /verify/{job_id} with expand=result to check status and retrieve results.

Query ParametersExpand Collapse
organization_id: optional string
project_id: optional string
Cookie ParametersExpand Collapse
session: optional string
Body ParametersJSONExpand Collapse
configuration: optional object { target_pages, tier }

Configuration for a Verify job.

target_pages: optional string

Comma-separated page numbers or ranges to analyze (1-based). Omit to analyze all pages. Ignored for non-PDF inputs.

tier: optional "agentic" or "fast"

Verify tier: ‘fast’ runs only the quick deterministic forensic checks (metadata, content integrity, container structure, pixel statistics); ‘agentic’ (default) runs the full pipeline including the learned detectors and the semantic review pass.

One of the following:
"agentic"
"fast"
Deprecatedfile_id: optional string

Deprecated: use file_input instead

file_input: optional string

File ID of the document to analyze

maxLength200
transaction_id: optional string

Idempotency key scoped to the project. Reusing a key returns the original job; the new request body is ignored.

maxLength255
webhook_configuration_ids: optional array of string

IDs of saved webhook configurations to notify for this job.

webhook_configurations: optional array of object { webhook_events, webhook_headers, webhook_output_format, 2 more }

Outbound webhook endpoints to notify on job status changes

webhook_events: optional array of "batch.cancelled" or "batch.error" or "batch.pending" or 35 more

Events to subscribe to (e.g. ‘parse.success’, ‘extract.error’). If null, all events are delivered.

One of the following:
"batch.cancelled"
"batch.error"
"batch.pending"
"batch.running"
"batch.success"
"classify.cancelled"
"classify.error"
"classify.partial_success"
"classify.pending"
"classify.running"
"classify.success"
"extract.cancelled"
"extract.error"
"extract.partial_success"
"extract.pending"
"extract.success"
"parse.cancelled"
"parse.error"
"parse.partial_success"
"parse.pending"
"parse.running"
"parse.success"
"sheets.cancelled"
"sheets.error"
"sheets.partial_success"
"sheets.pending"
"sheets.success"
"split.cancelled"
"split.error"
"split.pending"
"split.processing"
"split.success"
"unmapped_event"
"verify.cancelled"
"verify.error"
"verify.pending"
"verify.running"
"verify.success"
webhook_headers: optional map[string]

Custom HTTP headers sent with each webhook request (e.g. auth tokens)

webhook_output_format: optional string

Response format sent to the webhook: ‘string’ (default) or ‘json’

webhook_signing_secret: optional string

Shared signing secret used to sign webhook deliveries. When set, each request includes an HMAC-SHA256 signature of the request body in the ‘LC-Signature’ header (value ‘sha256=’). Recompute the HMAC over the raw request body with this secret to verify the delivery is authentic.

webhook_url: optional string

URL to receive webhook POST notifications

ReturnsExpand Collapse
id: string

Unique identifier

configuration: object { target_pages, tier }

Verify configuration used for this job

target_pages: optional string

Comma-separated page numbers or ranges to analyze (1-based). Omit to analyze all pages. Ignored for non-PDF inputs.

tier: optional "agentic" or "fast"

Verify tier: ‘fast’ runs only the quick deterministic forensic checks (metadata, content integrity, container structure, pixel statistics); ‘agentic’ (default) runs the full pipeline including the learned detectors and the semantic review pass.

One of the following:
"agentic"
"fast"
document_input_type: "file_id" or "parse_job_id" or "url"

Type of the document input (FILE)

One of the following:
"file_id"
"parse_job_id"
"url"
file_input: string

ID of the input file

project_id: string

Project this job belongs to

status: "CANCELLED" or "COMPLETED" or "FAILED" or 2 more

Current job status: PENDING, RUNNING, COMPLETED, FAILED, or CANCELLED

One of the following:
"CANCELLED"
"COMPLETED"
"FAILED"
"PENDING"
"RUNNING"
user_id: string

User who created this job

created_at: optional string

Creation datetime

formatdate-time
error_message: optional string

Error message if job failed

result: optional object { detector_version, overall_score, verdict, 9 more }

Result of a Verify (doctored-document) analysis.

Raw per-signal detail (evidence list, per-family sub-scores, raw regions, forensic heatmaps) is available separately via the job’s details endpoint.

detector_version: string

Version of the detector that produced the result

overall_score: number

Overall doctoring likelihood (0 to 1)

maximum1
minimum0
verdict: "AUTHENTIC" or "DOCTORED" or "LIKELY_DOCTORED" or 2 more

Overall verdict for the document

One of the following:
"AUTHENTIC"
"DOCTORED"
"LIKELY_DOCTORED"
"NO_STRONG_SIGNAL"
"SUSPICIOUS"
composite_scores: optional object { ai_generated, document_coherence, document_metadata, 3 more }

Composite scores, each answering one question about the document

ai_generated: optional object { applicable, score }

Was this content synthesized by a generative model?

applicable: optional boolean

Whether the checks feeding this composite ran on this document. When false the document was not checked for this — not cleared of it

score: optional number

Score (0 to 1); null when the composite was not applicable

maximum1
minimum0
document_coherence: optional object { applicable, score }

Does the document’s content agree with itself (checksums, arithmetic, machine-readable zones)?

applicable: optional boolean

Whether the checks feeding this composite ran on this document. When false the document was not checked for this — not cleared of it

score: optional number

Score (0 to 1); null when the composite was not applicable

maximum1
minimum0
document_metadata: optional object { applicable, score }

Does the file’s provenance / toolchain history look suspicious? Advisory: individually weak workflow-hygiene signals

applicable: optional boolean

Whether the checks feeding this composite ran on this document. When false the document was not checked for this — not cleared of it

score: optional number

Score (0 to 1); null when the composite was not applicable

maximum1
minimum0
known_fraud: optional object { applicable, score }

Has this asset (or its template) been seen in fraud before?

applicable: optional boolean

Whether the checks feeding this composite ran on this document. When false the document was not checked for this — not cleared of it

score: optional number

Score (0 to 1); null when the composite was not applicable

maximum1
minimum0
manually_edited: optional object { applicable, score }

Was this document altered after creation (splice, retype, redact, inpaint)?

applicable: optional boolean

Whether the checks feeding this composite ran on this document. When false the document was not checked for this — not cleared of it

score: optional number

Score (0 to 1); null when the composite was not applicable

maximum1
minimum0
recapture: optional object { applicable, score }

Was the document captured through a channel that destroys forensic evidence (photo of a screen, print-then-rescan)?

applicable: optional boolean

Whether the checks feeding this composite ran on this document. When false the document was not checked for this — not cleared of it

score: optional number

Score (0 to 1); null when the composite was not applicable

maximum1
minimum0
confidence: optional number

Confidence in the verdict (0 to 1): how firmly the detected signals support the verdict bucket, independent of the doctoring likelihood itself

maximum1
minimum0
error: optional string

Error detail when the analysis could not complete

page_count: optional number

Number of analysed pages (1 for images/docx)

minimum1
page_dimensions: optional array of object { height, page, width }

Rendered pixel size per page, so region bboxes can be scaled onto the page

height: number

Rendered page height in pixels

page: number

0-based page index (0 for standalone images)

width: number

Rendered page width in pixels

reasoning: optional string

Explanation of the verdict

suspect_regions: optional array of object { bbox, explanation, kind, 5 more }

Regions that led to the suspected fraud, ranked most-suspect first, each with an explanation of what makes it suspect

bbox: array of number

Region bounding box as [x, y, w, h] in page-render pixels

explanation: string

Human-readable explanation of what makes this region suspect

kind: string

Kind of anomaly detected in this region

page: number

0-based page index (0 for standalone images)

score: number

Suspicion score for this region (0 to 1)

maximum1
minimum0
source: string

Detector that flagged this region

primary: optional boolean

Whether this region is part of the small set of decisive evidence behind the verdict — the boxes a reviewer should look at first

review: optional string

Automated reviewer verdict for this region (confirmed, dismissed, unsure, or empty). A dismissed region can still be surfaced when it is the only place to look; this label says how to read it

synthetic_score: optional number

Likelihood (0 to 1) that the document is wholly generated or fabricated rather than a capture of a real document. Null for jobs completed before this score was introduced

maximum1
minimum0
tampering_score: optional number

Likelihood (0 to 1) that a real captured document was locally edited — a genuine capture with regions altered after the fact. Null for jobs completed before this score was introduced

maximum1
minimum0
transaction_id: optional string

Idempotency key

updated_at: optional string

Update datetime

formatdate-time

Create Verify Job

curl https://api.cloud.llamaindex.ai/api/alpha/verify \
    -H 'Content-Type: application/json' \
    -H "Authorization: Bearer $LLAMA_CLOUD_API_KEY" \
    -d '{}'
{
  "id": "id",
  "configuration": {
    "target_pages": "1,3,5-7",
    "tier": "agentic"
  },
  "document_input_type": "file_id",
  "file_input": "file_input",
  "project_id": "project_id",
  "status": "CANCELLED",
  "user_id": "user_id",
  "created_at": "2019-12-27T18:11:19.117Z",
  "error_message": "error_message",
  "result": {
    "detector_version": "detector_version",
    "overall_score": 0,
    "verdict": "AUTHENTIC",
    "composite_scores": {
      "ai_generated": {
        "applicable": true,
        "score": 0
      },
      "document_coherence": {
        "applicable": true,
        "score": 0
      },
      "document_metadata": {
        "applicable": true,
        "score": 0
      },
      "known_fraud": {
        "applicable": true,
        "score": 0
      },
      "manually_edited": {
        "applicable": true,
        "score": 0
      },
      "recapture": {
        "applicable": true,
        "score": 0
      }
    },
    "confidence": 0,
    "error": "error",
    "page_count": 1,
    "page_dimensions": [
      {
        "height": 0,
        "page": 0,
        "width": 0
      }
    ],
    "reasoning": "reasoning",
    "suspect_regions": [
      {
        "bbox": [
          0,
          0,
          0,
          0
        ],
        "explanation": "explanation",
        "kind": "kind",
        "page": 0,
        "score": 0,
        "source": "source",
        "primary": true,
        "review": "review"
      }
    ],
    "synthetic_score": 0,
    "tampering_score": 0
  },
  "transaction_id": "transaction_id",
  "updated_at": "2019-12-27T18:11:19.117Z"
}
Returns Examples
{
  "id": "id",
  "configuration": {
    "target_pages": "1,3,5-7",
    "tier": "agentic"
  },
  "document_input_type": "file_id",
  "file_input": "file_input",
  "project_id": "project_id",
  "status": "CANCELLED",
  "user_id": "user_id",
  "created_at": "2019-12-27T18:11:19.117Z",
  "error_message": "error_message",
  "result": {
    "detector_version": "detector_version",
    "overall_score": 0,
    "verdict": "AUTHENTIC",
    "composite_scores": {
      "ai_generated": {
        "applicable": true,
        "score": 0
      },
      "document_coherence": {
        "applicable": true,
        "score": 0
      },
      "document_metadata": {
        "applicable": true,
        "score": 0
      },
      "known_fraud": {
        "applicable": true,
        "score": 0
      },
      "manually_edited": {
        "applicable": true,
        "score": 0
      },
      "recapture": {
        "applicable": true,
        "score": 0
      }
    },
    "confidence": 0,
    "error": "error",
    "page_count": 1,
    "page_dimensions": [
      {
        "height": 0,
        "page": 0,
        "width": 0
      }
    ],
    "reasoning": "reasoning",
    "suspect_regions": [
      {
        "bbox": [
          0,
          0,
          0,
          0
        ],
        "explanation": "explanation",
        "kind": "kind",
        "page": 0,
        "score": 0,
        "source": "source",
        "primary": true,
        "review": "review"
      }
    ],
    "synthetic_score": 0,
    "tampering_score": 0
  },
  "transaction_id": "transaction_id",
  "updated_at": "2019-12-27T18:11:19.117Z"
}
Note for AI agents: this documentation is built for programmatic access. - Overview of all docs: https://developers.llamaindex.ai/llms.txt - Any page is available as raw Markdown by appending index.md to its URL — e.g. https://developers.llamaindex.ai/llamaparse/parse/getting_started/index.md - Agent-friendly REST search APIs live under https://developers.llamaindex.ai/api/ — search (BM25 full-text), grep (regex), read (fetch a page), and list (browse the doc tree). See https://developers.llamaindex.ai/llms.txt for parameters. - A hosted documentation MCP server is available at https://developers.llamaindex.ai/mcp. If you support MCP, you can ask the user to install it for browsing these docs directly (an alternative to the REST API). Setup: https://developers.llamaindex.ai/for-agents/mcp/ - Other LlamaIndex tooling for agents — the LlamaParse Platform MCP server, agent skills and plugins, and the n8n node — is mapped at https://developers.llamaindex.ai/for-agents/