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 (1.0.0)
Download OpenAPI specification:Download
This API documentation contains only the integration endpoints.
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:
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
- 200
- 422
{- "items": [
- {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "status": "pending",
- "results": [
- {
- "verificator_id": "a39f274c-e5dd-413a-a1c8-279dad7fb321",
- "verification_id": "5bcbf7ac-c998-46ce-aa6e-a0c1a3f1f5bd",
- "details": { },
- "result": true,
- "confidence_score": 0,
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "updated_at": "2019-08-24T14:15:22Z",
- "created_at": "2019-08-24T14:15:22Z"
}
], - "result": true,
- "result_confidence": 0,
- "raw_metadata": { },
- "image_metadata": { },
- "rendition_info": {
- "image_thumbnail_url": "string",
- "raw_thumbnail_url": "string",
- "rendition_longest_edge": 0,
- "rendition_thumbnail_longest_edge": 0,
- "crop_percentage": 0,
- "crop_pixels": {
- "top": 0,
- "bottom": 0,
- "left": 0,
- "right": 0
}, - "rotation_degrees": 0,
- "resize_info": {
- "width_scale": 0,
- "height_scale": 0
}, - "bounding_box": {
- "corners": [
- [
- 0,
- 0
]
]
}, - "original_image_width": 0,
- "original_image_height": 0,
- "original_raw_width": 0,
- "original_raw_height": 0,
- "rendition_image_width": 0,
- "rendition_image_height": 0,
- "rendition_raw_width": 0,
- "rendition_raw_height": 0,
- "thumbnail_image_width": 0,
- "thumbnail_image_height": 0,
- "thumbnail_raw_width": 0,
- "thumbnail_raw_height": 0,
- "exp_shift": 0,
- "gamma_power": 0,
- "gamma_slope": 0,
- "lens_correction_aperture": 0,
- "lens_correction_focal_length": 0,
- "lens_correction_distance": 0,
- "lens_correction_crop_factor": 0
}, - "rendition_corrected_info": {
- "image_thumbnail_url": "string",
- "raw_thumbnail_url": "string",
- "rendition_longest_edge": 0,
- "rendition_thumbnail_longest_edge": 0,
- "crop_percentage": 0,
- "crop_pixels": {
- "top": 0,
- "bottom": 0,
- "left": 0,
- "right": 0
}, - "rotation_degrees": 0,
- "resize_info": {
- "width_scale": 0,
- "height_scale": 0
}, - "bounding_box": {
- "corners": [
- [
- 0,
- 0
]
]
}, - "original_image_width": 0,
- "original_image_height": 0,
- "original_raw_width": 0,
- "original_raw_height": 0,
- "rendition_image_width": 0,
- "rendition_image_height": 0,
- "rendition_raw_width": 0,
- "rendition_raw_height": 0,
- "thumbnail_image_width": 0,
- "thumbnail_image_height": 0,
- "thumbnail_raw_width": 0,
- "thumbnail_raw_height": 0,
- "exp_shift": 0,
- "gamma_power": 0,
- "gamma_slope": 0,
- "lens_correction_aperture": 0,
- "lens_correction_focal_length": 0,
- "lens_correction_distance": 0,
- "lens_correction_crop_factor": 0
}, - "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"
}
], - "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:
- Files are securely uploaded to cloud storage
- Verification is queued for processing
- 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
- 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:
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
- 201
- 422
{ }
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:
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
- 200
- 422
{- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "status": "pending",
- "results": [
- {
- "verificator_id": "a39f274c-e5dd-413a-a1c8-279dad7fb321",
- "verification_id": "5bcbf7ac-c998-46ce-aa6e-a0c1a3f1f5bd",
- "details": { },
- "result": true,
- "confidence_score": 0,
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "updated_at": "2019-08-24T14:15:22Z",
- "created_at": "2019-08-24T14:15:22Z"
}
], - "result": true,
- "result_confidence": 0,
- "raw_metadata": { },
- "image_metadata": { },
- "rendition_info": {
- "image_thumbnail_url": "string",
- "raw_thumbnail_url": "string",
- "rendition_longest_edge": 0,
- "rendition_thumbnail_longest_edge": 0,
- "crop_percentage": 0,
- "crop_pixels": {
- "top": 0,
- "bottom": 0,
- "left": 0,
- "right": 0
}, - "rotation_degrees": 0,
- "resize_info": {
- "width_scale": 0,
- "height_scale": 0
}, - "bounding_box": {
- "corners": [
- [
- 0,
- 0
]
]
}, - "original_image_width": 0,
- "original_image_height": 0,
- "original_raw_width": 0,
- "original_raw_height": 0,
- "rendition_image_width": 0,
- "rendition_image_height": 0,
- "rendition_raw_width": 0,
- "rendition_raw_height": 0,
- "thumbnail_image_width": 0,
- "thumbnail_image_height": 0,
- "thumbnail_raw_width": 0,
- "thumbnail_raw_height": 0,
- "exp_shift": 0,
- "gamma_power": 0,
- "gamma_slope": 0,
- "lens_correction_aperture": 0,
- "lens_correction_focal_length": 0,
- "lens_correction_distance": 0,
- "lens_correction_crop_factor": 0
}, - "rendition_corrected_info": {
- "image_thumbnail_url": "string",
- "raw_thumbnail_url": "string",
- "rendition_longest_edge": 0,
- "rendition_thumbnail_longest_edge": 0,
- "crop_percentage": 0,
- "crop_pixels": {
- "top": 0,
- "bottom": 0,
- "left": 0,
- "right": 0
}, - "rotation_degrees": 0,
- "resize_info": {
- "width_scale": 0,
- "height_scale": 0
}, - "bounding_box": {
- "corners": [
- [
- 0,
- 0
]
]
}, - "original_image_width": 0,
- "original_image_height": 0,
- "original_raw_width": 0,
- "original_raw_height": 0,
- "rendition_image_width": 0,
- "rendition_image_height": 0,
- "rendition_raw_width": 0,
- "rendition_raw_height": 0,
- "thumbnail_image_width": 0,
- "thumbnail_image_height": 0,
- "thumbnail_raw_width": 0,
- "thumbnail_raw_height": 0,
- "exp_shift": 0,
- "gamma_power": 0,
- "gamma_slope": 0,
- "lens_correction_aperture": 0,
- "lens_correction_focal_length": 0,
- "lens_correction_distance": 0,
- "lens_correction_crop_factor": 0
}, - "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:
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
- 200
- 422
{- "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:
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
- 200
- 422
{ }
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:
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
- 422
{- "detail": [
- {
- "loc": [
- "string"
], - "msg": "string",
- "type": "string"
}
]
}
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
- 200
{- "property1": "string",
- "property2": "string"
}