POST /api/scansCreates a scan request from an uploaded PDF.
Request shape:
{
"retentionMode": "delete_immediately",
"enableEnrichment": true
}
Multipart payload should include:
file: uploaded PDFResponse shape:
{
"scanId": "scan_123",
"status": "queued_fast_scan",
"retentionMode": "delete_immediately",
"resultUrl": "/scans/scan_123"
}
GET /api/scans/:scanIdReturns current scan status and summary fields.
Response shape:
{
"scanId": "scan_123",
"status": "completed_fast_scan",
"verdict": "suspicious",
"score": 67,
"advancedStatus": "running",
"expiresAt": null
}
GET /api/scans/:scanId/reportReturns the structured report payload used by the UI and export flows.
Response shape:
{
"scanId": "scan_123",
"summary": {
"verdict": "suspicious",
"score": 67
},
"findings": [],
"iocs": {
"urls": [],
"ips": []
},
"mitigations": []
}
queued_fast_scanrunning_fast_scancompleted_fast_scanqueued_advanced_scanrunning_advanced_scancompletedfailedexpireddelete_immediately should be the default retention mode.expiresAt should be null when the file is deleted immediately after analysis.