Scanning
Threatless scans bytes through ClamAV using the INSTREAM protocol. Nothing is written to disk for the scan itself: the stream is forwarded to clamd, the verdict is parsed, and the bytes are dropped.
What you can scan
Files
Remote URLs
You must send either a file or a URL on the public API — not both empty. The dashboard scanner only accepts a file.
Limits
| Limit | Value |
|---|---|
| Maximum size | 10 MB |
| URL protocols | http, https |
| URL connect timeout | 10 seconds |
| URL read timeout | 30 seconds |
| Engine | ClamAV (clamd) |
The result
Every successful scan returns:
true when ClamAV reports FOUND.null.isInfected. The API serializes the flag as infected. Accept both if you generate types from Lombok beans.What is stored
File contents are not stored. Threatless keeps scan metadata on your account so the dashboard can show history and charts:
- filename
- duration
- infected flag and virus name
- HTTP status recorded as
200for completed scans - environment label (
PRODUCTIONtoday)
That history powers Dashboard analytics. It is not a copy of the file.
Engine updates
The API container runs freshclam daily at midnight to refresh virus signatures. Self-hosted instances inherit that schedule from the bundled ClamAV image.
Testing detection
Do not commit malware. Use the official EICAR test file as described in Test with EICAR. A positive result is still HTTP 200 with infected: true (typically virusName Win.Test.EICAR_HDB-1).
Next
- Scan a file and Scan a URL
- Privacy for SSRF protections and data handling