Solusi Error 429 VirusTotal API: Penyebab dan Cara Mengatasi

Penyebab Utama Error 429 pada VirusTotal API

Error 429 Too Many Requests pada VirusTotal API terjadi ketika aplikasi Anda melampaui batas kuota permintaan (request) yang diizinkan oleh paket API Key yang Anda gunakan. VirusTotal menerapkan pembatasan ketat berdasarkan waktu (per menit/per hari) untuk menjaga stabilitas layanan bagi seluruh pengguna.

Penyebab paling umum adalah pengiriman permintaan secara simultan dalam jumlah besar tanpa mekanisme rate limiting atau backoff di sisi klien. Setiap jenis API Key (Public, Academic, atau Premium) memiliki batasan yang berbeda secara signifikan.

Tabel Batasan Kuota API VirusTotal

Tipe API KeyRequest per MenitRequest per HariKeterangan
Public4500Gratis, untuk penggunaan non-komersial
Academic105.000Memerlukan verifikasi institusi
PremiumSesuai KontrakSesuai KontrakPrioritas tinggi, tanpa limitasi publik

Strategi Mengatasi Error 429

Untuk menangani error ini secara teknis, Anda harus mengimplementasikan logika Exponential Backoff pada kode Anda. Berikut adalah contoh implementasi sederhana menggunakan Python:

import time
import requests

def fetch_with_retry(url, headers, retries=3):
    for i in range(retries):
        response = requests.get(url, headers=headers)
        if response.status_code == 429:
            wait_time = (2 ** i)  # Exponential backoff
            print(f"Rate limit hit. Menunggu {wait_time} detik...")
            time.sleep(wait_time)
            continue
        return response
    return None

Langkah-Langkah Optimasi

  1. Implementasi Rate Limiting: Gunakan pustaka seperti ratelimit di Python atau bottleneck di Node.js untuk memastikan aplikasi Anda tidak mengirim request melebihi batas per menit.
  2. Caching: Simpan hasil pemindaian (hash file) ke dalam database lokal (Redis/PostgreSQL). Jangan melakukan request ulang untuk file yang sama dalam kurun waktu 24 jam.
  3. Batching: Jika API yang digunakan mendukung, gunakan endpoint yang memungkinkan pengiriman beberapa hash sekaligus untuk mengurangi jumlah total request.
  4. Monitoring: Pantau penggunaan API Anda melalui dashboard resmi di virustotal.com/gui/my-apikey untuk melihat sisa kuota harian.

Troubleshooting Lapangan

Jika Anda tetap mendapatkan error 429 meskipun sudah menerapkan delay, periksa hal berikut:

  • Multi-threading: Pastikan tidak ada proses latar belakang lain yang menggunakan API Key yang sama secara bersamaan.
  • Shared Key: Jika API Key digunakan oleh tim, total request adalah akumulasi dari semua anggota tim. Pertimbangkan untuk meningkatkan paket ke Premium jika kebutuhan operasional meningkat.
  • IP Blocking: Dalam kasus ekstrem, VirusTotal mungkin membatasi IP jika terdeteksi melakukan aktivitas yang menyerupai serangan DDoS. Pastikan trafik Anda berasal dari sumber yang sah.