Apakah Anda sedang membangun sistem notifikasi, integrasi CRM, atau aplikasi custom yang perlu mengirim pesan WhatsApp secara otomatis? Anda berada di tempat yang tepat.
wagate.id menyediakan REST API yang dirancang developer-first: satu endpoint, tiga parameter, satu response. Tidak ada SDK wajib, tidak ada library khusus — cukup HTTP client yang sudah ada di stack Anda.
💡 TL;DR untuk developer:POST https://wagate.id/api/senddengan headerX-Api-Keydan body JSON berisidevice_id,phone,message. Response:{"success": true, "status": "sent"}. Selesai.
Mengapa REST API, Bukan SDK?
Banyak layanan messaging memaksa Anda install SDK besar yang mengunci ke bahasa tertentu. wagate.id mengambil pendekatan berbeda: plain HTTP + JSON, yang berarti:
- ✅ Bahasa apapun — PHP, Node.js, Python, Go, Java, Kotlin, Ruby, .NET, bahkan Bash
- ✅ Framework apapun — Laravel, Express, FastAPI, Spring, Gin, Rails
- ✅ Integrasi mudah — kalau bisa kirim HTTP request, Anda bisa pakai API ini
- ✅ Tidak ada vendor lock-in di level kode
Arsitektur API: Sesederhana Mungkin
Base URL
https://wagate.id/api
Autentikasi
Semua request harus menyertakan API key di header:
X-Api-Key: wgk_live_xxxxxxxxxxxxxxxx
API key dibuat di dashboard wagate.id → menu API Keys. Satu key bisa digunakan untuk semua device yang terhubung ke akun Anda.
Format Request
Content-Type: application/json
Accept: application/json
Endpoint: POST /api/send
Satu-satunya endpoint yang Anda butuhkan untuk kirim pesan.
Request Body
{
"device_id": "string", // ID perangkat WA yang terhubung
"phone": "string", // Nomor tujuan: format 628xxx (tanpa + atau 08)
"message": "string" // Teks pesan (mendukung emoji & newline \n)
}
Response Sukses (200 OK)
{
"success": true,
"status": "sent",
"message_id": "wamid.xxx"
}
Response Error
// 401 Unauthorized
{ "success": false, "message": "Invalid API key" }
// 422 Unprocessable Entity
{ "success": false, "message": "The phone field is required" }
// 503 Service Unavailable
{ "success": false, "message": "Device offline or not connected" }
Contoh Kode: 5 Bahasa, 1 Endpoint
cURL (Universal Test)
curl -X POST https://wagate.id/api/send \
-H "X-Api-Key: wgk_live_xxxx" \
-H "Content-Type: application/json" \
-d '{
"device_id": "DEVICE_ID_ANDA",
"phone": "6281234567890",
"message": "Halo dari API wagate.id! 👋"
}'
JavaScript / Node.js (fetch)
const response = await fetch('https://wagate.id/api/send', {
method: 'POST',
headers: {
'X-Api-Key': 'wgk_live_xxxx',
'Content-Type': 'application/json',
},
body: JSON.stringify({
device_id: 'DEVICE_ID_ANDA',
phone: '6281234567890',
message: 'Order #1234 dikonfirmasi! 🎉',
}),
});
const data = await response.json();
console.log(data.success); // true
Python (requests)
import requests
resp = requests.post(
'https://wagate.id/api/send',
headers={'X-Api-Key': 'wgk_live_xxxx'},
json={
'device_id': 'DEVICE_ID_ANDA',
'phone': '6281234567890',
'message': 'Kode OTP Anda: 847291 (berlaku 5 menit)',
},
timeout=15,
)
print(resp.json()) # {'success': True, 'status': 'sent', ...}
PHP (cURL)
<?php
$ch = curl_init('https://wagate.id/api/send');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => json_encode([
'device_id' => 'DEVICE_ID_ANDA',
'phone' => '6281234567890',
'message' => 'Pembayaran Rp 150.000 berhasil diterima.',
]),
CURLOPT_HTTPHEADER => [
'X-Api-Key: wgk_live_xxxx',
'Content-Type: application/json',
],
]);
$result = json_decode(curl_exec($ch), true);
curl_close($ch);
var_dump($result['success']); // bool(true)
Go (net/http)
package main
import (
"bytes"
"encoding/json"
"net/http"
)
func sendWA(phone, message string) bool {
body, _ := json.Marshal(map[string]string{
"device_id": "DEVICE_ID_ANDA",
"phone": phone,
"message": message,
})
req, _ := http.NewRequest("POST", "https://wagate.id/api/send", bytes.NewBuffer(body))
req.Header.Set("X-Api-Key", "wgk_live_xxxx")
req.Header.Set("Content-Type", "application/json")
resp, err := http.DefaultClient.Do(req)
return err == nil && resp.StatusCode == 200
}
Use Case Populer untuk Developer
1. Notifikasi Transaksional (E-commerce)
// Trigger saat order dibuat
sendWA(order.customerPhone,
`✅ Pesanan #${order.id} berhasil!\n` +
`Total: Rp ${order.total.toLocaleString()}\n` +
`Estimasi: 2-3 hari kerja.`
);
2. Kirim Kode OTP
const otp = Math.floor(100000 + Math.random() * 900000);
sendWA(user.phone,
`🔐 Kode OTP Anda: *${otp}*\nBerlaku 5 menit. Jangan bagikan ke siapapun.`
);
3. Alert Monitoring & DevOps
# Bash: kirim alert saat server down
curl -s -X POST https://wagate.id/api/send \
-H "X-Api-Key: $WA_API_KEY" \
-H "Content-Type: application/json" \
-d "{\"device_id\":\"$DEVICE_ID\",\"phone\":\"$ONCALL_PHONE\",
\"message\":\"🚨 Alert: Server $(hostname) CPU > 90%!\"}"
4. Integrasi CRM / Helpdesk
Hubungkan CRM Anda (Salesforce, HubSpot, Zoho, atau custom) ke wagate.id melalui Zapier, Make, atau langsung via API. Setiap kali ada lead baru, tiket support, atau update deal — kirim notifikasi WA otomatis ke sales atau customer.
5. Laporan Otomatis via Cron Job
# crontab: kirim laporan penjualan tiap hari jam 7 pagi
0 7 * * * /usr/local/bin/daily-report.sh
#!/bin/bash
# daily-report.sh
TOTAL=$(mysql -u root -e "SELECT SUM(total) FROM orders WHERE DATE(created_at)=CURDATE()-1" -s)
curl -s -X POST https://wagate.id/api/send \
-H "X-Api-Key: $WA_API_KEY" \
-H "Content-Type: application/json" \
-d "{\"device_id\":\"$DEVICE_ID\",\"phone\":\"$OWNER_PHONE\",
\"message\":\"📊 Laporan kemarin: Rp ${TOTAL}\"}"
Endpoint Tambahan
GET /api/status — Cek Status Device
curl https://wagate.id/api/status?device_id=DEVICE_ID \
-H "X-Api-Key: wgk_live_xxxx"
// Response:
{
"device_id": "DEVICE_ID",
"status": "connected", // connected | disconnected | pairing
"phone": "628123456789",
"battery": 85
}
Webhook: Terima Pesan Masuk (Real-time)
Selain mengirim, wagate.id juga bisa meneruskan pesan masuk ke endpoint webhook Anda secara real-time.
Payload Webhook
POST https://your-app.com/webhook/wa
{
"event": "message.received",
"session_id": "DEVICE_ID",
"from": "628123456789",
"message": "Halo, saya mau tanya tentang produk",
"timestamp": 1718000000
}
Contoh handler (Express.js)
app.post('/webhook/wa', (req, res) => {
const { event, from, message } = req.body;
if (event === 'message.received') {
// Simpan ke database, trigger AI reply, dll.
console.log(`Pesan dari ${from}: ${message}`);
}
res.json({ ok: true });
});
Daftarkan URL webhook di dashboard wagate.id → Perangkat → Edit → Webhook URL.
Rate Limit & Best Practice
| Aspek | Rekomendasi |
|---|---|
| ⏱️ Jeda antar pesan broadcast | 2–5 detik per nomor |
| 🌐 Timeout HTTP request | 15 detik |
| 🔄 Retry on failure | Max 3x dengan exponential backoff |
| 📱 Format nomor | 628xxx — tanpa + atau 0 di depan |
| 📝 Panjang pesan | Maks 4.096 karakter per pesan |
| 🔒 Simpan API Key | Di environment variable — jangan hardcode di kode |
🔒 Keamanan: SimpanAPI KeydanDevice IDdi environment variable atau secret manager. Jangan commit ke Git repository.
Mulai Sekarang: Gratis 7 Hari
wagate.id menyediakan masa trial 7 hari gratis tanpa kartu kredit. Dalam 10 menit, Anda bisa:
- Daftar di wagate.id/register
- Hubungkan nomor WhatsApp (scan QR)
- Buat API Key
- Kirim pesan WA pertama dari kode Anda
Setelah trial, harga mulai Rp 25.000/bulan per device — tanpa limit pesan, tanpa hidden fee.