@extends('layouts.app') @section('title', 'API') @php $base = url('/api/v1'); @endphp @section('content')

API

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.

POST/api/v1/files

Upload 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
POST/api/v1/scan

Scan 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
GET/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": { ... }
  }
}
GET/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.

GET/api/v1/search?query=…

Latest existing report for a URL, domain, IP or hash, without starting a new scan.

GET/api/v1/engines and /api/v1/me

Active engines, and your key's usage against its limits.

Verdicts and categories

verdict is malicious, suspicious, clean or unknown. Each engine result has a category: malicious, suspicious, harmless, undetected, unsupported, timeout or failure.

Errors

Errors return {"error": {"code": "...", "message": "..."}} with status 401 (bad key), 404, 422 (bad input) or 429 (limit reached; see Retry-After).

@endsection