VirusTotal API Response Headers adalah kumpulan metadata HTTP yang dikirimkan oleh server VirusTotal (v2 dan v3) sebagai respons terhadap permintaan (request) klien. Header ini krusial untuk memantau status kuota (rate limiting), mengelola pembatasan akses, serta mendiagnosis kesalahan koneksi saat melakukan otomatisasi pemindaian file, URL, atau hash menggunakan skrip Python, Bash, maupun bahasa pemrograman lainnya.
Dalam dokumentasi resmi API v3 VirusTotal, respons server menggunakan standar protokol HTTP/1.1 atau HTTP/2 dengan format payload utama berjenis application/json. Memahami header respons memungkinkan pengembang menghindari blokir otomatis akibat kelebihan kuota harian atau per menit yang diberlakukan oleh sistem.
Daftar Utama VirusTotal API Response Headers
Tabel berikut merinci header HTTP paling penting yang diterima dari server VirusTotal beserta fungsi dan karakteristik nilainya.
| Nama Header | Tipe Data | Deskripsi & Fungsi Utama |
|---|---|---|
X-Apikey |
String | Konfirmasi kunci API yang digunakan dalam request (jika dikirim via header). |
X-Quotas-Daily-Used |
Integer | Jumlah kuota harian yang telah terpakai oleh akun Anda. |
X-Quotas-Daily-Allowed |
Integer | Batas maksimal kuota harian yang diberikan berdasarkan tier akun (Public/Premium). |
X-Quotas-Minute-Used |
Integer | Jumlah kuota per menit yang sudah terpakai (standar Public API: 4 request/menit). |
X-Quotas-Minute-Allowed |
Integer | Batas maksimal kuota per menit yang diizinkan untuk endpoint tersebut. |
Content-Type |
String | Format data balasan, umumnya bernilai application/json; charset=utf-8. |
Content-Length |
Integer | Ukuran payload body respons dalam satuan byte. |
Via |
String | Informasi proxy atau gateway jaringan yang meneruskan trafik (misal: Cloudflare). |
Date |
String | Waktu server saat respons dikirim berdasarkan zona waktu UTC. |
HTTP Status Codes pada Response VirusTotal
Selain header kustom untuk kuota, respons VirusTotal selalu menyertakan kode status HTTP standar untuk mengindikasikan keberhasilan atau kegagalan pemrosesan:
- 200 OK: Permintaan berhasil diproses dan body respons berisi data JSON yang diminta.
- 204 No Content: Permintaan diterima, namun sumber daya yang dicari tidak ditemukan.
- 400 Bad Request: Sintaks permintaan salah, parameter kurang, atau format hash tidak valid.
- 401 Unauthorized: Kunci API (API Key) tidak disertakan atau salah.
- 403 Forbidden: Akses ditolak karena endpoint memerlukan lisensi Premium atau akun diblokir.
- 429 Too Many Requests: Kuota harian atau kuota per menit telah terlampaui. Header respons akan menunjukkan batasan ini.
- 503 Service Unavailable: Server VirusTotal sedang mengalami pemeliharaan atau kelebihan beban (overload).
Implementasi Pengecekan Header dengan Python
Berikut adalah contoh cuplikan kode menggunakan pustaka requests di Python untuk mengirimkan permintaan ke VirusTotal API v3 sekaligus membaca header respons terkait kuota dan status.
import requests
API_KEY = "YOUR_VIRUSTOTAL_API_KEY"
URL = "https://www.virustotal.com/api/v3/ip_addresses/8.8.8.8"
headers = {
"accept": "application/json",
"x-apikey": API_KEY
}
response = requests.get(URL, headers=headers)
# Membaca HTTP Status Code
print(f"Status Code: {response.status_code}")
# Membaca Response Headers untuk kuota
print("--- VirusTotal Rate Limit Headers ---")
print(f"Daily Used: {response.headers.get('X-Quotas-Daily-Used', 'N/A')}")
print(f"Daily Allowed: {response.headers.get('X-Quotas-Daily-Allowed', 'N/A')}")
print(f"Minute Used: {response.headers.get('X-Quotas-Minute-Used', 'N/A')}")
if response.status_code == 200:
data = response.json()
print("Data Berhasil Diambil:", data['data']['id'])
else:
print(f"Error: {response.json().get('error', {}).get('message')}")
Tips Penanganan Error & Rate Limiting di Lapangan
Saat merancang otomatisasi skala besar, mengabaikan header respons kuota dapat berakibat pada pemutusan koneksi atau banned akun sementara. Terapkan strategi berikut:
- Penerapan Exponential Backoff: Jika menerima status
429 Too Many Requests, hentikan eksekusi skrip sejenak dan tingkatkan jeda waktu secara eksponensial sebelum melakukan retry ulang. - Validasi Header Berkala: Buat fungsi pencatat (logger) yang memantau nilai
X-Quotas-Daily-Usedsecara berkala untuk menghentikan skrip sebelum kuota harian habis total. - Gunakan API Key yang Tepat: Pastikan menggunakan kunci API komersial (Premium) jika aplikasi Anda memerlukan lebih dari 500 request per hari atau kecepatan di atas 4 request per menit.