VirusTotal Intelligence API Guide: Endpoint & Query Lengkap

Pengantar VirusTotal Intelligence API

VirusTotal Intelligence API memberikan akses terprogram penuh ke kumpulan data ancaman siber global milik VirusTotal. Endpoint ini memungkinkan sistem keamanan otomatis, Security Operations Center (SOC), dan peneliti malware untuk mencari sampel file, domain, IP address, dan URL menggunakan sintaks kueri tingkat lanjut secara real-time tanpa melalui antarmuka web.

Autentikasi dan Endpoint Dasar

Seluruh permintaan ke VirusTotal API v3 memerlukan header x-apikey yang berisi kunci API valid milik akun berlisensi Intelligence. Batas rate limit dan kuota bergantung pada tier langganan akun Anda (Community vs. Intelligence Commercial).

Parameter Nilai / Deskripsi
Base URL https://www.virustotal.com/api/v3
Metode Autentikasi Header: x-apikey: YOUR_API_KEY
Endpoint Pencarian File GET /intelligence/search?query={query}&limit={limit}
Endpoint Laporan File GET /files/{id}

Sintaks Kueri Intelligence (Search Modifiers)

Pencarian pada endpoint Intelligence menggunakan modifier khusus untuk memfilter atribut file, perilaku sandbox, tanda tangan digital, dan hasil mesin antivirus.

Modifier Contoh Penggunaan Fungsi Utama
positives: positives:10+ Mencari file yang dideteksi positif oleh minimal 10 AV.
type: type:peexe Memfilter jenis file (peexe, android, pdf, office).
fs: fs:2026-01-01+ Berdasarkan tanggal pertama kali file terlihat (First Seen).
tag: tag:ransomware Mencari file dengan tag tertentu yang disematkan sistem.
size: size:10kb-500kb Menentukan rentang ukuran file dalam byte/kilobyte.

Contoh Implementasi Kode Python

Berikut adalah skrip Python menggunakan pustaka requests untuk melakukan query pencarian file ransomware baru yang muncul dalam 24 jam terakhir.

import requests

API_KEY = "YOUR_INTELLIGENCE_API_KEY"
URL = "https://www.virustotal.com/api/v3/intelligence/search"

headers = {
    "x-apikey": API_KEY
}

params = {
    "query": "tag:ransomware fs:2026-03-01+",
    "limit": 10
}

response = requests.get(URL, headers=headers, params=params)

if response.status_code == 200:
    data = response.json()
    for item in data.get("data", []):
        print(f"ID (SHA256): {item['id']}")
        print(f"Type: {item['type']}")
        print("-" * 40)
else:
    print(f"Error: {response.status_code} - {response.text}")

Panduan Troubleshooting & Rate Limiting

Kendala umum saat mengintegrasikan VirusTotal Intelligence API meliputi:

  • HTTP 401 Unauthorized: Pastikan kunci API disematkan dengan benar pada header x-apikey dan akun masih aktif.
  • HTTP 429 Too Many Requests: Anda telah melampaui batas kuota per menit atau per hari. Implementasikan logika exponential backoff pada kode Anda.
  • Empty Result: Periksa kembali sintaks modifier kueri. Pastikan operator logika seperti AND, OR, dan tanda kurung digunakan dengan benar jika membuat kueri kompleks.