Automate Trust with the Lumethic API

Seamlessly integrate photo authenticity verification into your workflow. Our REST API provides direct access to our powerful validation engine, allowing you to manage verifications at scale.

How to Get Started

Sign Up

Create a account to get access to the API.

Get Your Key

Generate an API key from your account dashboard.

Start Building

Use the documentation below to integrate and start verifying.

Sign Up to Get Started

Authenticate your requests by passing your API key as a Bearer Token in the Authorization header. You can create and manage your keys in your account dashboard.

Lumethic - Integration API

Lumethic - Integration API (1.0.0)

Download OpenAPI specification:Download

This API documentation contains only the integration endpoints.

Verifications

List Verifications

Retrieve a paginated list of photo authenticity verifications for your account.

This endpoint returns all verifications you've created, with powerful filtering and search capabilities. Each verification represents a comparison between a RAW photo file and its corresponding JPEG to determine authenticity.

Authentication Required: Valid API key or JWT token

Query Parameters:

  • offset: Start position for pagination (0-based index)
  • size: Number of results per page (1-100, default 20)
  • sort_by: Sort field - created_at (default), updated_at, or status
  • sort_order: asc or desc (default)
  • search: Find verifications by name, ID, or photo hash
  • status: Filter by processing status
  • result: Filter by authenticity outcome

Response: Returns a VerificationListResponse containing:

  • items: Array of verification objects with full details
  • total: Total number of verifications matching filters
  • offset: Current offset position
  • size: Number of items returned
  • total_pages: Total pages available

Example Use Cases:

  • Get all completed verifications: ?status=completed
  • Find authentic photos only: ?result=true&status=completed
  • Search by filename: ?search=wedding_photo.jpg
  • Recent verifications first: ?sort_by=created_at&sort_order=desc
Authorizations:
OAuth2PasswordBearer
query Parameters
offset
integer (Offset) >= 0
Default: 0

Number of items to skip for pagination

size
integer (Size) [ 1 .. 100 ]
Default: 20

Number of items to return per page (max 100)

sort_by
string (Sort By)
Default: "created_at"

Field to sort by: 'status', 'created_at', or 'updated_at'

sort_order
string (Sort Order)
Default: "desc"

Sort order: 'asc' for ascending or 'desc' for descending

Search (string) or Search (null) (Search)

Search by verification name, ID, or photo hash

Status (string) or Status (null) (Status)

Filter by verification status: 'pending', 'queued', 'in_progress', 'completed', or 'failed'

Result (string) or Result (null) (Result)

Filter by authenticity result: 'true' for authentic images, 'false' for non-authentic

header Parameters
X-Api-Key (string) or X-Api-Key (null) (X-Api-Key)

Responses

Response samples

Content type
application/json
{
  • "items": [
    ],
  • "total": 0,
  • "offset": 0,
  • "size": 0,
  • "total_pages": 0
}

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.

Authentication Required: Valid API key or JWT token

File Requirements:

  • raw: Original RAW file from camera (.raw, .cr2, .nef, .arw, .dng, etc.)
  • image: Corresponding JPEG file (.jpg, .jpeg) that should match the RAW

Processing Flow:

  1. Files are securely uploaded to cloud storage
  2. Verification is queued for processing
  3. Multiple analysis algorithms run in parallel:
    • SSIM (Structural Similarity Index)
    • Perceptual and difference hashing
    • EXIF metadata comparison
    • Sensor signature verification
    • Histogram analysis
    • Timestamp consistency checks
  4. Results are compiled into an authenticity report

Response: Returns verification ID for tracking progress

Billing: This operation counts toward your monthly verification quota. Paid plans allow overage billing for usage beyond included limits.

Status Codes:

  • 201: Verification created successfully
  • 402: Payment required (quota exceeded or budget limit reached)
  • 400: Invalid file format or missing files
  • 413: File size too large

Example: Upload wedding photos to verify authenticity for portfolio use.

Authorizations:
OAuth2PasswordBearer
header Parameters
X-Api-Key (string) or X-Api-Key (null) (X-Api-Key)
Request Body schema: multipart/form-data
raw
required
string <binary> (Raw)

RAW photo file (.raw, .cr2, .nef, .arw, .dng, etc.)

image
required
string <binary> (Image)

JPEG photo file (.jpg, .jpeg) corresponding to the RAW file

Responses

Response samples

Content type
application/json
{ }

Get Verification

Retrieve detailed results for a specific photo verification.

Get the complete verification report including authenticity analysis results, processing status, and all metadata comparisons for a single verification.

Authentication Required: Valid API key or JWT token

Path Parameters:

  • verification_id: Unique identifier for the verification

Response: Returns a verification object containing:

  • id: Verification unique identifier
  • name: Original filename of the image
  • status: Current processing status (pending, queued, in_progress, completed, failed)
  • result: Authenticity determination (true = authentic, false = not authentic, null = pending)
  • created_at/updated_at: Timestamps
  • results: Array of detailed analysis results from each verification algorithm
  • account_id: Your account identifier
  • rendition_info: Processing transformation details
  • image_thumbnail_url: CDN URL for verification thumbnail
  • raw_metadata/image_metadata: EXIF and technical metadata

Verification Results Include:

  • SSIM similarity scores between RAW and JPEG
  • Perceptual hash comparisons
  • EXIF metadata analysis
  • Sensor signature verification
  • Color histogram comparisons
  • Processing chain validation

Status Codes:

  • 200: Verification found and returned
  • 404: Verification not found or access denied
  • 401: Authentication required

Example: Check if your photojournalism image passed authenticity verification.

Authorizations:
OAuth2PasswordBearer
path Parameters
verification_id
required
string (Verification Id)
header Parameters
X-Api-Key (string) or X-Api-Key (null) (X-Api-Key)

Responses

Response samples

Content type
application/json
{
  • "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  • "status": "pending",
  • "results": [
    ],
  • "result": true,
  • "result_confidence": 0,
  • "raw_metadata": { },
  • "image_metadata": { },
  • "rendition_info": {
    },
  • "rendition_corrected_info": {
    },
  • "raw_photo_hash": "string",
  • "image_photo_hash": "string",
  • "image_thumbnail_url": "string",
  • "name": "string",
  • "account_id": "449e7a5c-69d3-4b8a-aaaf-5c9b713ebc65",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "created_at": "2019-08-24T14:15:22Z"
}

Delete Verification

Delete a verification permanently.

Remove a verification from your account. Once deleted, the verification will no longer be accessible through any endpoints and will return 404 errors.

Authentication Required: Valid API key or JWT token (verification owner only)

Path Parameters:

  • verification_id: Unique identifier for the verification

Effect:

  • Removes verification from your account
  • Verification becomes inaccessible via all endpoints
  • Share links will no longer work
  • This action cannot be undone

Response: Confirmation message

Status Codes:

  • 200: Verification deleted successfully
  • 404: Verification not found
  • 403: Access denied (not verification owner)

Use Cases:

  • Clean up old or unwanted verification results
  • Remove sensitive verification data
  • Manage account storage and organization
Authorizations:
OAuth2PasswordBearer
path Parameters
verification_id
required
string (Verification Id)
header Parameters
X-Api-Key (string) or X-Api-Key (null) (X-Api-Key)

Responses

Response samples

Content type
application/json
{
  • "property1": "string",
  • "property2": "string"
}

Get Verification Share

Get current sharing configuration for a verification.

Retrieve the sharing settings for a verification, including access type and invited users. Use this to check if a verification is currently shared and who has access.

Authentication Required: Valid API key or JWT token (verification owner only)

Path Parameters:

  • verification_id: Unique identifier for the verification

Response: Returns VerificationShareResponse with:

  • verification_id: The verification identifier
  • access_type: Either "anyone_with_link" or "restricted"
  • share_url: Public URL for accessing the shared verification
  • invited_emails: List of email addresses with access (for restricted sharing)

Access Types:

  • anyone_with_link: Anyone with the URL can view the verification
  • restricted: Only invited email addresses can access

Status Codes:

  • 200: Sharing settings returned
  • 404: Verification not found or not shared
  • 403: Access denied (not verification owner)

Use Cases:

  • Check sharing status before sending links to clients
  • Audit who has access to sensitive verification results
  • Verify sharing configuration after setup
Authorizations:
OAuth2PasswordBearer
path Parameters
verification_id
required
string (Verification Id)
header Parameters
X-Api-Key (string) or X-Api-Key (null) (X-Api-Key)

Responses

Response samples

Content type
application/json
{
  • "verification_id": "5bcbf7ac-c998-46ce-aa6e-a0c1a3f1f5bd",
  • "access_type": "restricted",
  • "share_url": "string",
  • "invited_emails": [
    ]
}

Create Or Update Verification Share

Enable or update sharing settings for a verification.

Configure how others can access your verification results. Perfect for sharing authenticity reports with clients, editors, or stakeholders while maintaining control over access.

Authentication Required: Valid API key or JWT token (verification owner only)

Path Parameters:

  • verification_id: Unique identifier for the verification

Request Body: VerificationShareRequest containing:

  • access_type: "anyone_with_link" or "restricted"

Sharing Options:

  • anyone_with_link: Generate a public URL that anyone can access
  • restricted: Only specifically invited email addresses can view

Response: Returns updated VerificationShareResponse with:

  • verification_id: The verification identifier
  • access_type: Configured access type
  • share_url: Public URL for accessing the shared verification
  • invited_emails: Current list of invited users (for restricted access)

Email Notifications: When enabling sharing, invited users receive email notifications with the share link and verification details.

Status Codes:

  • 200: Sharing enabled/updated successfully
  • 404: Verification not found
  • 403: Access denied (not verification owner)

Security: Shared verifications show results but hide account information and internal IDs.

Example: Enable public sharing for a verification to include in a news article.

Authorizations:
OAuth2PasswordBearer
path Parameters
verification_id
required
string (Verification Id)
header Parameters
X-Api-Key (string) or X-Api-Key (null) (X-Api-Key)
Request Body schema: application/json
access_type
required
string (ShareAccessType)
Enum: "restricted" "anyone_with_link"

Responses

Request samples

Content type
application/json
{
  • "access_type": "restricted"
}

Response samples

Content type
application/json
{
  • "verification_id": "5bcbf7ac-c998-46ce-aa6e-a0c1a3f1f5bd",
  • "access_type": "restricted",
  • "share_url": "string",
  • "invited_emails": [
    ]
}

Delete Verification Share

Disable sharing for a verification (make it private).

Remove all sharing settings and revoke access to the verification. The share URL will no longer work and all invited users will lose access.

Authentication Required: Valid API key or JWT token (verification owner only)

Path Parameters:

  • verification_id: Unique identifier for the verification

Effect:

  • Removes all sharing configuration
  • Invalidates the share URL
  • Removes all user invitations
  • Makes verification private to your account only

Response: Confirmation message

Status Codes:

  • 200: Sharing disabled successfully
  • 404: Verification not found
  • 403: Access denied (not verification owner)

Use Cases:

  • Revoke access after collaboration is complete
  • Make sensitive verification results private
  • Clean up sharing after project completion

Note: This action cannot be undone. To share again, you'll need to reconfigure sharing settings and re-invite users.

Authorizations:
OAuth2PasswordBearer
path Parameters
verification_id
required
string (Verification Id)
header Parameters
X-Api-Key (string) or X-Api-Key (null) (X-Api-Key)

Responses

Response samples

Content type
application/json
{
  • "property1": "string",
  • "property2": "string"
}

Add Verification Invite

Invite a specific user to access a shared verification.

Add an email address to the access list for a restricted verification. The invited user will receive an email notification with the share link and can access the verification results.

Authentication Required: Valid API key or JWT token (verification owner only)

Prerequisites: Verification must already be shared with "restricted" access type.

Path Parameters:

  • verification_id: Unique identifier for the verification

Request Body: VerificationShareInviteRequest containing:

  • email: Email address of the user to invite

Response: Returns VerificationShareInviteResponse with:

  • email: The invited email address
  • user_exists: Whether this email belongs to a registered Lumethic user

Email Notification: The invited user receives an email with:

  • Verification share link
  • Information about who shared it
  • Verification date and basic details

Status Codes:

  • 200: User invited successfully
  • 400: Verification is not shared or not set to restricted access
  • 404: Verification not found
  • 403: Access denied (not verification owner)

Use Cases:

  • Share verification results with specific clients or colleagues
  • Grant access to legal teams for evidence review
  • Collaborate with editors on photo authenticity

Note: Users can be invited multiple times safely - duplicates are handled automatically.

Authorizations:
OAuth2PasswordBearer
path Parameters
verification_id
required
string (Verification Id)
header Parameters
X-Api-Key (string) or X-Api-Key (null) (X-Api-Key)
Request Body schema: application/json
email
required
string <email> (Email)

Responses

Request samples

Content type
application/json
{
  • "email": "user@example.com"
}

Response samples

Content type
application/json
{
  • "email": "string",
  • "user_exists": true
}

Remove Verification Invite

Remove a user's access to a shared verification.

Revoke access for a specific email address from a restricted verification. The user will no longer be able to view the verification results.

Authentication Required: Valid API key or JWT token (verification owner only)

Prerequisites: Verification must be shared with "restricted" access type.

Path Parameters:

  • verification_id: Unique identifier for the verification

Request Body: VerificationShareInviteDeleteRequest containing:

  • email: Email address to remove from access list

Response: Confirmation message

Effect:

  • Removes email from the verification's access list
  • User can no longer access the shared verification
  • Previously sent emails/links will no longer work for this user

Status Codes:

  • 200: User access revoked successfully
  • 404: Verification not found or user was not invited
  • 403: Access denied (not verification owner)

Use Cases:

  • Remove access for former team members or collaborators
  • Revoke access after project completion
  • Clean up access lists for security
  • Remove accidentally invited users

Note: This action cannot be undone. To restore access, you'll need to re-invite the user using the add invite endpoint.

Authorizations:
OAuth2PasswordBearer
path Parameters
verification_id
required
string (Verification Id)
header Parameters
X-Api-Key (string) or X-Api-Key (null) (X-Api-Key)
Request Body schema: application/json
email
required
string <email> (Email)

Responses

Request samples

Content type
application/json
{
  • "email": "user@example.com"
}

Response samples

Content type
application/json
{
  • "property1": "string",
  • "property2": "string"
}

Get Verification View Analytics

Get view analytics for a shared verification.

Retrieve analytics data showing how many times a verification share link has been viewed, including total views and daily breakdown for chart visualization.

Authentication Required: Valid API key or JWT token (verification owner only)

Path Parameters:

  • verification_id: Unique identifier for the verification

Query Parameters:

  • start_date: Optional start date for filtering (ISO 8601 format)
  • end_date: Optional end date for filtering (ISO 8601 format)

Response: Returns analytics object containing:

  • total_views: Total number of views in the specified period
  • daily_views: Array of daily view counts for chart visualization
    • Each entry contains: {date: "YYYY-MM-DD", count: number}

Status Codes:

  • 200: Analytics data returned successfully
  • 404: Verification not found
  • 403: Access denied (not verification owner)

Use Cases:

  • Monitor engagement with shared verification results
  • Track how verification shares are performing over time
  • Generate reports on verification visibility
  • Analyze traffic patterns for shared content

Example Response:

{
    "total_views": 156,
    "daily_views": [
        {"date": "2024-01-01", "count": 12},
        {"date": "2024-01-02", "count": 8},
        {"date": "2024-01-03", "count": 15}
    ]
}
Authorizations:
OAuth2PasswordBearer
path Parameters
verification_id
required
string (Verification Id)
query Parameters
Start Date (string) or Start Date (null) (Start Date)

Start date for analytics (ISO 8601 format, e.g., 2024-01-01)

End Date (string) or End Date (null) (End Date)

End date for analytics (ISO 8601 format, e.g., 2024-12-31)

header Parameters
X-Api-Key (string) or X-Api-Key (null) (X-Api-Key)

Responses

Response samples

Content type
application/json
{ }

Get Verification Image

Download the original JPEG image file for a verification.

Retrieve the original JPEG image that was uploaded during verification creation. The image is returned as binary data suitable for direct download or display.

Authentication Required: Valid API key or JWT token (verification owner only)

Path Parameters:

  • verification_id: Unique identifier for the verification

Response: Returns the original JPEG image as binary data with proper headers:

  • Content-Type: image/jpeg
  • Content-Disposition: inline with filename
  • Content-Length: Size of the image file

Status Codes:

  • 200: Image data returned successfully
  • 404: Verification not found or image data not available
  • 403: Access denied (not verification owner)

```

Authorizations:
OAuth2PasswordBearer
path Parameters
verification_id
required
string (Verification Id)
header Parameters
X-Api-Key (string) or X-Api-Key (null) (X-Api-Key)

Responses

Response samples

Content type
application/json
{
  • "detail": [
    ]
}

Public Access

Health Check

Check API health status for monitoring and integration verification.

Simple endpoint to verify that the Lumethic API is operational and responding to requests. Useful for monitoring systems, load balancers, and integration testing.

Authentication: None required - public endpoint

Response: Returns status object containing:

  • status: "healthy" when API is operational

Status Codes:

  • 200: API is healthy and operational

Use Cases:

  • Monitor API availability in production
  • Verify connectivity during integration development
  • Health checks for load balancers and orchestration systems
  • Automated monitoring and alerting systems

Example: Use in monitoring scripts to ensure API availability.

Responses

Response samples

Content type
application/json
{
  • "property1": "string",
  • "property2": "string"
}