@extends('layouts.app') @section('title', 'API') @php $base = url('/api/v1'); @endphp @section('content')
Scan files, links and hashes from your own tools. Create a key on your account page and send it in the x-apikey header.
Limits: {{ config('vizur.api.per_minute') }} requests a minute and {{ number_format(config('vizur.api.per_day')) }} a day per key. Scans run in the background: submit, then fetch the analysis until status is completed.
/api/v1/filesUpload a file (multipart field file, up to {{ config('vizur.max_upload_mb') }} MB). Optional force=1 to rescan, private=1 to hide the report from others.
curl -H "x-apikey: YOUR_KEY" -F "file=@invoice.pdf" {{ $base }}/files
/api/v1/scanScan a URL, domain, IP address, or look up an MD5/SHA-1/SHA-256 hash. The type is detected for you.
curl -H "x-apikey: YOUR_KEY" -d "query=https://example.com/login" {{ $base }}/scan
/api/v1/analyses/{id}Status and, once finished, the full result for every engine plus details.
curl -H "x-apikey: YOUR_KEY" {{ $base }}/analyses/01JB...
{
"data": {
"id": "01JB...", "type": "file", "status": "completed", "verdict": "malicious",
"stats": { "malicious": 3, "suspicious": 0, "harmless": 0, "undetected": 4, ... },
"file": { "name": "invoice.pdf.exe", "sha256": "...", ... },
"results": { "ClamAV": { "category": "malicious", "result": "Win.Trojan.Agent-123" }, ... },
"details": { ... }
}
}
/api/v1/files/{hash}Latest report for a file by MD5, SHA-1 or SHA-256. Returns 404 if nobody has scanned it here yet.
/api/v1/search?query=…Latest existing report for a URL, domain, IP or hash, without starting a new scan.
/api/v1/engines and /api/v1/meActive engines, and your key's usage against its limits.
verdict is malicious, suspicious, clean or unknown. Each engine result has a category: malicious, suspicious, harmless, undetected, unsupported, timeout or failure.
Errors return {"error": {"code": "...", "message": "..."}} with status 401 (bad key), 404, 422 (bad input) or 429 (limit reached; see Retry-After).