Verifications

Create Verification

Create a new photo authenticity verification by uploading RAW and JPEG files.

This endpoint starts the photo verification process by accepting a RAW image file and its corresponding JPEG. Our advanced algorithms will analyze both files to determine if the JPEG is an authentic representation of the RAW photo, without manipulation or AI generation.

One capture per verification: a JPEG assembled from several RAW frames — a stitched panorama, an exposure blend, a focus stack — cannot be certified against any single one of its source frames. Submit it with one frame and the result is unrated, never flagged: the pair could not be registered, which is a statement about the submission, not about the picture. RAW compression variants our decoder cannot read (Nikon High Efficiency NEF among them) also grade unrated with the variant named in the details.

Authentication Required: Valid API key or JWT token

File Requirements:

  • raw: Original RAW file from camera (.raw, .cr2, .nef, .arw, .dng, etc.). Optional — omit it for an image-only C2PA verification (see below).
  • image: The camera image that should match the RAW — JPEG, PNG, WebP, HEIF/HEIC, AVIF, TIFF, or GIF. Embedded camera EXIF adds a corroborating metadata cross-check when present, but EXIF is advisory: an EXIF-less image (a non-JPEG export or a stripped JPEG) still reaches verified on RAW authenticity + pixel correspondence. A genuine EXIF mismatch still flags. All formats are also accepted in the image-only flow (omit raw), which is C2PA-based and format-agnostic.

Attestation:

  • attestation_id: Pre-validated attestation ID from POST /capture/attestation (optional)

Mobile Capture Flow:

  1. Call POST /capture/challenge to get a challenge nonce
  2. Capture photo and create attestation with file hashes
  3. Call POST /capture/attestation to validate and get attestation_id (fast, small payload)
  4. Upload files here with attestation_id when network is stable (no time pressure)

Processing Flow:

  1. Files are securely uploaded to cloud storage
  2. If attestation_id provided, validate file hashes match the pre-validated attestation
  3. Verification is queued for processing
  4. Multiple analysis algorithms run in parallel
  5. Results are compiled into an authenticity report

Response: Returns verification ID (and security_score if attestation provided)

Billing: A RAW+image pair counts toward your monthly verification quota. An image-only verification (no raw) is free — it does not consume quota or bill overage.

Status Codes:

  • 201: Verification created successfully
  • 402: Payment required (quota exceeded or budget limit reached)
  • 400: Invalid attestation format or attestation_id not found
  • 413: File size too large
  • 422: Attestation validation failed or file hashes don't match
post/v1/verifications/

Request

  • Base URL: https://api.lumethic.com
  • URL: https://api.lumethic.com/v1/verifications/
  • Auth: OAuth2PasswordBearer (a scheme the document does not define)

Headers

X-API-Keystring nullable

Response

Verification created and queued for processing

idstring uuid required

Unique identifier for the created verification

security_scorenumber nullable

Device security score from 0.0 to 1.0 if attestation was provided. Higher values indicate more trustworthy device integrity.

Example response

{
  "id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
}

Changes

No recorded changes to this operation across all 1 revision of this API.