Dokumentasi API WhatsApp Gateway Golang (Whatsmeow) Terlengkap
Berikut adalah Dokumentasi API Lengkap untuk WhatsApp Gateway (Golang + Whatsmeow) yang telah Anda bangun.
Dokumentasi ini mencakup cara autentikasi, daftar endpoint, format request/response, dan contoh penggunaan menggunakan curl.
📚 Dokumentasi API WhatsApp Gateway (Golang)
Base URL: http://<IP-VPS-ANDA>:5000
Content-Type: application/json (kecuali upload media)
🔐 Autentikasi
Setiap request ke API wajib menyertakan header berikut:
Header KeyValueX-API-KEYSesuaikan dengan .env (Default: ganti-dengan-api-key-rahasia)1. System & Session
Cek Status Bot
Mengecek apakah bot sudah login dan terhubung ke server WhatsApp.
- Endpoint:
GET /api/status - Response:
- JSON
{
"status": "success",
"data": {
"is_logged_in": true,
"is_connected": true,
"my_jid": "[email protected]"
}
}
Dapatkan Kode QR
Mendapatkan string QR Code untuk login (jika belum login). String ini harus dirender menjadi gambar QR oleh frontend (seperti qrcode.js).
- Endpoint:
GET /api/qr - Response (Belum Login):
- JSON
{
"status": "success",
"qr": "2@Ks7Vs... (String Panjang) ..."
}
- Response (Sudah Login):
- JSON
{
"status": "success",
"message": "Already logged in",
"qr": ""
}
Logout / Ganti Nomor
Memutuskan koneksi dan menghapus sesi database secara permanen agar bisa scan QR baru.
- Endpoint:
POST /api/logout - Response:
- JSON
{
"status": "success",
"message": "Logged out completely. Please scan new QR."
}
2. Sending Messages
Kirim Pesan Teks
Mengirim pesan teks ke nomor pribadi atau grup.
- Endpoint:
POST /api/send-message - Body (JSON):
- JSON
{
"phone": "08123456789",
"message": "Halo, ini pesan dari API Golang!"
}
Catatan untuk Group: Gunakan ID Group lengkap (contoh:[email protected]) pada fieldphone.
- Response:
- JSON
{
"status": "success",
"id": "3EB0...",
"timestamp": 171000000
}
Kirim Gambar (Image)
Mengirim gambar dengan caption.
- Endpoint:
POST /api/send-image - Content-Type:
multipart/form-data - Form Data:
file: (Binary file gambar .jpg/.png)phone: Nomor tujuan / ID Groupcaption: Teks caption (Opsional)
Kirim Dokumen (File)
Mengirim file dokumen (PDF, ZIP, DOCX, dll).
- Endpoint:
POST /api/send-document - Content-Type:
multipart/form-data - Form Data:
file: (Binary file dokumen)phone: Nomor tujuan / ID Groupcaption: Teks caption (Opsional)
3. Webhook Integration (Golang -> Node.js)
Jika Anda mengaktifkan WEBHOOK_URL di .env, Golang akan mengirim data ke Node.js setiap ada pesan masuk.
- Method:
POST - Target: URL Webhook Anda (misal:
http://localhost:8000/webhook-handler) - Payload yang dikirim Golang:
- JSON
{
"sender": "628123456789", // Pengirim pesan
"push_name": "Nama User WA",
"message_type": "text", // text / image / video / location
"message": "Isi pesan...",
"is_group": false,
"group_jid": "", // ID Group (jika pesan dari grup)
"media_path": "uploads/file.jpg", // Path file (jika pesan media)
"timestamp": 1715000000
}
💻 Contoh Penggunaan (Copy-Paste)
Berikut adalah contoh perintah terminal (curl) untuk mengetes API Anda. Ganti API_KEY dan IP_VPS sesuai konfigurasi Anda.
1. Cek Status
Bash
curl -X GET http://localhost:5000/api/status \ -H "X-API-KEY: ganti-dengan-api-key-rahasia"
2. Kirim Pesan ke Personal (Japri)
Bash
curl -X POST http://localhost:5000/api/send-message \
-H "X-API-KEY: ganti-dengan-api-key-rahasia" \
-H "Content-Type: application/json" \
-d '{
"phone": "08123456789",
"message": "Tes pesan Japri dari API Server"
}'
3. Kirim Pesan ke Group
(Pastikan Anda sudah mendapatkan ID Group, biasanya angka panjang berakhiran @g.us)
Bash
curl -X POST http://localhost:5000/api/send-message \
-H "X-API-KEY: ganti-dengan-api-key-rahasia" \
-H "Content-Type: application/json" \
-d '{
"phone": "[email protected]",
"message": "Halo Group, ini tes broadcast API!"
}'
4. Kirim Gambar
Bash
# Download gambar contoh dulu wget https://via.placeholder.com/150 -O sample.jpg # Kirim curl -X POST http://localhost:5000/api/send-image \ -H "X-API-KEY: ganti-dengan-api-key-rahasia" \ -F "phone=08123456789" \ -F "caption=Ini gambar otomatis" \ -F "[email protected]"
5. Logout (Hapus Sesi)
Bash
curl -X POST http://localhost:5000/api/logout \ -H "X-API-KEY: ganti-dengan-api-key-rahasia"