Photocert REST API
1Introduction
Welcome to Photocert's REST API documentation.
Our platform delivers digital media authentication services – allowing you to verify the authenticity of digital media (JPG, JPEG, PNG and PDF). This flexibility empowers you to streamline your processes without risking the integrity of your results due to fraudulent data.
This guide outlines the essential steps to get started, covering authentication, media upload, and elaboration results.
2Base URL
All API requests should be directed to:
https://prod.photocert.co.uk/
Enterprise customers: If your organisation has a dedicated environment, your base URL follows the format https://<insuranceCompanyName>.photocert.co.uk/. Your account manager will confirm the exact subdomain assigned to your company.3Workflow Overview
The general workflow for using Photocert’s API is as follows:
- Authentication
Submit your credentials to obtain an access token.
- Media Upload
Upload a media file (JPEG, JPG, PNG or PDF) along with any optional metadata.
- Media Authentication
Retrieve authentication results using either a media or event identifier.
4Response Status
Our API uses standard HTTP Status Codes to indicate the result of a request. These codes are divided into three main ranges:
2xxSuccess
Indicates that the request was successfully received, understood, and accepted.
4xxClient Error
Indicates that there is an issue with the request (e.g., missing parameter, incorrect syntax, or invalid credentials).
5xxServer Error
Indicates that the server encountered an error while processing the request. In our context, this refers to a Photocert server error.
# List of Status Codes
|
Status Code |
Status Message |
Description |
|---|---|---|
|
200 |
200 OK |
The request was successful. |
|
201 |
201 Created |
The request was successful, and a new resource will be created as a result. |
|
400 |
400 Bad Request |
The request cannot be processed due to invalid syntax or parameters. |
|
401 |
401 Unauthorized |
The request requires authentication or the provided credentials are invalid. |
|
403 |
403 Forbidden |
The client does not have permission to perform the request. |
|
404 |
404 Not Found |
The requested resource could not be found on the server. |
|
405 |
405 Not Supported |
The request method is not supported by the server. |
|
429 |
429 Too Many Requests |
The client has sent too many requests in a given period. |
|
500 |
500 Internal Server Error |
The server encountered an unexpected error while processing the request. |
5Error Handling
Our API responses include a responseStatus object that provides additional information about any errors that occur. This object contains:
responseStatus.message
Provides details to help resolve the error
responseStatus.id
A unique identifier for the request, useful for troubleshooting.
Exceptions may be raised for various reasons. The responseStatus.message is designed to provide sufficient information to resolve the error. Below are some common exceptions for each endpoint.
# Authentication Errors
- Customer ID not valid
The provided Customer ID is invalid.
- Customer Key not valid
The provided Customer Key is invalid.
- Mandatory attributes not included
Please include both a Customer ID and a Customer Key.
- Maximum quota exceeded
The maximum quota for requests has been exceeded.
# Media Upload Errors
- Authorization error
The customer does not have permission to access this endpoint.
- Invalid date format
The date format should be YYYY-MM-DDThh:mm:ss<ZSuffix>.
- Invalid GPS format
GPS coordinates must be in decimal degrees (e.g., 41.40338, 2.17403).
- Mandatory attribute missing:
A media file is required.
- File name length exceeded:
The maximum file name length is 256 characters.
- Maximum quota exceeded:
The maximum quota for requests has been exceeded.
- File size exceeded
The maximum file size is 20 MB.
- Single media file limit
Only one media file can be uploaded at a time.
- Token expired
The token has expired. Please generate a new token using the Authentication request.
- Invalid token
The provided token is not valid.
- Unsupported file extension
Supported extensions are JPEG, JPG, PNG,HEIC, and PDF.
# Authentication Result Errors
- Authorization error
The customer does not have permission to access this endpoint.
- Invalid Event ID
The provided Event ID is invalid.
- Mandatory attribute missing
Please include either an Event ID or a Media ID.
- Attribute request limit exceeded
The maximum limit of 10 attributes per request has been exceeded.
- Maximum quota exceeded
The maximum quota for requests has been exceeded.
- Invalid Media ID
The provided Media ID is invalid.
- Conflicting identifiers
To request results, include either Event IDs or Media IDs—but not both in the same request.
- Token expired
The token has expired. Please generate a new token using the Authentication request.
- Invalid token
The provided token is not valid.
6Authentication
To access our API and authenticate your session, you must send your credentials (a clientId and secretKey) provided by Photocert. These credentials are used to generate an access_token that authorizes your subsequent API calls.
The client sends HTTP requests with an Authorization header that contains the word Basic followed by a space and a Base64-encoded string formatted as clientId:secretKey. Using this information, an access_token is generated, which is required to access other endpoints. This access_token remains valid for 3600 seconds (1 hour); after that, a new token must be generated.
Supported authentication schemes:
- Authentication Basic — used to authenticate your session by sending your Base64-encoded credentials.
- Authentication Bearer — once you receive an
access_token, use it with the Bearer scheme to authorize subsequent requests.
# Headers
|
HEADER |
STATUS |
TYPE |
DESCRIPTION |
|---|---|---|---|
|
| Required |
string |
|
# Attributes
|
ATTRIBUTE |
STATUS |
TYPE |
DESCRIPTION |
|---|---|---|---|
|
| Required |
string |
|
# Sample Request
curl --location 'https://example.auth.region.amazoncognito.com/oauth2/token' \ --header 'Authorization: Basic EXAMPLE_BASE64_CREDENTIALS' \ --header 'Content-Type: application/x-www-form-urlencoded' \ --data-urlencode 'grant_type=client_credentials'
# Sample Response
{
"access_token": "EXAMPLE_ACCESS_TOKEN",
"expires_in": 3600,
"token_type": "Bearer"
}7Media Upload
After you complete the Authentication request and obtain a token, you can upload media files for authentication. Note that each request permits the upload of a single media . Supported media files formats are: JPEG, JPG, PNG and PDF.
You may include supplementary information with the upload request. This additional data assists in analysing the media file and enables the grouping of images under a single event. When multiple media files share the same event identifier, the API calculates an overall authenticity score based on the individual media results.
Upon a successful upload, the API returns an event.id and a unique media.id, which you can use to retrieve the media authentication results.
# Headers
|
HEADER |
STATUS |
TYPE |
DESCRIPTION |
|---|---|---|---|
|
| Required |
string |
Authentication Bearer token received after a successful Authentication request. |
|
| Optional |
string |
Groups media files sent in multiple requests. When several files share the same |
|
| Optional |
string |
Differentiates elaboration parameters based on event type. Comprises two parts: Category / Subcategory |
|
| Optional |
string |
Differentiates elaboration parameters based on the source (e.g. app, web, third-party provider). |
|
| Optional |
string |
Differentiates elaboration parameters based on the media type (e.g. car, invoice). |
|
| Optional |
string |
Date used to analyse the media file authentication by comparing it with the media metadata (e.g. time of incident). Format: |
|
| Optional |
string |
GPS coordinate used for media authentication by comparing it with the media file's metadata. Format: latitude;longitude (e.g. |
|
| Optional |
dictionary |
Additional information that can be attached to the media file. |
|
| Optional |
string |
Event-level metadata as a JSON object string. Max 4000 characters. |
# Customer Metadata
This section describes additional x-amz-meta-customerMetadata that may be attached to each media file to facilitate grouping and further processing.
customerInstanceId, customerInstanceType, and mediaProcessingType fields are being deprecated from customerMetadata. They will be promoted to dedicated top-level fields in a future API version to give them greater prominence and a clearer structure.
|
PARAMETER |
STATUS |
TYPE |
DESCRIPTION |
|---|---|---|---|
|
| DEPRECATING |
string |
A unique identifier used to group media files submitted in multiple requests for the same event. When several files share |
|
| DEPRECATING |
dictionary |
Specifies the instance type using two attributes: primary / secondary. Being moved to a top-level field. |
|
| DEPRECATING |
array |
Indicates specific processing tasks to be carried out on the media. Available options: WAT, AUTH. Default if not specified: |
Example: The metadata should be provided as a JSON object in string format
"{\"customerInstanceId\":\"EXAMPLE_INSTANCE\",\"customerInstanceType\":{\"primary\":\"ExampleType\",\"secondary\":\"EXAMPLE_PERIOD\"},\"mediaProcessingType\":[\"WAT\",\"AUTH\"]}"# Attributes
|
ATTRIBUTE |
STATUS |
TYPE |
DESCRIPTION |
|---|---|---|---|
|
| Required |
bytes |
The media file to be uploaded. Maximum file size is 20 MB and the maximum name length is 255 characters. |
# Request Example
curl --location --request PUT 'https://example.api.com/api/5_4/{alias}/media_upload' \
--header 'x-amz-meta-referenceDate: 2025-03-15T12:00:00Z' \
--header 'x-amz-meta-referenceGps: EXAMPLE_LATITUDE;EXAMPLE_LONGITUDE' \
--header 'x-amz-meta-customerEventId: EXAMPLE_EVENT_ID' \
--header 'x-amz-meta-customerEventType: EXAMPLE_EVENT_TYPE' \
--header 'x-amz-meta-customerMediaSource: EXAMPLE_MEDIA_SOURCE' \
--header 'x-amz-meta-customerMediaType: EXAMPLE_MEDIA_TYPE' \
--header 'x-amz-meta-customerMetadata: "{\"insuranceInternalId\": \"EXAMPLE_INSURANCE_ID\", \"policyNumber\": \"EXAMPLE_POLICY_NUMBER\", \"vehicleNumberPlate\": \"EXAMPLE_VEHICLE_REG\", \"claimDate\": \"2025-01-01T12:00:00Z\"}"' \
--header 'Content-Type: image/jpeg' \
--header 'Authorization: Bearer EXAMPLE_TOKEN' \
--data '@@example.jpg'# Sample Response
{
"responseStatus": {
"id": "EXAMPLE_RESPONSE_ID",
"code": "201 CREATED",
"message": "Resource successfully uploaded.",
"timestamp": "2025-03-15T12:00:00Z"
},
"event": {
"id": "EXAMPLE_EVENT_ID",
"customerEventId": "EXAMPLE_CUSTOMER_EVENT_ID",
"mediaTotal": 1,
"customerEventType": null,
"customerEventMetadata": null
},
"media": {
"id": "EXAMPLE_MEDIA_ID",
"name": "example.jpg",
"referenceDate": "2025-03-15T12:00:00Z",
"referenceGPS": {
"latitude": 41.40338,
"longitude": 2.17403
},
"uploadDate": "2025-03-15T12:00:00Z",
"ipAddress": "EXAMPLE_IP_ADDRESS",
"customerMediaSource": null,
"customerMediaType": null,
"customerMetadata": null
}
}8Elaboration Result
8.1Authentication
Using these requests, you can retrieve the authentication analysis results for media and events by specifying either a mediaId or an eventId.
Please note that tests employing computer vision or machine learning may require extended processing time depending on the characteristics of the media file. As a result, the response you receive might include pending results. Furthermore, if potential fraud is detected in the media file—even if not all results have been finalised—the API will still provide an overall authentication assessment.
# Headers
|
HEADER |
STATUS |
TYPE |
DESCRIPTION |
|---|---|---|---|
|
| Required |
string |
Authentication Bearer token received after a successful Authentication request. |
# Attributes
|
ATTRIBUTE |
STATUS |
TYPE |
DESCRIPTION |
|---|---|---|---|
|
| Optional |
string |
Unique event identifier received after a successful Media Upload request. |
|
| Optional |
string |
Unique media identifier received after a successful Media Upload request. |
Note: At least one attribute must be provided for the request to be successful.
- Media authentication (
/api/5_1/media_authentication): accepts up to 10mediaIdvalues per request — all are processed. - Event authentication v5.2 (
/api/5_2/event): accepts 1–10eventIdvalues per request — all are processed. Returns a different response structure (see below).
# Sample Request
Event Authentication — v5.2 (/api/5_2/event)
Accepts up to 10 eventId values. Returns an events array.
curl --request POST 'https://example.api.com/api/5_2/event' \
--header 'Authorization: Bearer EXAMPLE_TOKEN' \
--header 'Content-Type: application/json' \
--data-raw '{
"eventId": ["EXAMPLE_EVENT_ID_1", "EXAMPLE_EVENT_ID_2"]
}'Media Authentication — v5.1 (/api/5_1/media_authentication)
curl --request POST 'https://example.api.com/api/5_1/media_authentication' \
--header 'Authorization: Bearer EXAMPLE_TOKEN' \
--header 'Content-Type: application/json' \
--data-raw '{
"mediaId": ["EXAMPLE_MEDIA_ID"]
}'# Sample Response
Event Authentication — v5.2
{
"responseStatus": {
"id": "EXAMPLE-RESPONSE-ID",
"code": "200",
"message": "Resource found with given information.",
"timestamp": "2025-03-15T12:00:00Z"
},
"events": [
{
"id": "EXAMPLE-EVENT-ID",
"creationDate": "2025-03-15T12:00:00Z",
"path": "EXAMPLE_THUMBNAIL_PATH",
"customerEventId": "EXAMPLE_CUSTOMER_EVENT_ID",
"customerEventType": "claim-property",
"customerEventMetadata": {},
"type": {
"code": 1000,
"primary": "Claim",
"secondary": "Motor"
},
"status": {
"id": 100,
"value": "COMPLETED",
"description": "description"
},
"elaborations": {},
"authenticity": {
"status": "COMPLETED",
"message": "Group test results are completed",
"result": {
"code": "GREEN",
"message": "No tampering detected"
},
"mediaTotal": 1,
"mediaList": [
{
"id": "EXAMPLE_MEDIA_ID",
"status": "COMPLETED",
"message": "Group test results are completed",
"result": {
"code": "GREEN",
"message": "No tampering detected"
},
"sourceFileName": "example.jpg",
"path": "EXAMPLE_THUMBNAIL_PATH"
}
]
},
"additionalData": {
"contactData": null,
"eventCustomData": null,
"eventAppData": null,
"lastModule": null,
"instanceList": []
}
}
]
}Media Authentication — v5.1
{
"responseStatus": {
"id": "REDACTED_RESPONSE_ID",
"code": "200 OK",
"message": "Resource found with given information.",
"timestamp": "2025-03-15T12:00:00Z"
},
"mediaList": [
{
"id": "REDACTED_MEDIA_ID",
"name": "randomphoto.jpg",
"customerMediaSource": "UserUpload",
"customerMediaType": "JPEG",
"referenceDate": "2023-07-01T10:30:00Z",
"referenceGPS": {
"latitude": 41.40338,
"longitude": 2.17403
},
"uploadDate": "2023-07-01T10:35:00Z",
"ipAddress": "REDACTED_IP",
"ipAddressGPS": {
"latitude": 51.5074,
"longitude": -0.1278
},
"path": "REDACTED_PATH",
"eventId": "REDACTED_EVENT_ID",
"source": "API",
"elaboration": ["AUTH", "WAT"],
"type": {
"code": 123456,
"primary": "Photo",
"secondary": "High resolution"
},
"status": "Completed",
"message": "Group test results are completed",
"result": {
"code": "GREEN",
"message": "No tampering detected"
},
"groupTestList": [
{
"id": "General Analysis",
"status": "Completed",
"message": "Individual test results are completed",
"result": {
"code": "YELLOW",
"message": "Inconclusive"
},
"indivTestList": [
{
"id": "File Size",
"status": "Completed",
"message": "Test result completed",
"parameterList": [
{
"id": "Standard file size",
"value": 800,
"description": "KB"
}
],
"result": {
"code": "YELLOW",
"message": "Not standard",
"resultList": [
{
"id": null,
"value": 0.19,
"description": "MB",
"path": null,
"content": []
}
]
}
},
{
"id": "Resolution",
"status": "Completed",
"message": "Test result completed",
"parameterList": [
{
"id": "Standard resolution",
"value": 2,
"description": "MP"
}
],
"result": {
"code": "GREEN",
"message": "Standard",
"resultList": [
{
"id": null,
"value": 2.98,
"description": "MP",
"path": null,
"content": []
}
]
}
},
{
"id": "Aspect Ratio",
"status": "Completed",
"message": "Test result completed",
"parameterList": [
{
"id": "Standard aspect ratio",
"value": "1:1, 4:3, 16:9",
"description": "Aspect ratio"
}
],
"result": {
"code": "YELLOW",
"message": "Not standard",
"resultList": [
{
"id": null,
"value": "2356:1267",
"description": "Aspect ratio",
"path": null,
"content": []
}
]
}
}
]
},
{
"id": "Metadata",
"status": "Completed",
"message": "Individual test results are completed",
"result": {
"code": "YELLOW",
"message": "Inconclusive"
},
"indivTestList": [
{
"id": "Photo Editing",
"status": "Completed",
"message": "Test result completed",
"parameterList": [],
"result": {
"code": "RED",
"message": "Found",
"resultList": [
{
"id": null,
"value": "Photoshop",
"description": "Editing tool",
"path": null,
"content": []
}
]
}
},
{
"id": "Date Comparison",
"status": "Completed",
"message": "Test result completed",
"parameterList": [
{
"id": "Between media creation date and reference date - Lower threshold",
"value": -1,
"description": "day"
},
{
"id": "Between media creation date and media upload date - Lower threshold",
"value": 180,
"description": "day"
}
],
"result": {
"code": "GREY",
"message": "Metadata not found",
"resultList": [
{
"id": "Comparison between media creation date and reference date",
"value": null,
"description": "days",
"path": null,
"content": []
}
]
}
},
{
"id": "Location Comparison",
"status": "Completed",
"message": "Test result completed",
"parameterList": [
{
"id": "Between media GPS and reference GPS - Lower threshold",
"value": 150,
"description": "meter"
}
],
"result": {
"code": "GREY",
"message": "Metadata not found",
"resultList": [
{
"id": "Comparison between media GPS and upload GPS",
"value": null,
"description": "kilometer",
"path": null,
"content": []
}
]
}
}
]
},
{
"id": "Tampering Localization",
"status": "Completed",
"message": "Individual test results are completed",
"result": {
"code": "RED",
"message": "Potential Fraud"
},
"indivTestList": [
{
"id": "Pixel Analysis",
"status": "Completed",
"message": "Test result completed",
"parameterList": [],
"result": {
"code": "RED",
"message": "Found",
"resultList": [
{
"id": "Pixel analysis score",
"value": 0,
"description": "Score",
"path": "REDACTED_PATH",
"content": []
}
]
}
},
{
"id": "Compression test 1",
"status": "Completed",
"message": "Test result completed",
"parameterList": [],
"result": {
"code": null,
"message": null,
"resultList": [
{
"id": "Compression test 1 result",
"value": null,
"description": "",
"path": "REDACTED_PATH",
"content": []
}
]
}
}
]
}
]
}
]
}Result Interpretation
# Result Interpretation
The authentication results are presented using a four-colour semaphore system:
The authentication results are structured in a hierarchical manner, consisting of four levels:
- IndividualA single authentication test performed on a specific component.
- GroupIndividual tests grouped together based on shared characteristics.
- MediaAn assessment of the media file as a whole, taking into account the aggregated results of each group of tests.
- EventResults obtained from a collection of media files within a single event.
The specific tests and parameters utilized for a media file can vary depending on factors such as the file type and its origin. It is important to note that the sensitivity of most tests can be adjusted, and the parameters can be optimized after analysing the customer data.
We consider three groups of media files:
- Photocert App / Web App — authentication of photos (JPEG) and documents (PDFs) captured or submitted through Photocert's white-label app or web application.
- Photos — authentication of any pre-existing digital photo in JPG, JPEG, or PNG format.
- PDFs — authentication of any pre-existing PDF document.
Photocert App / Web App
# Photocert App / Web App
Point-of-capture authentication can be applied to photos (JPEG) and documents (PDFs) when they are submitted through Photocert’s white-label app or web application. These solutions can be seamlessly deployed as standalone applications or integrated into existing customer-facing workflows. They are compatible with all major platforms including iOS, Android, and web browsers.
One of the key advantages of point-of-capture authentication is that the verification process occurs at the moment the media file is captured or submitted. This means that the authentication analysis focuses on identifying and understanding various variables that could potentially indicate fraud, extending beyond the image or document content itself.
The analysis for Photocert App / Web App authentication includes the following tests:
-
General Analysis
- This group of tests primarily focus on the digital characteristics of the visual media file.
-
Certification
- The certification process incorporates a proprietary algorithm designed to identify any tampering with pictures and documents from the moment of capture or submission until they are uploaded.
- This analysis is particularly effective when applied to native applications, as the algorithm can directly access the hardware of the smartphone. However, in the case of web applications, the algorithm operates through the browser, which reduces its robustness.
- It is worth noting that the process does not necessarily require a live internet connection to function, but having a live connection enhances its effectiveness.
-
Device Tampering
- This analysis seeks to identify whether the mobile operating system has undergone any modifications (jailbreak / rooted). If such alterations have been made, it increases the potential for tampering. It is worth noting that this analysis is exclusive to native applications, as they provide access to the underlying operating system required for conducting the assessment.
-
GPS Spoofing
- This test aims to determine if the GPS of a mobile device has been falsified. GPS spoofing renders any GPS-based analysis useless and raises concerns about overall fraud. As in the case of device tampering, this assessment is exclusive to native applications, which grant access to the underlying operating system necessary for conducting the test.
-
Metadata Analysis
- This set of analyses focuses on examining the metadata of a visual media file. Metadata refers to the data that is attached to the file and provides valuable additional context, details, and characteristics.
-
Date Comparison
- When a
referenceDate(e.g. moment of the accident) is provided, an analysis is conducted to compare the metadata file creation date with thereferenceDate. An alert is triggered if a discrepancy exceeding predefined thresholds is detected, whether it is higher or lower. - In the absence of a
referenceDate, the analysis compares the metadata file creation date with the event creation date (the moment the media files are sent). If the media file is older than 180 days or 360 days, respective alerts are generated to notify the discrepancy.
- When a
-
GPS Comparison
- Similar to the Date Comparison analysis, the
referenceGps(e.g., accident location) is compared to the GPS location recorded in the metadata. When the difference in meters exceeds predefined thresholds, alerts are triggered based on the discrepancies. - If there is no
referenceGps, the metadata GPS location is compared to the location from which the media file was uploaded. If the picture was taken at a location distant by 1,000 km to 10,000 km, an alert is generated.
- Similar to the Date Comparison analysis, the
-
Picture-of-a-Picture
- This group of tests employs various machine learning algorithms to determine whether an image has been captured from a pre-existing image.
-
Picture of a Screen
- The analysis aims to identify screen-captured photos (e.g. pictures from a monitor or tablet) by examining their colour characteristics. Detecting screen-captured images is crucial as they can render other tests ineffective and indicate potential tampering.
-
Picture of a Printed Image
- This test examines the lighting patterns and printer traces present in an image to determine if it is a picture of printed media (e.g. magazine, printer document). For accurate results, it is crucial to have a high-quality picture with sufficient resolution. This ensures the robustness of the test, as highly compressed images can potentially mislead the analysis.
-
Web Search
- The web search relies on third-party services to identify if a picture or a similar picture exists on the web. It's important to note that the compression of the final image may impact the results if it differs from the original picture found on the web.
- To improve the relevance of the results, a similarity test is performed between the web search results and the original image to discard false positives. The results will be categorized as follows:
-
Full Match
- The exact image was found on a website, indicating a high likelihood of fraud.
-
Partial Match
- A similar picture has been found on a website. In such cases, a visual analysis is required to evaluate the possibility of fraud.
Click on the arrows to find additional information.
Photos
# Photos
These tests can be applied to any existing digital photo of the following formats: JPG, JPEG, and PNG. Unlike point-of-capture authentication, the authentication analysis focuses on evaluating the integrity of the media file and involves a range of comprehensive analyses.
Some of the most advanced analyses utilize computer vision and deep learning algorithms to identify the areas within the photo where potential tampering may have occurred. However, it is important to note that to achieve successful results, high-resolution images are crucial. Otherwise, the accuracy of some methods may significantly decrease.
The analysis for photos includes the following tests:
-
General Analysis
- This group of tests primarily focus on the digital characteristics of the visual media file.
-
Resolution
- A picture with a resolution below 2 megapixels (MP) is suspicious because the image quality falls short of modern standards. For reference, the most popular smartphone model, the iPhone 7, has a 12 MP resolution.
-
Size in Bytes
- A file size below 800 kilobytes (KB) may be suspicious because the photo size falls short of current standards. As a point of reference, a low-quality image with JPEG compression ranging from 70% to 80% and a 12 MP resolution typically has a size of around 1.4 MB.
-
Aspect Ratio
- If the aspect ratio of a digital photo does not match any of the standard aspect ratios, it could indicate that the picture has been cropped, potentially indicating tampering. For reference, common aspect ratios for modern digital cameras include 3:2 and 4:3, while for smartphone cameras, common aspect ratios are 4:3, 16:9, or 1:1.
-
Metadata Analysis
- This set of analyses focuses on examining the metadata of a visual media file. Metadata refers to the data that is attached to the file and provides valuable additional context, details, and characteristics.
-
Metadata
- This test analyses the presence of metadata within the media file. Metadata refers to a set of data that describes and provides relevant information embedded in a file.
- It is important to note that this information can be automatically deleted by the channel through which the file is transmitted. Therefore, the absence of metadata does not necessarily indicate tampering with the media file.
-
Date Mismatch
- During this analysis, the consistency of different dates recorded in the metadata is reviewed. If any discrepancies are identified, it indicates a high likelihood that the media file has been altered.
-
Photo Editing
- By utilizing the information contained in the metadata, the test examines traces of photo editing within this data. If evidence of such editing is discovered, it strongly suggests that the file has been altered.
-
Date Comparison
- When a
referenceDate(e.g. moment of the accident) is provided, an analysis is conducted to compare the metadata file creation date with thereferenceDate. An alert is triggered if a discrepancy exceeding predefined thresholds is detected, whether it is higher or lower. - In the absence of a
referenceDate, the analysis compares the metadata file creation date with the event creation date (the moment the media files are sent). If the media file is older than 180 days or 360 days, respective alerts are generated to notify the discrepancy.
- When a
-
GPS Comparison
- Similar to the Date Comparison analysis, the
referenceGps(e.g., accident location) is compared to the GPS location recorded in the metadata. When the difference in meters exceeds predefined thresholds, alerts are triggered based on the discrepancies. - If there is no
referenceGps, the metadata GPS location is compared to the location from which the media file was uploaded. If the picture was taken at a location distant by 1,000 km to 10,000 km, an alert is generated.
- Similar to the Date Comparison analysis, the
-
Web Search
- The web search relies on third-party services to identify if a picture or a similar picture exists on the web. It's important to note that the compression of the final image may impact the results if it differs from the original picture found on the web.
- To improve the relevance of the results, a similarity test is performed between the web search results and the original image to discard false positives. The results will be categorized as follows:
-
Full Match
- The exact image was found on a website, indicating a high likelihood of fraud.
-
Partial Match
- A similar picture has been found on a website. In such cases, a visual analysis is required to evaluate the possibility of fraud.
-
Similarity Search
- This search involves comparing the visual features of images, including colour, texture, shape, and composition, to determine if two images share similar visual characteristics. The test is conducted by comparing a new image with the customer's existing database.
- The primary goal of the test is to find exact matches of images. However, it can also yield good results when the images are slightly different, such as when taken from a slightly different angle. The results of the test can be categorized as follows:
-
Full Match
- The exact image or a highly similar image was found in the database which means that the image has been used previously indicating a potential fraud.
-
Partial Match
- The image is partially similar to other images in the database. In such cases, a visual analysis is required to assess the degree of similarity and determine the relevance of the matches.
-
Picture-of-a-Picture
- This group of tests employs various machine learning algorithms to determine whether an image has been captured from a pre-existing image.
-
Picture of a Screen
- The analysis aims to identify screen-captured photos (e.g. pictures from a monitor or tablet) by examining their colour characteristics. Detecting screen-captured images is crucial as they can render other tests ineffective and indicate potential tampering.
-
Picture of a Printed Image
- This test examines the lighting patterns and printer traces present in an image to determine if it is a picture of printed media (e.g. magazine, printer document). For accurate results, it is crucial to have a high-quality picture with sufficient resolution. This ensures the robustness of the test, as highly compressed images can potentially mislead the analysis.
-
Tampering Localization
- This set of tests utilizes computer vision and deep learning algorithms to identify specific areas within a digital picture that may show indications of potential tampering. The tests primarily focus around analysing the image compression techniques applied to the picture.
- When digital images are captured by a device's sensors, they are typically processed and compressed, commonly as JPEG files for photos, to facilitate editing and sharing. Compression reduces the image quality to some extent, but it significantly reduces the file size, often by 50% to 85% compared to the original file.
- Compression Test #1,#2,#3, and Automatic Analysis don't work for PNG images because they have a different compression algorithm compared to JPEG images.
-
Region of Interest
- The region of interest (ROI) is a necessary pre-processing step for certain analyses as it helps remove unwanted noise from a picture. This step involves utilizing various techniques to achieve the following objectives:
- Identification and isolation of the main object: The ROI identifies the primary object, such as a car, within the image and isolates it enabling a focused analysis.
- Exclusion of problematic areas: The ROI eliminates areas that could introduce errors or adversely affect the accuracy of the tests like bright areas.
-
Compression Test #1
- This test examines variations in the double compression of images to identify whether multiple pictures were combined to create it. The accuracy of the results improves when the used images possess varying levels of compression quality.
-
Compression Test #2
- The test specifically targets the phenomenon of double compression that occurs when an image is edited using software. The first compression happens during the initial creation of the image, while the second compression takes place after the editing process.
-
Compression Test #3
- In this case, the test concentrates on identifying potentially added images within a picture, aiming to detect forgery. The algorithm systematically evaluates various compression levels to pinpoint the location of any potentially tampered areas.
-
Pixel Analysis
- The algorithm analyses all pixels in an image to identify clusters with similar characteristics, enabling the detection of forgeries that involve the copying and relocation of image sections.
- This test remains effective even when the pixels have undergone rotation, as well as moderate levels of enlargement or reduction. The results of this test can be automatically interpreted.
-
Residual Analysis
- The algorithm compares the compression variations between specific regions and the overall image to detect forged areas by analysing the residual differences.
-
Automatic Analysis
- In forensic analysis, the visual interpretation of results is necessary to determine the authenticity of a picture. However, automatic analysis can assist in this process by combining the outcomes of various tests to assess the probability of picture tampering.
-
Deep Learning Analysis
- This test utilizes a convolutional neural network to detect areas of compression and accurately locate tampered regions. The network is specifically designed to learn and analyse the distribution of compression frequencies, surpassing the limitations of conventional analysis.
-
Generative AI
- This test determines if a picture has been generated by AI using a stable diffusion model or general diffusion. It will also attempt to identify if the picture was created with a specific tool (e.g. Dall-E, Midjourney).
Click on the arrows to find additional information.
PDFs
# PDFs
PDF authentication can be conducted for any PDF document. Similar to photo authentication, the analysis concentrates on assessing the integrity of the media file. However, in the case of PDFs, there are additional aspects to be examined, such as the PDF digital signature and embedded images.
The scope of the analysis varies depending on the number of pages within the document. In the case of PDFs with typically up to 5 pages, such as invoices or bank reports, the analysis is similar to pictures. For large documents, the tests focus more on the unique characteristics of PDF files and text analysis.
The analysis for PDFs includes the following tests:
-
General Analysis
- This group of tests primarily focus on the digital characteristics of the visual media file.
-
PDF Type
- By understanding the specific type of PDF, you can determine the appropriate methods for testing and authentication, taking into account factors such as searchability, signatures, and editing capabilities. There are two main types of PDFs to consider:
- Scanned PDF: This type of PDF is typically created by scanning a physical document using a scanner. By default, the text within a scanned PDF is not searchable, and it cannot contain digital signatures. The content is essentially an image representation of the original document.
- Digital PDF: A digital PDF is a file that originates digitally, often created using software programs like Microsoft, Adobe, or DocuSign. Digital PDFs can include digital signatures and can be edited using various software tools.
-
Digital Signature Tampering
- When a digital signature is present in a digital PDF, an analysis is performed to examine the cryptography used to bind the signature. The primary objective of this analysis is to detect any possible alterations or modifications that may have been made to the document after its creation.
-
Metadata Analysis
- This set of analyses focuses on examining the metadata of a visual media file. Metadata refers to the data that is attached to the file and provides valuable additional context, details, and characteristics.
-
Metadata
- This test analyses the presence of metadata within the media file. Metadata refers to a set of data that describes and provides relevant information embedded in a file.
- It is important to note that this information can be automatically deleted by the channel through which the file is transmitted. Therefore, the absence of metadata does not necessarily indicate tampering with the media file.
-
Date Mismatch
- During this analysis, the consistency of different dates recorded in the metadata is reviewed. If any discrepancies are identified, it indicates a high likelihood that the media file has been altered.
-
PDF Editing
- A PDF editing analysis involves examining the metadata of a PDF file to identify traces of PDF editing software. A positive result from this analysis indicates a high likelihood of potential tampering or modification to the document.
-
Date Comparison
- When a
referenceDate(e.g. moment of the accident) is provided, an analysis is conducted to compare the metadata file creation date with thereferenceDate. An alert is triggered if a discrepancy exceeding predefined thresholds is detected, whether it is higher or lower. - In the absence of a
referenceDate, the analysis compares the metadata file creation date with the event creation date (the moment the media files are sent). If the media file is older than 180 days or 360 days, respective alerts are generated to notify the discrepancy.
- When a
-
Embedded Images
- This test focuses on extracting images that have been inserted into a PDF file and conducting authentication on those images. The test's scope is reduced compared to standalone pictures, as some information may be lost during the embedding process.
- It is worth mentioning that digital PDFs can contain multiple images per page, whereas scanned PDFs typically can only have one image per page.
Click on the arrows to find additional information.
8.2Inspection
Using this request you can retrieve the result on any process automation analysis linked to an eventId, as well as any information gathered through our inspection applications. As with authentication, the process may take some time, so the response you receive could include pending results.
# Headers
HEADER | STATUS | TYPE | DESCRIPTION |
|---|---|---|---|
| Required | string | Authentication Bearer token received after a successful Authentication request. |
# Attributes
ATTRIBUTE | STATUS | TYPE | DESCRIPTION |
|---|---|---|---|
| Optional | string | Unique event identifier received after a successful Media Upload request. |
Note: At least one attribute must be provided. Maximum of 1 eventId per request.
# Sample Request
curl --request POST 'https://example.api.com/api/5_1/process_automation' \
--header 'Authorization: Bearer EXAMPLE_TOKEN' \
--header 'Content-Type: application/json' \
--data-raw '{
"eventId": ["EXAMPLE_EVENT_ID"]
}'# Sample Response
{
"responseStatus": {
"id": "REDACTED_ID",
"code": "200 OK",
"message": "Resource found with given information.",
"timestamp": "2024-02-12T14:50:28Z"
},
"eventList": [
{
"id": "REDACTED_EVENT_ID",
"creationDate": "2025-01-23T14:38:56Z",
"path": "media/REDACTED/REDACTED/REDACTED/thumbnail/media",
"customerEventId": "REDACTED_EVENT_ID",
"customerEventType": "claim-property",
"customerEventMetadata": {},
"metadata": {},
"type": {
"code": 1000,
"primary": "claim",
"secondary": "motor"
},
"parameterList": {
"system": {},
"userInput": {}
},
"status": "Completed",
"message": "Media results are completed",
"result": {
"system": [
{
"id": "Water Leak Damage",
"value": 1500,
"description": "USD"
}
],
"userInput": []
},
"instanceTotal": 1,
"mediaTotal": 1,
"instanceList": [
{
"id": "REDACTED_INSTANCE_ID",
"creationDate": "2025-01-23T14:38:56Z",
"path": "media/REDACTED/REDACTED/REDACTED/thumbnail/media",
"customerInstanceId": "REDACTED_INSTANCE_ID",
"customerInstanceType": "claim-property",
"customerInstanceMetadata": {},
"metadata": {},
"type": {
"code": 1000,
"primary": "Bathroom",
"secondary": "1959-2050"
},
"parameterList": {
"system": {
"dimension": {
"height": 2.7,
"width": 1.7,
"depth": 3.0,
"description": "meter"
},
"material": {
"wallFront": "paint",
"wallLeft": "paint",
"wallRight": "paint",
"ceiling": "paint",
"floor": "wood"
}
},
"userInput": {
"dimension": {},
"material": {}
}
},
"status": "Completed",
"message": "Media results are completed",
"result": {
"system": [
{
"id": "Repair estimation",
"value": 1500,
"description": "USD",
"path": null,
"content": []
},
{
"id": "Damaged area size",
"value": 1.2355646,
"description": "meter",
"path": null,
"content": []
},
{
"id": "Damaged area",
"value": 2,
"description": "number of affected areas",
"path": null,
"content": [
{ "id": "Front wall", "damage": true, "material": "paint" },
{ "id": "Left wall", "damage": true, "material": "paint" }
]
}
],
"userInput": [
{
"id": "Repair estimation",
"value": 900,
"description": "USD",
"path": null,
"content": []
},
{
"id": "Damaged area size",
"value": 0.987,
"description": "meter",
"path": null,
"content": []
}
]
},
"mediaTotal": 1,
"mediaList": [
{
"id": "REDACTED_MEDIA_ID",
"uploadDate": "2025-01-23T14:39:03Z",
"path": "media/REDACTED/REDACTED/REDACTED/media",
"customerMediaSource": "",
"customerMediaType": "",
"customerMediaMetadata": {},
"metadata": {},
"elaboration": ["AUTH", "WAT"],
"type": {
"code": 1000,
"primary": "Bathroom",
"secondary": "1959-2050"
},
"parameterList": {
"system": {},
"userInput": {}
},
"status": "Completed",
"message": "Media results are completed",
"result": {
"system": [
{
"id": "Damage 1",
"value": 1,
"description": "Severity",
"path": null,
"content": [
{ "x": 1359, "y": 1191 },
{ "x": 2760, "y": 1191 },
{ "x": 2760, "y": 1929 },
{ "x": 1359, "y": 1929 }
]
},
{
"id": "Damage 2",
"value": 2,
"description": "Severity",
"path": null,
"content": [
{ "x": 1359, "y": 1191 },
{ "x": 2760, "y": 1191 },
{ "x": 2760, "y": 1929 },
{ "x": 1359, "y": 1929 }
]
}
],
"userInput": {}
}
}
]
}
]
}
]
}