Forensics
Get the latest forensics run for a file
Returns the newest run for this file id. Unknown files and files with no run are 404.
GET
/
v1
/
forensics
/
files
/
{file_id}
Get the latest forensics run for a file
curl --request GET \
--url https://api.orion.file.ai/prod/v1/forensics/files/{file_id} \
--header 'x-api-key: <api-key>'import requests
url = "https://api.orion.file.ai/prod/v1/forensics/files/{file_id}"
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.orion.file.ai/prod/v1/forensics/files/{file_id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"run_id": "<string>",
"file_id": "<string>",
"spec_filter": [
"web_presence"
],
"status": "queued",
"created_at": "2023-11-07T05:31:56Z",
"forensics": {
"web_presence": {
"status": "none",
"value": "Web presence: true",
"web_presence": true,
"layer1": {
"reason": "PNG has an Apple iDOT chunk, typical of local ImageIO writes.",
"likely_web": true,
"likelihood_pct": 50
},
"layer2": {
"checked": true,
"reason": "<string>",
"exact_matches": [
{
"url": "<string>",
"title": "<string>",
"source": "eBay",
"thumbnail": "<string>",
"image": "<string>",
"kind": "page",
"verified": true
}
],
"orange_matches": [
{}
],
"hash_verified_matches": [
{}
],
"leads": [
{}
],
"web_presence": true
}
},
"ai_gen_detection": {},
"ai_text_detection": {},
"copy_move": {},
"exact_duplicate": {},
"provenance_credentials": {},
"generation_toolchain": {},
"producer_divergence": {},
"encryption_permissions": {},
"active_content": {},
"digital_signature": {},
"attachments": {},
"revision_history": {},
"magic_byte": {},
"polyglot": {},
"trailing_data": {},
"entropy": {},
"ai_pdf_detection": {},
"ai_office_detection": {},
"heatmap": {},
"document_integrity_decisions": {}
},
"catalog_version": "fm-59@2026-08",
"checks": {},
"mapping": {
"layout_parse": {}
}
}{
"type": "https://errors.file.ai/validation-failed",
"title": "Validation failed",
"status": 422,
"detail": "One or more fields are invalid.",
"instance": "/v1/files/upload",
"code": "VALIDATION_FAILED",
"requestId": "0f1c8e03-978e-40d5-bc93-6894a57f9324",
"errors": [
{
"code": "REQUIRED",
"detail": "must not be empty",
"pointer": "#/fileName",
"parameter": "limit"
}
],
"message": "Validation failed",
"error": "Unprocessable Entity",
"statusCode": 422,
"retryAfter": 42
}{
"type": "https://errors.file.ai/validation-failed",
"title": "Validation failed",
"status": 422,
"detail": "One or more fields are invalid.",
"instance": "/v1/files/upload",
"code": "VALIDATION_FAILED",
"requestId": "0f1c8e03-978e-40d5-bc93-6894a57f9324",
"errors": [
{
"code": "REQUIRED",
"detail": "must not be empty",
"pointer": "#/fileName",
"parameter": "limit"
}
],
"message": "Validation failed",
"error": "Unprocessable Entity",
"statusCode": 422,
"retryAfter": 42
}{
"type": "https://errors.file.ai/not-found",
"title": "Not found",
"status": 404,
"detail": "No such run.",
"instance": "/v1/{route}",
"code": "NOT_FOUND",
"requestId": "0f1c8e03-978e-40d5-bc93-6894a57f9324",
"errors": [],
"message": "No such run.",
"error": "Not Found",
"statusCode": 404
}{
"type": "https://errors.file.ai/validation-failed",
"title": "Validation failed",
"status": 422,
"detail": "One or more fields are invalid.",
"instance": "/v1/files/upload",
"code": "VALIDATION_FAILED",
"requestId": "0f1c8e03-978e-40d5-bc93-6894a57f9324",
"errors": [
{
"code": "REQUIRED",
"detail": "must not be empty",
"pointer": "#/fileName",
"parameter": "limit"
}
],
"message": "Validation failed",
"error": "Unprocessable Entity",
"statusCode": 422,
"retryAfter": 42
}{
"type": "https://errors.file.ai/validation-failed",
"title": "Validation failed",
"status": 422,
"detail": "One or more fields are invalid.",
"instance": "/v1/files/upload",
"code": "VALIDATION_FAILED",
"requestId": "0f1c8e03-978e-40d5-bc93-6894a57f9324",
"errors": [
{
"code": "REQUIRED",
"detail": "must not be empty",
"pointer": "#/fileName",
"parameter": "limit"
}
],
"message": "Validation failed",
"error": "Unprocessable Entity",
"statusCode": 422,
"retryAfter": 42
}{
"type": "https://errors.file.ai/validation-failed",
"title": "Validation failed",
"status": 422,
"detail": "One or more fields are invalid.",
"instance": "/v1/files/upload",
"code": "VALIDATION_FAILED",
"requestId": "0f1c8e03-978e-40d5-bc93-6894a57f9324",
"errors": [
{
"code": "REQUIRED",
"detail": "must not be empty",
"pointer": "#/fileName",
"parameter": "limit"
}
],
"message": "Validation failed",
"error": "Unprocessable Entity",
"statusCode": 422,
"retryAfter": 42
}{
"type": "https://errors.file.ai/validation-failed",
"title": "Validation failed",
"status": 422,
"detail": "One or more fields are invalid.",
"instance": "/v1/files/upload",
"code": "VALIDATION_FAILED",
"requestId": "0f1c8e03-978e-40d5-bc93-6894a57f9324",
"errors": [
{
"code": "REQUIRED",
"detail": "must not be empty",
"pointer": "#/fileName",
"parameter": "limit"
}
],
"message": "Validation failed",
"error": "Unprocessable Entity",
"statusCode": 422,
"retryAfter": 42
}{
"type": "https://errors.file.ai/validation-failed",
"title": "Validation failed",
"status": 422,
"detail": "One or more fields are invalid.",
"instance": "/v1/files/upload",
"code": "VALIDATION_FAILED",
"requestId": "0f1c8e03-978e-40d5-bc93-6894a57f9324",
"errors": [
{
"code": "REQUIRED",
"detail": "must not be empty",
"pointer": "#/fileName",
"parameter": "limit"
}
],
"message": "Validation failed",
"error": "Unprocessable Entity",
"statusCode": 422,
"retryAfter": 42
}Request · Response · Guide: fileForensics
Authorizations
API key for authentication
Path Parameters
Public file id.
Response
The run.
Available options:
web_presence, ai_gen_detection, ai_text_detection, copy_move, exact_duplicate, provenance_credentials, generation_toolchain, producer_divergence, encryption_permissions, active_content, digital_signature, attachments, revision_history, magic_byte, polyglot, trailing_data, entropy, ai_pdf_detection, ai_office_detection, heatmap, document_integrity_decisions, layout_parse queued and running are in progress; complete and error are terminal.
Available options:
queued, running, complete, error Results keyed by spec_filter entry. Empty until the first detector reports; a key appears once its detector has finished.
Show child attributes
Show child attributes
Example:
"fm-59@2026-08"
FileMap checks category (FileChecks). Present when upstream produced checks; keys are detector names with internal timing fields stripped.
FileMap mapping category. layout_parse carries FileElements (bboxes) when requested upstream (e.g. product upload).
Show child attributes
Show child attributes
⌘I
Get the latest forensics run for a file
curl --request GET \
--url https://api.orion.file.ai/prod/v1/forensics/files/{file_id} \
--header 'x-api-key: <api-key>'import requests
url = "https://api.orion.file.ai/prod/v1/forensics/files/{file_id}"
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.orion.file.ai/prod/v1/forensics/files/{file_id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"run_id": "<string>",
"file_id": "<string>",
"spec_filter": [
"web_presence"
],
"status": "queued",
"created_at": "2023-11-07T05:31:56Z",
"forensics": {
"web_presence": {
"status": "none",
"value": "Web presence: true",
"web_presence": true,
"layer1": {
"reason": "PNG has an Apple iDOT chunk, typical of local ImageIO writes.",
"likely_web": true,
"likelihood_pct": 50
},
"layer2": {
"checked": true,
"reason": "<string>",
"exact_matches": [
{
"url": "<string>",
"title": "<string>",
"source": "eBay",
"thumbnail": "<string>",
"image": "<string>",
"kind": "page",
"verified": true
}
],
"orange_matches": [
{}
],
"hash_verified_matches": [
{}
],
"leads": [
{}
],
"web_presence": true
}
},
"ai_gen_detection": {},
"ai_text_detection": {},
"copy_move": {},
"exact_duplicate": {},
"provenance_credentials": {},
"generation_toolchain": {},
"producer_divergence": {},
"encryption_permissions": {},
"active_content": {},
"digital_signature": {},
"attachments": {},
"revision_history": {},
"magic_byte": {},
"polyglot": {},
"trailing_data": {},
"entropy": {},
"ai_pdf_detection": {},
"ai_office_detection": {},
"heatmap": {},
"document_integrity_decisions": {}
},
"catalog_version": "fm-59@2026-08",
"checks": {},
"mapping": {
"layout_parse": {}
}
}{
"type": "https://errors.file.ai/validation-failed",
"title": "Validation failed",
"status": 422,
"detail": "One or more fields are invalid.",
"instance": "/v1/files/upload",
"code": "VALIDATION_FAILED",
"requestId": "0f1c8e03-978e-40d5-bc93-6894a57f9324",
"errors": [
{
"code": "REQUIRED",
"detail": "must not be empty",
"pointer": "#/fileName",
"parameter": "limit"
}
],
"message": "Validation failed",
"error": "Unprocessable Entity",
"statusCode": 422,
"retryAfter": 42
}{
"type": "https://errors.file.ai/validation-failed",
"title": "Validation failed",
"status": 422,
"detail": "One or more fields are invalid.",
"instance": "/v1/files/upload",
"code": "VALIDATION_FAILED",
"requestId": "0f1c8e03-978e-40d5-bc93-6894a57f9324",
"errors": [
{
"code": "REQUIRED",
"detail": "must not be empty",
"pointer": "#/fileName",
"parameter": "limit"
}
],
"message": "Validation failed",
"error": "Unprocessable Entity",
"statusCode": 422,
"retryAfter": 42
}{
"type": "https://errors.file.ai/not-found",
"title": "Not found",
"status": 404,
"detail": "No such run.",
"instance": "/v1/{route}",
"code": "NOT_FOUND",
"requestId": "0f1c8e03-978e-40d5-bc93-6894a57f9324",
"errors": [],
"message": "No such run.",
"error": "Not Found",
"statusCode": 404
}{
"type": "https://errors.file.ai/validation-failed",
"title": "Validation failed",
"status": 422,
"detail": "One or more fields are invalid.",
"instance": "/v1/files/upload",
"code": "VALIDATION_FAILED",
"requestId": "0f1c8e03-978e-40d5-bc93-6894a57f9324",
"errors": [
{
"code": "REQUIRED",
"detail": "must not be empty",
"pointer": "#/fileName",
"parameter": "limit"
}
],
"message": "Validation failed",
"error": "Unprocessable Entity",
"statusCode": 422,
"retryAfter": 42
}{
"type": "https://errors.file.ai/validation-failed",
"title": "Validation failed",
"status": 422,
"detail": "One or more fields are invalid.",
"instance": "/v1/files/upload",
"code": "VALIDATION_FAILED",
"requestId": "0f1c8e03-978e-40d5-bc93-6894a57f9324",
"errors": [
{
"code": "REQUIRED",
"detail": "must not be empty",
"pointer": "#/fileName",
"parameter": "limit"
}
],
"message": "Validation failed",
"error": "Unprocessable Entity",
"statusCode": 422,
"retryAfter": 42
}{
"type": "https://errors.file.ai/validation-failed",
"title": "Validation failed",
"status": 422,
"detail": "One or more fields are invalid.",
"instance": "/v1/files/upload",
"code": "VALIDATION_FAILED",
"requestId": "0f1c8e03-978e-40d5-bc93-6894a57f9324",
"errors": [
{
"code": "REQUIRED",
"detail": "must not be empty",
"pointer": "#/fileName",
"parameter": "limit"
}
],
"message": "Validation failed",
"error": "Unprocessable Entity",
"statusCode": 422,
"retryAfter": 42
}{
"type": "https://errors.file.ai/validation-failed",
"title": "Validation failed",
"status": 422,
"detail": "One or more fields are invalid.",
"instance": "/v1/files/upload",
"code": "VALIDATION_FAILED",
"requestId": "0f1c8e03-978e-40d5-bc93-6894a57f9324",
"errors": [
{
"code": "REQUIRED",
"detail": "must not be empty",
"pointer": "#/fileName",
"parameter": "limit"
}
],
"message": "Validation failed",
"error": "Unprocessable Entity",
"statusCode": 422,
"retryAfter": 42
}{
"type": "https://errors.file.ai/validation-failed",
"title": "Validation failed",
"status": 422,
"detail": "One or more fields are invalid.",
"instance": "/v1/files/upload",
"code": "VALIDATION_FAILED",
"requestId": "0f1c8e03-978e-40d5-bc93-6894a57f9324",
"errors": [
{
"code": "REQUIRED",
"detail": "must not be empty",
"pointer": "#/fileName",
"parameter": "limit"
}
],
"message": "Validation failed",
"error": "Unprocessable Entity",
"statusCode": 422,
"retryAfter": 42
}