Get file analysis details
curl --request GET \
--url https://api.uk.veridox.ai/files/{fileId}/analysis \
--header 'x-api-key: <api-key>'import requests
url = "https://api.uk.veridox.ai/files/{fileId}/analysis"
headers = {"x-api-key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'x-api-key': '<api-key>'}};
fetch('https://api.uk.veridox.ai/files/{fileId}/analysis', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.uk.veridox.ai/files/{fileId}/analysis",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"x-api-key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.uk.veridox.ai/files/{fileId}/analysis"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-api-key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.uk.veridox.ai/files/{fileId}/analysis")
.header("x-api-key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.uk.veridox.ai/files/{fileId}/analysis")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["x-api-key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"file_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"case_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"label": "<string>",
"mime_type": "<string>",
"file_download_url": "<string>",
"file_download_url_expires_at": "2023-11-07T05:31:56Z",
"thumbnail_url": "<string>",
"pdf_report_url": "<string>",
"log_output_url": "<string>",
"ela_overlay_url": "<string>",
"reverse_search": {
"matches": null,
"total": 123
},
"file_info": {
"md5": "<string>",
"metadata": {}
},
"analysis_status": "waiting_for_upload",
"analysis_outcome": "success",
"current_analysis_phase": "<string>",
"current_risk_score": "<string>",
"analysis_results": {
"full_analysis": {
"overall_risk_score": "<string>",
"summary": "<string>",
"findings": [
{
"category": "<string>",
"heading": "<string>",
"description": "<string>",
"supporting_evidence": [
"<string>"
],
"alert_type": "<string>",
"source_analysis": "<string>",
"custom_alert_type": "<string>",
"severity": "<string>",
"severity_justification": "<string>"
}
],
"observations": [
"<string>"
],
"risk_assessments": [
{
"target": "<string>",
"risk_level": "<string>",
"summary": "<string>",
"justification": "<string>"
}
],
"suggested_actions": [
{
"action": "<string>",
"justification": "<string>"
}
],
"audit_trail": [
"<string>"
],
"search_evidence_summary": {
"total_queries": 123,
"total_results": 123,
"per_module": {}
},
"verification_evidence_summary": {
"total_checks": 123,
"resolved": 123,
"failed": 123,
"per_module": {}
},
"modules_run": [
"<string>"
]
},
"context_analysis": {
"mime_type": "<string>",
"format_classification": "<string>",
"file_category": "<string>",
"summary": "<string>",
"classifications": [
{
"category": "<string>",
"custom_guess": "<string>"
}
],
"contains_embedded_images": true,
"key_details": {
"persons": [
"<string>"
],
"organisations": [
"<string>"
],
"locations": [
"<string>"
],
"dates": [
"<string>"
],
"reference_numbers": [
"<string>"
]
},
"c2pa_detected": true,
"metadata_tags": {},
"metadata_tags_count": 123
},
"image_metadata": {
"risk_score": "<string>",
"summary": "<string>",
"findings": [
{
"alert_type": "<string>",
"description": "<string>",
"severity": "<string>",
"evidence": [
{
"source": "<string>",
"tag_or_assertion": "<string>",
"value": "<string>",
"explanation": "<string>"
}
]
}
],
"c2pa_detected": true,
"metadata_tags": {},
"metadata_tags_count": 123
},
"document_metadata": {
"risk_score": "<string>",
"summary": "<string>",
"findings": [
"<unknown>"
],
"metadata_tags": {},
"metadata_tags_count": 123
},
"image_tampering": {
"confidence_map_url": "<string>",
"local_map_url": "<string>",
"findings": [
"<unknown>"
],
"risk_score": "<string>"
},
"document_consistency": {
"annotated_pdf_url": "<string>"
},
"ela": {
"overlay_url": "<string>",
"findings": [
"<unknown>"
],
"risk_score": "<string>"
},
"noise": {
"overlay_url": "<string>",
"findings": [
"<unknown>"
],
"risk_score": "<string>"
},
"reverse_search": {
"results": [
"<unknown>"
]
},
"modules": [
{
"module_id": "<string>",
"module_name": "<string>",
"findings": [
{
"alert_type": "<string>",
"alert_type_name": "<string>",
"found": true,
"severity": "Informational",
"severity_justification": "<string>",
"description": "<string>",
"evidence": [
{
"source": "<string>",
"detail": "<string>",
"explanation": "<string>"
}
],
"evidence_refs": [
"<string>"
],
"custom_alert_type": "<string>"
}
],
"search_evidence": {
"queries": [
{
"query_id": "<string>",
"query_text": "<string>",
"answer": "<string>"
}
],
"results": [
{
"result_id": "<string>",
"query_id": "<string>",
"url": "<string>",
"title": "<string>",
"snippet": "<string>",
"published_date": "<string>",
"last_updated": "<string>"
}
],
"failures": [
{
"query_id": "<string>",
"error": "<string>",
"status_code": 123,
"rate_limited": true
}
],
"elapsed_ms": 123,
"request_count": 123
},
"verification_evidence": {
"checks": [
{
"check_id": "<string>",
"provider": "<string>",
"check_type": "<string>",
"subject": "<string>",
"country_code": "<string>",
"is_valid": true,
"canonical_name": "<string>",
"canonical_address": "<string>",
"checked_at": "<string>",
"extracted": "<string>",
"outputs": {},
"attests": "<string>",
"country_mismatch": true,
"error": "<string>",
"subject_date": "<string>"
}
]
},
"error": "<string>"
}
]
},
"case_context_at_analysis": "<string>",
"user_risk_confirmations": [
{
"reason": "<string>",
"changed_at": "2023-11-07T05:31:56Z",
"changed_by": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"risk_score": "informational"
}
],
"created_at": "2023-11-07T05:31:56Z",
"uploaded_at": "2023-11-07T05:31:56Z",
"analysis_completed_at": "2023-11-07T05:31:56Z",
"highlights": [
"<string>"
],
"caveats": [
{
"type": "<string>",
"severity": "info",
"title": "<string>",
"message": "<string>",
"scope": "document",
"affected_modules": [
"<string>"
],
"affected_findings": [
"<string>"
]
}
],
"team_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"team_name": "<string>"
}{
"error_code": "request.cases.file.missing-risk-score",
"error_message": "User tried to perform an invalid operation on a file without a risk score.",
"error_details": {
"field": "email_address"
}
}{
"error_code": "request.cases.file.missing-risk-score",
"error_message": "User tried to perform an invalid operation on a file without a risk score.",
"error_details": {
"field": "email_address"
}
}{
"error_code": "request.cases.file.missing-risk-score",
"error_message": "User tried to perform an invalid operation on a file without a risk score.",
"error_details": {
"field": "email_address"
}
}Files
Get File Analysis
Retrieve comprehensive analysis results and risk assessment for a specific file.
GET
/
files
/
{fileId}
/
analysis
Get file analysis details
curl --request GET \
--url https://api.uk.veridox.ai/files/{fileId}/analysis \
--header 'x-api-key: <api-key>'import requests
url = "https://api.uk.veridox.ai/files/{fileId}/analysis"
headers = {"x-api-key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'x-api-key': '<api-key>'}};
fetch('https://api.uk.veridox.ai/files/{fileId}/analysis', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.uk.veridox.ai/files/{fileId}/analysis",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"x-api-key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.uk.veridox.ai/files/{fileId}/analysis"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-api-key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.uk.veridox.ai/files/{fileId}/analysis")
.header("x-api-key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.uk.veridox.ai/files/{fileId}/analysis")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["x-api-key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"file_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"case_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"label": "<string>",
"mime_type": "<string>",
"file_download_url": "<string>",
"file_download_url_expires_at": "2023-11-07T05:31:56Z",
"thumbnail_url": "<string>",
"pdf_report_url": "<string>",
"log_output_url": "<string>",
"ela_overlay_url": "<string>",
"reverse_search": {
"matches": null,
"total": 123
},
"file_info": {
"md5": "<string>",
"metadata": {}
},
"analysis_status": "waiting_for_upload",
"analysis_outcome": "success",
"current_analysis_phase": "<string>",
"current_risk_score": "<string>",
"analysis_results": {
"full_analysis": {
"overall_risk_score": "<string>",
"summary": "<string>",
"findings": [
{
"category": "<string>",
"heading": "<string>",
"description": "<string>",
"supporting_evidence": [
"<string>"
],
"alert_type": "<string>",
"source_analysis": "<string>",
"custom_alert_type": "<string>",
"severity": "<string>",
"severity_justification": "<string>"
}
],
"observations": [
"<string>"
],
"risk_assessments": [
{
"target": "<string>",
"risk_level": "<string>",
"summary": "<string>",
"justification": "<string>"
}
],
"suggested_actions": [
{
"action": "<string>",
"justification": "<string>"
}
],
"audit_trail": [
"<string>"
],
"search_evidence_summary": {
"total_queries": 123,
"total_results": 123,
"per_module": {}
},
"verification_evidence_summary": {
"total_checks": 123,
"resolved": 123,
"failed": 123,
"per_module": {}
},
"modules_run": [
"<string>"
]
},
"context_analysis": {
"mime_type": "<string>",
"format_classification": "<string>",
"file_category": "<string>",
"summary": "<string>",
"classifications": [
{
"category": "<string>",
"custom_guess": "<string>"
}
],
"contains_embedded_images": true,
"key_details": {
"persons": [
"<string>"
],
"organisations": [
"<string>"
],
"locations": [
"<string>"
],
"dates": [
"<string>"
],
"reference_numbers": [
"<string>"
]
},
"c2pa_detected": true,
"metadata_tags": {},
"metadata_tags_count": 123
},
"image_metadata": {
"risk_score": "<string>",
"summary": "<string>",
"findings": [
{
"alert_type": "<string>",
"description": "<string>",
"severity": "<string>",
"evidence": [
{
"source": "<string>",
"tag_or_assertion": "<string>",
"value": "<string>",
"explanation": "<string>"
}
]
}
],
"c2pa_detected": true,
"metadata_tags": {},
"metadata_tags_count": 123
},
"document_metadata": {
"risk_score": "<string>",
"summary": "<string>",
"findings": [
"<unknown>"
],
"metadata_tags": {},
"metadata_tags_count": 123
},
"image_tampering": {
"confidence_map_url": "<string>",
"local_map_url": "<string>",
"findings": [
"<unknown>"
],
"risk_score": "<string>"
},
"document_consistency": {
"annotated_pdf_url": "<string>"
},
"ela": {
"overlay_url": "<string>",
"findings": [
"<unknown>"
],
"risk_score": "<string>"
},
"noise": {
"overlay_url": "<string>",
"findings": [
"<unknown>"
],
"risk_score": "<string>"
},
"reverse_search": {
"results": [
"<unknown>"
]
},
"modules": [
{
"module_id": "<string>",
"module_name": "<string>",
"findings": [
{
"alert_type": "<string>",
"alert_type_name": "<string>",
"found": true,
"severity": "Informational",
"severity_justification": "<string>",
"description": "<string>",
"evidence": [
{
"source": "<string>",
"detail": "<string>",
"explanation": "<string>"
}
],
"evidence_refs": [
"<string>"
],
"custom_alert_type": "<string>"
}
],
"search_evidence": {
"queries": [
{
"query_id": "<string>",
"query_text": "<string>",
"answer": "<string>"
}
],
"results": [
{
"result_id": "<string>",
"query_id": "<string>",
"url": "<string>",
"title": "<string>",
"snippet": "<string>",
"published_date": "<string>",
"last_updated": "<string>"
}
],
"failures": [
{
"query_id": "<string>",
"error": "<string>",
"status_code": 123,
"rate_limited": true
}
],
"elapsed_ms": 123,
"request_count": 123
},
"verification_evidence": {
"checks": [
{
"check_id": "<string>",
"provider": "<string>",
"check_type": "<string>",
"subject": "<string>",
"country_code": "<string>",
"is_valid": true,
"canonical_name": "<string>",
"canonical_address": "<string>",
"checked_at": "<string>",
"extracted": "<string>",
"outputs": {},
"attests": "<string>",
"country_mismatch": true,
"error": "<string>",
"subject_date": "<string>"
}
]
},
"error": "<string>"
}
]
},
"case_context_at_analysis": "<string>",
"user_risk_confirmations": [
{
"reason": "<string>",
"changed_at": "2023-11-07T05:31:56Z",
"changed_by": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"risk_score": "informational"
}
],
"created_at": "2023-11-07T05:31:56Z",
"uploaded_at": "2023-11-07T05:31:56Z",
"analysis_completed_at": "2023-11-07T05:31:56Z",
"highlights": [
"<string>"
],
"caveats": [
{
"type": "<string>",
"severity": "info",
"title": "<string>",
"message": "<string>",
"scope": "document",
"affected_modules": [
"<string>"
],
"affected_findings": [
"<string>"
]
}
],
"team_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"team_name": "<string>"
}{
"error_code": "request.cases.file.missing-risk-score",
"error_message": "User tried to perform an invalid operation on a file without a risk score.",
"error_details": {
"field": "email_address"
}
}{
"error_code": "request.cases.file.missing-risk-score",
"error_message": "User tried to perform an invalid operation on a file without a risk score.",
"error_details": {
"field": "email_address"
}
}{
"error_code": "request.cases.file.missing-risk-score",
"error_message": "User tried to perform an invalid operation on a file without a risk score.",
"error_details": {
"field": "email_address"
}
}Retrieve comprehensive analysis results for a specific file, including signed download URLs for the original file, thumbnail, PDF analysis report, and detailed logs.
Permission
You can get the analysis of a file you uploaded, or of any file in your organisation if you haveorganisation_files:read; otherwise the API returns 404. Shared cases, if enabled for your organisation, also give you reach to every case and file. See Permissions and API Keys.
Analysis Engines
The Veridox platform runs multiple analysis engines to provide a complete forensic view:- Context Analysis: Extracts metadata and classifies the document type.
- Image Metadata: Analyses EXIF/JFIF data for indicators of tampering or source verification.
- Tampering Detection: Uses advanced computer vision to identify pixel-level anomalies and digital edits.
- AI Summary: Provides a high-level, human-readable summary of the combined findings.
Highlights
Thehighlights field contains a plain list of key findings summarising the most significant indicators from the analysis. It is omitted from the response when the analysis did not produce any highlights.
Module Evidence
Each entry inanalysis_results.modules reports its findings together with the evidence supporting them:
findings— structured findings, each with analert_type, aseverity(Informational,Low,Medium, orHigh), adescription, aseverity_justification, anevidencelist, andevidence_refs.search_evidence(object ornull) — the search and grounding queries run for the module, with theirresultsand anyfailures.verification_evidence(object ornull) — checks run against an authoritative registry or API for the module.
evidence_refs are IDs that resolve back into that module’s own evidence: q1.1 matches a result_id in search_evidence.results, and v1 matches a check_id in verification_evidence.checks. full_analysis.search_evidence_summary and full_analysis.verification_evidence_summary roll the same evidence up across modules, keyed by module_id.
Verification Evidence
Verification checks run only when your organisation’s verification setting is on for that analysis. An analysis run with the setting off has no checks: each module’sverification_evidence is null or has an empty checks list, full_analysis.verification_evidence_summary is null, and no finding carries a v reference. Search evidence is unaffected. A result keeps the evidence it was produced with after the setting changes, so read each result’s evidence fields rather than inferring them from the current setting.
Findings under results carry no evidence_refs of their own. See Tracing a finding back to its evidence for how to get from one to its sources, and for the cases where that lookup does not resolve.
On an analysis from the current engine these keys are always present, though
search_evidence_summary, verification_evidence_summary and a query’s answer may each be null. An analysis produced by an earlier version of the engine has both summaries set to null and an empty modules_run, and carries no analysis_results.modules array, so check for that array before reading it.Best Practices
- URL Expiration: Download URLs for assets (original file, PDF report, logs) are time-limited for security. Ensure you download or display them promptly after retrieval.
- Wait for Completion: This endpoint provides the most value after a file’s
analysis_statushas reachedsettled. - Security: Never expose the signed download URLs in client-side code or public environments.
Authorizations
Path Parameters
File ID
Response
File analysis retrieved successfully
Pattern:
^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-7[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$Pattern:
^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-7[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$Pattern:
^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$Show child attributes
Show child attributes
Show child attributes
Show child attributes
Available options:
waiting_for_upload, processing, triaged, settled Available options:
success, failed, triage_expired Show child attributes
Show child attributes
Show child attributes
Show child attributes
Pattern:
^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$Pattern:
^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$Pattern:
^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$Show child attributes
Show child attributes
Pattern:
^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$Was this page helpful?
⌘I