Skip to content

Create Verify Job

client.alpha.verify.create(VerifyCreateParams { organization_id, project_id, configuration, 5 more } params, RequestOptionsoptions?): VerifyCreateResponse { id, configuration, document_input_type, 9 more }
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.

ParametersExpand Collapse
params: VerifyCreateParams { organization_id, project_id, configuration, 5 more }
organization_id?: string | null

Query param

formatuuid
project_id?: string | null

Query param

formatuuid
configuration?: Configuration | null

Body param: Configuration for a Verify job.

target_pages?: string | null

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

tier?: "agentic" | "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?: string | null

Body param: Deprecated: use file_input instead

file_input?: string | null

Body param: File ID of the document to analyze

maxLength200
transaction_id?: string | null

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

maxLength255
webhook_configuration_ids?: Array<string> | null

Body param: IDs of saved webhook configurations to notify for this job.

webhook_configurations?: Array<WebhookConfiguration> | null

Body param: Outbound webhook endpoints to notify on job status changes

webhook_events?: Array<"batch.cancelled" | "batch.error" | "batch.pending" | 35 more> | null

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?: Record<string, string> | null

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

webhook_output_format?: string | null

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

webhook_signing_secret?: string | null

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?: string | null

URL to receive webhook POST notifications

ReturnsExpand Collapse
VerifyCreateResponse { id, configuration, document_input_type, 9 more }

Response for a Verify job.

id: string

Unique identifier

configuration: Configuration { target_pages, tier }

Verify configuration used for this job

target_pages?: string | null

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

tier?: "agentic" | "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" | "parse_job_id" | "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" | "COMPLETED" | "FAILED" | 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?: string | null

Creation datetime

formatdate-time
error_message?: string | null

Error message if job failed

result?: Result | null

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" | "DOCTORED" | "LIKELY_DOCTORED" | 2 more

Overall verdict for the document

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

Composite scores, each answering one question about the document

ai_generated?: AIGenerated { applicable, score }

Was this content synthesized by a generative model?

applicable?: 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?: number | null

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

maximum1
minimum0
document_coherence?: DocumentCoherence { applicable, score }

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

applicable?: 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?: number | null

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

maximum1
minimum0
document_metadata?: DocumentMetadata { applicable, score }

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

applicable?: 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?: number | null

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

maximum1
minimum0
known_fraud?: KnownFraud { applicable, score }

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

applicable?: 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?: number | null

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

maximum1
minimum0
manually_edited?: ManuallyEdited { applicable, score }

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

applicable?: 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?: number | null

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

maximum1
minimum0
recapture?: Recapture { applicable, score }

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

applicable?: 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?: number | null

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

maximum1
minimum0
confidence?: 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?: string | null

Error detail when the analysis could not complete

page_count?: number

Number of analysed pages (1 for images/docx)

minimum1
page_dimensions?: Array<PageDimension>

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?: string

Explanation of the verdict

suspect_regions?: Array<SuspectRegion>

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

bbox: Array<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?: 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?: 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?: number | null

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?: number | null

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?: string | null

Idempotency key

updated_at?: string | null

Update datetime

formatdate-time

Create Verify Job

import LlamaCloud from '@llamaindex/llama-cloud';

const client = new LlamaCloud({
  apiKey: process.env['LLAMA_CLOUD_API_KEY'], // This is the default and can be omitted
});

const verify = await client.alpha.verify.create();

console.log(verify.id);
{
  "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/