API Documentation

Dokumentasi resmi ZX REACTCH Reaction API. Semua endpoint bersifat publik, berbasis JSON, dan tidak memerlukan autentikasi.

Base URLhttps://your-domain.vercel.appAPI v6
01 Pengenalan

ZX REACTCH API memungkinkan kamu mengirim reaction ke post WhatsApp Channel secara terprogram. Satu request = satu pengiriman lengkap — sistem kami memprosesnya melalui antrean pengiriman yang aman. Kamu tidak perlu mengelola akun, token, atau login apa pun.

🔐
Tanpa autentikasi. Semua endpoint publik dan tidak memerlukan API key. Cukup kirim request JSON ke Base URL di atas.
âŗ
Waktu proses. Satu request ke /api/react diproses selama 5–20 detik tergantung antrean. Set timeout client minimal 60 detik agar tidak terputus duluan.
đŸ›Ąī¸
Anti-spam. Endpoint /api/react diproteksi rate limit per IP (lihat bagian Rate Limits). Pelanggaran dijawab 429 dengan field retryAfter — kirim ulang hanya setelah waktu tunggu habis.

Semua response mengandung field v (versi API, saat ini 6) — gunakan untuk memastikan dokumentasi yang kamu baca sesuai dengan response yang kamu terima.

02 Kirim Reaction
POST/api/react

Mengirim satu set reaction ke satu post WhatsApp Channel. Satu request = satu pengiriman — tidak ada parameter jumlah; kalau butuh beberapa pengiriman, panggil endpoint ini berkali-kali dengan menghormati rate limit. Hasil setiap request otomatis tercatat di statistik global.

Request Body
FieldTipeWajibDeskripsi
urlstringWajibURL lengkap post WhatsApp Channel.
Format: https://whatsapp.com/channel/[id-channel]/[id-post]
Catatan: alias waUrl juga diterima.
reactionsstring[]OpsionalArray emoji yang dikirim (disarankan 1–10 item). Contoh: ["😂", "👍", "â¤ī¸"]
Catatan: alias rawEmojis (string dipisah koma, mis. "😂,👍") juga diterima. Jika dikosongkan, emoji default 😂 yang dikirim.
Contoh Request
cURL
curl -X POST https://your-domain.vercel.app/api/react \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://whatsapp.com/channel/0029VbDLqe7EquiSF4STU13o/451",
    "reactions": ["😂", "👍", "â¤ī¸"]
  }'
JavaScript (fetch)
const res = await fetch('https://your-domain.vercel.app/api/react', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({
    url: 'https://whatsapp.com/channel/0029VbDLqe7EquiSF4STU13o/451',
    reactions: ['😂', '👍', 'â¤ī¸'],
  }),
  signal: AbortSignal.timeout(60000), // 1 request bisa 5-20 detik
});

const data = await res.json();
// { success: true, message: 'Reaction berhasil dikirim', ... }
Python (requests)
import requests

res = requests.post('https://your-domain.vercel.app/api/react', json={
    'url': 'https://whatsapp.com/channel/0029VbDLqe7EquiSF4STU13o/451',
    'reactions': ['😂', '👍', 'â¤ī¸'],
}, timeout=60)

print(res.json())
Response Sukses — 200 OK
Response
{
  "v": 6,
  "success": true,
  "message": "Reaction berhasil dikirim",
  "logged": true,
  "loggedFailed": []
}
FieldTipeDeskripsi
vnumberVersi API (saat ini 6)
successbooleantrue = reaction berhasil dikirim
messagestringPesan status yang aman ditampilkan ke end-user
loggedbooleanApakah request berhasil dicatat ke statistik global
loggedFailedstring[]Daftar counter statistik yang gagal dicatat (kosong jika semua sukses)
retryAfternumber?Hanya muncul saat 429: durasi tunggu (detik) sebelum request berikutnya diizinkan
Response Rate Limited — 429 Too Many Requests
Response
{
  "v": 6,
  "success": false,
  "message": "Terlalu cepat — tunggu 7 detik lagi",
  "retryAfter": 7
}
đŸ›Ąī¸
Tunggu selama retryAfter detik sebelum mengirim request berikutnya. Melakukan retry lebih cepat hanya akan memperpanjang pembatasan.
Response Gagal — 500
Response
{
  "v": 6,
  "success": false,
  "message": "Timeout — server sedang sibuk, coba lagi",
  "logged": true,
  "loggedFailed": []
}
â„šī¸
Pesan error sengaja dibuat generik dan aman dipublikasikan (contoh: "Timeout — server sedang sibuk, coba lagi"). Detail teknis penyebab kegagalan tidak diekspos ke client. Aman untuk di-retry setelah beberapa detik.
03 Statistik Global & Live Log
GET/api/live

Mengambil statistik global (total request, sukses, gagal, jumlah emoji terkirim, statistik hari ini) beserta daftar aktivitas terbaru secara real-time.

Query Parameters
ParameterTipeWajibDeskripsi
limitnumberOpsionalJumlah entry live log yang dikembalikan. Default 40, maksimal 200.
cURL
curl 'https://your-domain.vercel.app/api/live?limit=10'
Response — 200 OK
Response
{
  "success": true,
  "v": 6,
  "stats": {
    "total": 128,
    "success": 125,
    "failed": 3,
    "reactions": 384,
    "lastTs": 1787847447337,
    "today": {
      "date": "2026-08-27",
      "total": 42,
      "success": 41,
      "failed": 1,
      "reactions": 126
    }
  },
  "logs": [
    {
      "id": "mtp2zk1a2b",
      "ts": 1787847447337,
      "type": "success",
      "message": "Reaction đŸ˜‚đŸ‘â¤ī¸ terkirim",
      "reactions": ["😂", "👍", "â¤ī¸"],
      "url": "https://whatsapp.com/channel/â€Ļ/451",
      "username": null
    }
  ]
}
FieldTipeDeskripsi
stats.totalnumberTotal seluruh request sepanjang waktu
stats.successnumberTotal request sukses
stats.failednumberTotal request gagal
stats.reactionsnumberTotal emoji terkirim sepanjang waktu
stats.lastTsnumber | nullTimestamp (ms) aktivitas terakhir
stats.todayobjectStatistik hari ini (reset tiap ganti hari, zona WIB)
logsarrayEntry aktivitas terbaru (terbaru duluan). type bisa success, error, atau info.
04 Top Post
GET/api/leaderboard

Mengambil daftar post WhatsApp Channel yang paling banyak mendapat reaction berdasarkan statistik sistem. Endpoint ini murni membaca data — tidak mengubah apa pun.

Query Parameters
ParameterTipeWajibDeskripsi
limitnumberOpsionalJumlah entri maksimal. Default 50, maksimal 200.
cURL
curl 'https://your-domain.vercel.app/api/leaderboard?limit=50'
Response — 200 OK
Response
{
  "success": true,
  "posts": [
    {
      "url": "https://whatsapp.com/channel/0029VbDLqe7EquiSF4STU13o/451",
      "count": 37
    },
    {
      "url": "https://whatsapp.com/channel/0029VbCNrb4DzgT7EgLB0f29/492",
      "count": 12
    }
  ]
}
FieldTipeDeskripsi
posts[].urlstringURL post WhatsApp Channel
posts[].countnumberTotal reaction sukses yang pernah dikirim ke post tersebut
05 Kode Error
StatusPesanPenyebab
400Parameter "url" wajib diisiRequest body tidak memuat field url
405Method not allowedHTTP method tidak sesuai (mis. GET ke /api/react)
429Terlalu cepat — tunggu X detik lagi / Terlalu banyak request — tunggu ±X menit lagi / Limit harian tercapai — coba lagi dalam ±X jamRate limit per IP terlampaui. Response menyertakan retryAfter (detik) — tunggu selama itu sebelum retry.
500Bervariasi (pesan generik)Reaction gagal diproses — timeout, antrean penuh, limit pengiriman tercapai, atau gangguan jaringan. Aman untuk di-retry setelah beberapa detik.
06 Rate Limits & Best Practices

Endpoint /api/react diproteksi rate limit 3 lapis per IP. Semua limit dihitung per alamat IP pengunjung dan direset otomatis.

ProteksiLimit (per IP)Pesan saat terlampaui
Cooldown antar request10 detikTerlalu cepat — tunggu X detik lagi
BurstMaks 8 request / 5 menitTerlalu banyak request — tunggu ±X menit lagi
HarianMaks 100 request / 24 jamLimit harian tercapai — coba lagi dalam ±X jam
Best Practices
PraktikRekomendasi
Timeout clientMinimal 60 detik — 1 request diproses 5–20 detik
Jeda antar requestMinimal 10 detik (sama dengan cooldown rate limit)
Pola pemanggilanSekuensial (satu per satu) — hindari paralel dari client yang sama
Emoji per request1–10 emoji per request
Retry saat gagalTunggu minimal 5 detik; saat 429, tunggu sesuai retryAfter
Polling /api/liveMaksimal 1 kali per 5 detik per client
07 Changelog
v6

Rate limit 3 lapis per IP (cooldown 10 detik, maks 8 request / 5 menit, maks 100 / hari) — pelanggaran dijawab 429 dengan field retryAfter. Endpoint /api/react kini 1 request per pengiriman (tanpa pengiriman massal per request).

v5

Mesin pengiriman baru — lebih stabil dan tahan blokir. Response /api/react dirampingkan (field limit dan account dihapus), menerima alias waUrl / rawEmojis, dan leaderboard berubah menjadi daftar post paling banyak bereaksi (Top Post).

v4

Response /api/react dibersihkan — hanya mengembalikan data milik pengguna. Ditambahkan field versi v, statistik global & harian pada /api/live.

v3

Live log real-time dan statistik global. Setiap request otomatis tercatat beserta detail reaction-nya.

v2

Delay antar request otomatis dengan variasi acak (anti-blokir) dan riwayat session tersimpan di sisi client.

v1

Rilis awal — endpoint reaksi dasar dan leaderboard.

👑
Butuh bantuan atau mau update terbaru? Kunjungi saluran resmi ZX — Credit by ZX.