Dashboard

Monitor your WhatsApp Gateway activity

User
Messages Sent
0
📤 Outgoing
Messages Received
0
📥 Incoming
Active Device
None
ID: -
📱 Connected
Status
Unknown
🔌 Connection

Device Connection

Scan QR code to connect your WhatsApp

Select a device to connect

Send Message

Send text or media messages via WhatsApp

💡 Sending Tips

  • Number Format: Use country code (e.g., 6281...). No + or 0 in front.
  • Media: Use direct URLs (ending in .jpg, .mp4).
  • Bulk Sending: Add delay between messages to avoid bans.

Contact Groups

Manage your contact groups for bulk messaging

Group Name Members Actions

Message Logs

No logs yet...

User Management

Manage system users and API access

Full Service Manual

🛠️ Installation Guide

1. Prerequisites

  • Node.js (v14 or newer)
  • MySQL (e.g., via XAMPP)

2. Database Setup

  1. Open phpMyAdmin or MySQL CLI.
  2. Create a new database named wa_gateway.
  3. Import database.sql.

3. Configuration

Open .env and set your credentials:

DB_HOST=localhost
DB_USER=root
DB_PASSWORD=your_password
DB_NAME=wa_gateway
JWT_SECRET=secure_secret_key

🚀 Postman Collection

Testing API becomes easy with our Postman Collection.

📥 Download Postman Collection

🔌 REST API Guide

Base URL: http://localhost:3000

Auth: Authorization: Bearer <token>

1. Send Text Message

POST /api/send-message
{
    "deviceId": "your-device-id",
    "number": "628123456789",
    "message": "Hello from API!"
}

2. Send Media Message

POST /api/send-media
{
    "deviceId": "your-device-id",
    "number": "628123456789",
    "type": "image",
    "url": "https://example.com/image.jpg",
    "caption": "Check this out!"
}

💻 Code Integration Examples

🐘 PHP (cURL)

Send Text:

$ch = curl_init('http://localhost:3000/api/send-message');
curl_setopt($ch, CURLOPT_HTTPHEADER, ['Authorization: Bearer ' . $token, 'Content-Type: application/json']);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode([
    'deviceId' => 'device-01',
    'number' => '628...', 
    'message' => 'Hello'
]));
$res = curl_exec($ch);

Send Image/Video:

$ch = curl_init('http://localhost:3000/api/send-media');
curl_setopt($ch, CURLOPT_HTTPHEADER, ['Authorization: Bearer ' . $token, 'Content-Type: application/json']);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode([
    'deviceId' => 'device-01',
    'number' => '628...', 
    'type' => 'image', // error 'video'
    'url' => 'https://example.com/media.jpg',
    'caption' => 'Media Caption'
]));
$res = curl_exec($ch);

🟨 JavaScript (Fetch)

await fetch('http://localhost:3000/api/send-message', {
    method: 'POST',
    headers: { 
        'Authorization': `Bearer ${token}`,
        'Content-Type': 'application/json' 
    },
    body: JSON.stringify({
        deviceId: 'device-01',
        number: '628123456789',
        message: 'Hello World'
    })
});

🐍 Python (Requests)

import requests

url = "http://localhost:3000/api/send-message"
headers = {"Authorization": "Bearer YOUR_TOKEN"}
payload = {
    "deviceId": "device-01",
    "number": "628123456789",
    "message": "Hello from Python"
}

response = requests.post(url, json=payload, headers=headers)
print(response.json())

🔵 Go (Native)

import (
    "bytes"
    "net/http"
)

func sendMessage() {
    url := "http://localhost:3000/api/send-message"
    jsonStr := []byte(`{"deviceId":"id","number":"628...","message":"Hi"}`)
    req, _ := http.NewRequest("POST", url, bytes.NewBuffer(jsonStr))
    req.Header.Set("Authorization", "Bearer TOKEN")
    req.Header.Set("Content-Type", "application/json")
    
    client := &http.Client{}
    resp, _ := client.Do(req)
    defer resp.Body.Close()
}

☕ Java (OkHttp)

OkHttpClient client = new OkHttpClient();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "{\"deviceId\":\"id\",\"number\":\"628...\",\"message\":\"Hi\"}");
Request request = new Request.Builder()
  .url("http://localhost:3000/api/send-message")
  .post(body)
  .addHeader("Authorization", "Bearer TOKEN")
  .build();
Response response = client.newCall(request).execute();

🔷 .NET (C#)

using var client = new HttpClient();
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", "TOKEN");

var payload = new { deviceId = "id", number = "628...", message = "Hello" };
var response = await client.PostAsJsonAsync("http://localhost:3000/api/send-message", payload);
var content = await response.Content.ReadAsStringAsync();