Scan files for malware, right from your code
Add antivirus scanning to your uploads, pipelines, and workflows with a single HTTP request. No infrastructure to run, no files stored on our servers.
API access is included with every Premium plan.
Quick start
Swap in your key and run — no SDK required
curl -X POST https://viruspurge.com/api/v1/scan \
-H "Authorization: Bearer vp_<your-api-key>" \
-F "file=@/path/to/file.pdf"import httpx
API_KEY = "vp_<your-api-key>"
with open("file.pdf", "rb") as f:
response = httpx.post(
"https://viruspurge.com/api/v1/scan",
headers={"Authorization": f"Bearer {API_KEY}"},
files={"file": f},
)
result = response.json()
print(result["isInfected"], result["viruses"])import fs from "fs";
import fetch from "node-fetch";
import FormData from "form-data";
const API_KEY = "vp_<your-api-key>";
const form = new FormData();
form.append("file", fs.createReadStream("file.pdf"));
const res = await fetch("https://viruspurge.com/api/v1/scan", {
method: "POST",
headers: {
Authorization: `Bearer ${API_KEY}`,
...form.getHeaders(),
},
body: form,
});
const result = await res.json();
console.log(result.isInfected, result.viruses);Zero-upload architecture
Files never touch our app server. The API issues a short-lived signed permit and your client uploads straight to the scanner.
Real-time detection
Every request is scanned against a continuously-updated signature and YARA ruleset, returning the verdict and any matched threats.
One endpoint, any language
A single POST request with a Bearer token. Copy-paste cURL, Python, or Node.js and you're scanning in under a minute.
Built for scale
Files up to 256 MB, 300 scans per day, and 60 scans per minute — with signed results pushed back into your scan history.
The endpoint
- Authenticate with
Authorization: Bearer <api-key> - Send the file as
multipart/form-dataunder thefilefield
Example response
Ready to start scanning?
Upgrade to Premium to generate your personal API key and start scanning programmatically today.