Skip to content

Rate Limit & Quota

Gateway membatasi kecepatan pengiriman untuk menjaga kesehatan nomor WhatsApp Anda dan mencegah penyalahgunaan.


Dua Jenis Pembatasan

1. Rate Limit (Kecepatan Pengiriman)

Membatasi berapa banyak pesan yang bisa Anda kirim per detik.

ScopeBatasKeterangan
Per akun20 pesan/detik (burst hingga 40)Batas total semua sesi dalam akun Anda
Per sesi (per nomor)1 pesan/detik (burst hingga 5)Batas untuk satu nomor WhatsApp

Burst artinya boleh melebihi rata-rata untuk sesaat, tapi akan dibatasi kembali jika terus menerus.

2. Quota Bulanan

Membatasi berapa total pesan yang bisa dikirim dalam satu bulan.

  • Batas quota tergantung paket langganan Anda
  • Sisa quota bisa dilihat di Dashboard → Penggunaan

Apa yang Terjadi Saat Limit Terlampaui?

Server merespons dengan 429 Too Many Requests:

json
{
  "error": "session send rate exceeded"
}

Response juga menyertakan header:

Retry-After: 1

Nilai Retry-After adalah jumlah detik yang harus ditunggu sebelum mencoba lagi.


Cara Menangani Rate Limit

Cara 1 — Antrekan Pesan (Direkomendasikan)

Alih-alih mengirim langsung dari loop, masukkan pesan ke antrean internal aplikasi Anda, lalu proses dengan kecepatan yang terkontrol.

javascript
// Contoh sederhana: kirim 1 pesan per detik
async function kirimDenganDelay(pesanList) {
  for (const pesan of pesanList) {
    await kirimPesan(pesan)
    await tunggu(1000) // tunggu 1 detik
  }
}

Cara 2 — Exponential Backoff saat 429

Jika mendapat 429, tunggu sebelum retry. Setiap gagal, gandakan waktu tunggu:

javascript
async function kirimDenganRetry(payload, maxCoba = 5) {
  let tungguMs = 1000 // mulai 1 detik

  for (let coba = 1; coba <= maxCoba; coba++) {
    const resp = await fetch('/v1/messages', {
      method: 'POST',
      body: JSON.stringify(payload),
      headers: { /* ... */ }
    })

    if (resp.status === 429) {
      const retryAfter = resp.headers.get('Retry-After') || 1
      await new Promise(r => setTimeout(r, retryAfter * 1000))
      tungguMs = Math.min(tungguMs * 2, 30000) // maks 30 detik
      continue
    }

    return resp.json()
  }

  throw new Error('Gagal setelah beberapa kali retry')
}

Tips Menjaga Nomor WhatsApp Tetap Sehat

Selain batas teknis, ada batas "etika" penggunaan WhatsApp yang penting dijaga:

  • Kirim ke penerima yang relevan. Mengirim pesan ke banyak orang yang tidak mengenal Anda berisiko nomor dilaporkan sebagai spam dan diblokir oleh WhatsApp.
  • Hindari pengiriman massal ke nomor acak. WhatsApp aktif mendeteksi pola spam.
  • Jaga rasio balasan. Nomor yang banyak kirim tapi tidak pernah dibalas dicurigai sebagai spam.
  • Gunakan untuk komunikasi yang diharapkan pengguna — notifikasi transaksi, OTP, update pesanan, dll.

Pantau Penggunaan

Dari Dashboard → Penggunaan, Anda bisa melihat:

  • Total pesan terkirim hari ini dan bulan ini
  • Sisa kuota bulanan
  • Grafik penggunaan 14 hari terakhir

Dokumentasi WhatsApp Gateway