Log in

Resources

The objects the API returns and how they reference each other. Endpoint pages link each field's type to its definition here.

JobResult

The v1 job result. The same object is returned by the synchronous response, the poll, and every future result surface.

FieldTypeDescriptionRequired
jobIdstring (uuid)Single job identity, shared by every path that references this job.Yes
statusJobStatusLifecycle status of a job, derived from results[].status: processing while any result is processing, then error if any result errored, otherwise completed. A job with no files is processing. Each result carries its own verdict once completed. rejected is reserved for future use and is not currently produced.Yes
resultsarray<FileResult>One result per submitted file, in submission order. This is the job's result; read each entry's status, verdict, and expertReview. There is no job-level verdict: two files in one job can reach opposite assessments.Yes
errorJobResultErrorWhy a job or one of its results ended in error (or a job in rejected) status; present only for those statuses. Uses the same code vocabulary as endpoint errors. On the job it is derived from the results: result_unavailable when every errored result carries that code, otherwise internal_error.No
metadataobjectCaller-supplied metadata, echoed back verbatim. Absent when the submission carried none.No
createdAtstring (date-time)When the job was created (ISO 8601).Yes
completedAtstring (date-time)When processing finished (ISO 8601). Absent while the job is processing.No

FileResult

One file's result. status selects the shape: a completed result carries verdict and dimensions, an error result carries error, a processing result carries neither.

One of ProcessingResult, CompletedResult, ErrorResult, selected by status.

ProcessingResult

The analysis has not reached a terminal state.

FieldTypeDescriptionRequired
status"processing"The analysis has not reached a terminal state; poll again.Yes
fileResultFileThe file a result describes.Yes
startedAtstring (date-time) | nullWhen the analysis started (ISO 8601); null until it does.Yes
completedAtstring (date-time) | nullWhen the analysis reached a terminal state (ISO 8601); null while processing.Yes

CompletedResult

The analysis finished and a verdict is available.

FieldTypeDescriptionRequired
status"completed"The analysis finished; verdict and dimensions are set.Yes
fileResultFileThe file a result describes.Yes
startedAtstring (date-time) | nullWhen the analysis started (ISO 8601); null until it does.Yes
completedAtstring (date-time) | nullWhen the analysis reached a terminal state (ISO 8601); null while processing.Yes
verdictResultVerdictThe headline result for one file: the assessment the pipeline's verdict policy selected from the dimensions, and how sure it is.Yes
dimensionsarray<ResultDimension>The axes of analysis behind the verdict, each with its own result. Dimensions that flagged the file come first, then the rest in the pipeline's order.Yes
expertReviewResultExpertReviewPresent when a specialist review was requested for this file.No

ErrorResult

The analysis failed, or its stored result cannot be served. Re-submit the file for a current result.

FieldTypeDescriptionRequired
status"error"The analysis failed or cannot be served; error says why.Yes
fileResultFileThe file a result describes.Yes
startedAtstring (date-time) | nullWhen the analysis started (ISO 8601); null until it does.Yes
completedAtstring (date-time) | nullWhen the analysis reached a terminal state (ISO 8601); null while processing.Yes
errorJobResultErrorWhy a job or one of its results ended in error (or a job in rejected) status; present only for those statuses. Uses the same code vocabulary as endpoint errors. On the job it is derived from the results: result_unavailable when every errored result carries that code, otherwise internal_error.Yes

ResultFile

The file a result describes.

FieldTypeDescriptionRequired
idstring (uuid)Identifier of the file; use it to pick this entry out of results[] when a job has several files.Yes
namestringFile name as submitted.Yes
sizeintegerFile size in bytes.Yes
typestringMIME type as submitted, e.g. image/jpeg.Yes

ResultStatus

Status of one file's result. processing until the analysis reaches a terminal state; completed when a verdict is available; error when the analysis failed (internal_error) or its stored result cannot be served (result_unavailable). The job's status is derived from these: processing while any result is processing, then error if any result errored, otherwise completed.

Values: processing, completed, error

ResultVerdict

The headline result for one file: the assessment the pipeline's verdict policy selected from the dimensions, and how sure it is.

FieldTypeDescriptionRequired
assessmentAssessment | nullHeadline assessment for this file. null when the stored result carries no headline key.Yes
confidenceConfidenceLevelHow sure the analysis is of the enclosing assessment: high, medium, or low. Folded from the detectors' numeric confidence; a specialist states it directly on a review.Yes

ResultDimension

One axis of analysis with its own result. key selects the shape: dimensions with structured evidence carry it under data.

One of AiDetectionDimension, ManipulationDetectionDimension, ReverseImageSearchDimension, CameraOriginDimension, DocumentProvenanceDimension, AiTextDetectionDimension, selected by key.

AiDetectionDimension

Signs of AI generation in the image.

FieldTypeDescriptionRequired
key"ai_detection"Which axis of analysis this is: signs of AI generation in the image.Yes
scorenumberHow strongly the image reads as AI-generated, 0 to 1, as the pipeline's AI-detection model scores it. Near 0 reads as authentic; assessment states the call.Yes
assessmentAssessmentai_generated, likely_ai, uncertain, likely_authentic, or authentic. Absent when the analysis produced none.No
confidenceConfidenceLevelHow sure the analysis is of the enclosing assessment: high, medium, or low. Folded from the detectors' numeric confidence; a specialist states it directly on a review.No
dataAiDetectionDataStructured evidence behind the AI detection score. Present only when the file carried a content credential that verified.No

ManipulationDetectionDimension

Signs of local editing or tampering.

FieldTypeDescriptionRequired
key"manipulation_detection"Which axis of analysis this is: signs of local editing or tampering.Yes
scorenumberHow strongly the image reads as locally edited or tampered, 0 to 1. Near 0 reads as untouched; assessment states the call.Yes
assessmentAssessmentmanipulated, likely_manipulated, uncertain, or authentic. Absent when the analysis produced none.No
confidenceConfidenceLevelHow sure the analysis is of the enclosing assessment: high, medium, or low. Folded from the detectors' numeric confidence; a specialist states it directly on a review.No

ReverseImageSearchDimension

Whether the image, or a close copy, exists online.

FieldTypeDescriptionRequired
key"reverse_image_search"Which axis of analysis this is: whether the image, or a close copy, exists online.Yes
scorenumberThe confidence of the closest candidate the search found, 0 to 1; 0 when it found none. data.matches lists only candidates above the search's similarity floor, so a low score can come with an empty list.Yes
assessmentAssessmentfound_online or not_found. Absent when the analysis produced none.No
confidenceConfidenceLevelHow sure the analysis is of the enclosing assessment: high, medium, or low. Folded from the detectors' numeric confidence; a specialist states it directly on a review.No
dataReverseImageSearchDataStructured evidence behind the reverse image search score: the matches found.Yes

CameraOriginDimension

Whether the file is an original camera capture.

FieldTypeDescriptionRequired
key"camera_origin_verification"Which axis of analysis this is: whether the file is an original camera capture.Yes
scorenumber1 when the file's capture metadata is consistent with an original camera photo and every critical check passed, 0 when it is not.Yes
assessmentAssessmentcamera_origin or no_camera_origin. Absent when the analysis produced none.No
confidenceConfidenceLevelHow sure the analysis is of the enclosing assessment: high, medium, or low. Folded from the detectors' numeric confidence; a specialist states it directly on a review.No
dataCameraOriginDataStructured evidence behind the camera origin score. Present only when the file's metadata names a camera.No

DocumentProvenanceDimension

Where a document came from and how it was produced.

FieldTypeDescriptionRequired
key"document_provenance"Which axis of analysis this is: where a document came from and how it was produced.Yes
scorenumberHow suspicious the document's origin and production look, 0 to 1. Near 0 reads as authentic, near 1 as AI-produced; assessment states the call.Yes
assessmentAssessmentai_generated, uncertain, or authentic. Absent when the analysis produced none.No
confidenceConfidenceLevelHow sure the analysis is of the enclosing assessment: high, medium, or low. Folded from the detectors' numeric confidence; a specialist states it directly on a review.No

AiTextDetectionDimension

Signs of AI-written text in a document.

FieldTypeDescriptionRequired
key"ai_text_detection"Which axis of analysis this is: signs of AI-written text in a document.Yes
scorenumberHow strongly the document's text reads as AI-written, 0 to 1. Near 0 reads as human-written, near 1 as AI-generated; assessment states the call.Yes
assessmentAssessmentai_generated, uncertain, or authentic. Absent when the analysis produced none.No
confidenceConfidenceLevelHow sure the analysis is of the enclosing assessment: high, medium, or low. Folded from the detectors' numeric confidence; a specialist states it directly on a review.No

AiDetectionData

Structured evidence behind the AI detection score. Present only when the file carried a content credential that verified.

FieldTypeDescriptionRequired
provenanceProvenanceA content credential that verified AI generation, as the file carried it.Yes

Provenance

A content credential that verified AI generation, as the file carried it.

FieldTypeDescriptionRequired
issuerstringWho signed the content credential.No
generatorstringThe tool the credential names as the generator.No

ReverseImageSearchData

Structured evidence behind the reverse image search score: the matches found.

FieldTypeDescriptionRequired
matchesarray<WebMatch>Where the image was found online, highest confidence first. Empty when nothing was found.Yes

WebMatch

One place the image, or a close copy, was found online.

FieldTypeDescriptionRequired
urlstring (uri)Page the image appears on.Yes
imageUrlstring (uri)The matched image itself, when the source exposes it.No
sourcestringHost of the match, e.g. example.com.Yes
titlestringPage title, as the source reported it.No
confidencenumberHow closely the found image resembles the submitted one, from 0 to 1: a copy scores near 1, a related but different image lower. Only candidates above the search's similarity floor are returned, ordered highest first.Yes

CameraOriginData

Structured evidence behind the camera origin score. Present only when the file's metadata names a camera.

FieldTypeDescriptionRequired
cameraCameraThe camera the file's metadata names.Yes

Camera

The camera the file's metadata names.

FieldTypeDescriptionRequired
makestringCamera make from the file's metadata.No
modelstringCamera model from the file's metadata.No

DimensionKey

Stable identifier of an axis of analysis.

Values: ai_detection, manipulation_detection, reverse_image_search, camera_origin_verification, document_provenance, ai_text_detection

Assessment

Stable machine key for an assessment, e.g. ai_generated, authentic, camera_origin, found_online. The vocabulary is per pipeline and per dimension; branch on the key, never on any wording.

Type: string

ResultExpertReview

Present when a specialist review was requested for this file.

One of ResolvedExpertReview, PendingExpertReview, selected by status.

ResolvedExpertReview

A review the specialist has completed.

FieldTypeDescriptionRequired
status"resolved"The specialist has completed the review.Yes
requestNotesstring | nullThe note your user wrote when requesting the review; null when they left none.Yes
submittedAtstring (date-time)When the review was requested (ISO 8601).Yes
resultExpertReviewResultA verification specialist's resolved findings for one file.Yes

PendingExpertReview

A review that has no findings to report yet, or never will.

FieldTypeDescriptionRequired
status"new" | "in_progress" | "dismissed"Where the request stands: new until a specialist picks it up, in_progress while they work, dismissed when it was closed without findings.Yes
requestNotesstring | nullThe note your user wrote when requesting the review; null when they left none.Yes
submittedAtstring (date-time)When the review was requested (ISO 8601).Yes

ExpertReviewResult

A verification specialist's resolved findings for one file.

FieldTypeDescriptionRequired
verdictExpertReviewVerdictThe specialist's overall verdict, present when they overrode it. The result's own verdict keeps the automated headline either way.No
dimensionsarray<ExpertReviewDimension>The dimensions the specialist overrode, each with their call. Dimensions not listed stand as the automated analysis reported them.Yes
confidenceConfidenceLevelThe specialist's confidence in this review.Yes
notesstringThe specialist's note to you, when they left one.No
reviewedAtstring (date-time)When the review was completed (ISO 8601).Yes

ExpertReviewVerdict

The specialist's overall verdict, present when they overrode it. The result's own verdict keeps the automated headline either way.

FieldTypeDescriptionRequired
assessmentAssessmentStable machine key for an assessment, e.g. ai_generated, authentic, camera_origin, found_online. The vocabulary is per pipeline and per dimension; branch on the key, never on any wording.Yes

ExpertReviewDimension

One dimension the specialist overrode. Dimensions not listed stand as the automated analysis reported them.

FieldTypeDescriptionRequired
keyDimensionKeyStable identifier of an axis of analysis.Yes
assessmentAssessmentStable machine key for an assessment, e.g. ai_generated, authentic, camera_origin, found_online. The vocabulary is per pipeline and per dimension; branch on the key, never on any wording.Yes

ReviewStatus

Where a requested specialist review stands. result is present only when resolved.

Values: new, in_progress, resolved, dismissed

ConfidenceLevel

How sure the analysis is of the enclosing assessment: high, medium, or low. Folded from the detectors' numeric confidence; a specialist states it directly on a review.

Values: high, medium, low

JobStatus

Lifecycle status of a job, derived from results[].status: processing while any result is processing, then error if any result errored, otherwise completed. A job with no files is processing. Each result carries its own verdict once completed. rejected is reserved for future use and is not currently produced.

Values: processing, completed, error, rejected

JobSummary

One job in a list: jobId, status, metadata, createdAt, and completedAt, each as JobResult defines it. The status is the same derived status the job's result reports; GET /v1/jobs/{jobId} adds results[] and, for an errored job, error.

FieldTypeDescriptionRequired
jobIdstring (uuid)Single job identity, shared by every path that references this job.Yes
statusJobStatusLifecycle status of a job, derived from results[].status: processing while any result is processing, then error if any result errored, otherwise completed. A job with no files is processing. Each result carries its own verdict once completed. rejected is reserved for future use and is not currently produced.Yes
metadataobjectCaller-supplied metadata, echoed back verbatim. Absent when the submission carried none.No
createdAtstring (date-time)When the job was created (ISO 8601).Yes
completedAtstring (date-time)When processing finished (ISO 8601). Absent while the job is processing.No

PaginationMeta

Page-based pagination metadata for list responses.

FieldTypeDescriptionRequired
pageintegerThe page this response contains, counted from 1.Yes
pageSizeintegerNumber of jobs per page used for this response.Yes
totalintegerTotal number of jobs across all pages.Yes
totalPagesintegerTotal number of pages at this pageSize.Yes
hasNextPagebooleantrue when a page after this one exists.Yes

JobResultError

Why a job or one of its results ended in error (or a job in rejected) status; present only for those statuses. Uses the same code vocabulary as endpoint errors. On the job it is derived from the results: result_unavailable when every errored result carries that code, otherwise internal_error.

FieldTypeDescriptionRequired
codeErrorCodeStable machine-readable error code. The same vocabulary is used by every endpoint, by jobs in error or rejected status, and by a result in error status. result_unavailable is a result-only code: the analysis finished but its stored result cannot be served — re-submit the file.Yes
messagestringA fixed sentence for the code, for logs and support tickets. Branch on code, not on this text.Yes

ApiError

Standard error response returned by every public endpoint.

FieldTypeDescriptionRequired
codeErrorCodeStable machine-readable error code. The same vocabulary is used by every endpoint, by jobs in error or rejected status, and by a result in error status. result_unavailable is a result-only code: the analysis finished but its stored result cannot be served — re-submit the file.Yes
messagestringHuman-readable explanation of the error.Yes
detailsApiErrorDetailsStructured context for an error that names what in the request was wrong. Present on invalid_request and unprocessable errors that can point at a field; absent otherwise.No
retryAfterintegerSeconds to wait before retrying. Set for rate_limited and service_unavailable.No

ApiErrorDetails

Structured context for an error that names what in the request was wrong. Present on invalid_request and unprocessable errors that can point at a field; absent otherwise.

FieldTypeDescriptionRequired
issuesarray<ApiErrorIssue>Every problem found, one entry each.Yes

ApiErrorIssue

One thing wrong with the request.

FieldTypeDescriptionRequired
pathstringWhere in the request the problem is, as a dotted path such as metadata.claimId; empty when it concerns the request as a whole.Yes
messagestringWhat is wrong at that path, for logs and support.No
codestringThe validator's own code for the problem, e.g. invalid_format.No

ErrorCode

Stable machine-readable error code. The same vocabulary is used by every endpoint, by jobs in error or rejected status, and by a result in error status. result_unavailable is a result-only code: the analysis finished but its stored result cannot be served — re-submit the file.

Values: invalid_request, unsupported_format, unauthorized, forbidden, not_found, file_too_large, unprocessable, rate_limited, internal_error, service_unavailable, result_unavailable

See Error codes for what each code means and how to respond.