REST API

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

API_KEY="vp_<your-api-key>"

# 1. Ask for an upload permit (the file itself never goes to this API)
RESP=$(curl -s https://viruspurge.com/api/v1/scan \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"fileName":"file.pdf","fileSize":'$(wc -c < file.pdf)'}')

# 2. Upload the file straight to the scanner — the response is the verdict
curl -s "$(echo "$RESP" | jq -r .uploadUrl)" \
  -H "X-Scan-Permit: $(echo "$RESP" | jq -r .permit)" \
  -F "[email protected]"

# 3. Any time later — or if the upload connection dropped — read it back
curl -s "https://viruspurge.com/api/v1/scan/$(echo "$RESP" | jq -r .scanId)" \
  -H "Authorization: Bearer $API_KEY"

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, and every image is checked for hidden payloads, 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

POST /api/v1/scan
  • Authenticate with Authorization: Bearer &lt;api-key&gt;
  • Send the file as multipart/form-data under the file field

Example response

Limits & quotas

    {LIMITS.map(([label, value]) => (
  • ))}
Full API reference

Ready to start scanning?

Upgrade to Premium to generate your personal API key and start scanning programmatically today.