WhatsApp Messaging Portal

Create your account

Reset your password

Dashboard

0
Total Devices
0
Connected
0
Sent (Selected Period)
0
Total Sent (All Time)
0
In Queue

Messages by Date

Messages by Device

Quick Actions

WhatsApp Devices

Send Message

Click to upload image, video, audio or document

Max 16MB • JPG, PNG, MP4, PDF, DOC

Bulk Send

Click to upload image, video, audio or document

Max 16MB • JPG, PNG, MP4, PDF, DOC

Message History

Message Queue

Your API Keys

API Documentation

Base URL

https://your-domain.com/api

Authentication

All API requests require authentication using your API key in the header:

X-API-Key: your_api_key_here

POST Send WhatsApp Message

/api/send
Parameters
ParameterTypeRequiredDescription
numberstringPhone number with country code (e.g., 923001234567)
messagestringMessage text (*bold*, _italic_, ~strike~)
mediaUrlstringPublic URL of media file
mediaTypestringimage, video, audio, document
sessionIdstringSpecific device ID (auto-selected if not provided)
Supported Media
TypeFormatsMax Size
imageJPG, PNG, WEBP5 MB
audioMP3, OGG, AMR16 MB
videoMP4, 3GP16 MB
documentPDF, DOC, XLS100 MB

POST Send Bulk Messages

/api/send-bulk
Parameters
ParameterTypeRequiredDescription
messagesarrayArray of message objects
messages[].numberstringPhone number with country code
messages[].messagestringMessage text
messages[].mediaUrlstringMedia URL (optional)
messages[].mediaTypestringMedia type (optional)

GET Get Queue Status

/api/queue

Returns list of pending messages in queue.

GET Get Message History

/api/history?startDate=YYYY-MM-DD&endDate=YYYY-MM-DD

Returns sent/failed message history with optional date filters.

Code Examples

<?php
$curl = curl_init();

// Single message
$data = [
    "number" => "923001234567",
    "message" => "Hello! Your order #12345 has been shipped."
];

// With media attachment
$dataWithMedia = [
    "number" => "923001234567",
    "message" => "Here is your invoice",
    "mediaUrl" => "https://example.com/invoice.pdf",
    "mediaType" => "document"
];

// Bulk messages
$bulkData = [
    "messages" => [
        ["number" => "923001234567", "message" => "Hello User 1"],
        ["number" => "923009876543", "message" => "Hello User 2"]
    ]
];

curl_setopt_array($curl, [
    CURLOPT_URL => "https://your-domain.com/api/send",
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_POST => true,
    CURLOPT_POSTFIELDS => json_encode($data),
    CURLOPT_HTTPHEADER => [
        "X-API-Key: your_api_key_here",
        "Content-Type: application/json"
    ],
]);

$response = curl_exec($curl);
$error = curl_error($curl);
curl_close($curl);

if ($error) {
    echo "Error: " . $error;
} else {
    $result = json_decode($response, true);
    print_r($result);
}
?>
// Using Fetch API
async function sendWhatsAppMessage() {
    const data = {
        number: "923001234567",
        message: "Hello! Your order #12345 has been shipped."
    };

    // With media
    const dataWithMedia = {
        number: "923001234567",
        message: "Here is your invoice",
        mediaUrl: "https://example.com/invoice.pdf",
        mediaType: "document"
    };

    try {
        const response = await fetch('https://your-domain.com/api/send', {
            method: 'POST',
            headers: {
                'X-API-Key': 'your_api_key_here',
                'Content-Type': 'application/json'
            },
            body: JSON.stringify(data)
        });

        const result = await response.json();
        console.log('Success:', result);
    } catch (error) {
        console.error('Error:', error);
    }
}

// Bulk messages
async function sendBulkMessages() {
    const data = {
        messages: [
            { number: "923001234567", message: "Hello User 1" },
            { number: "923009876543", message: "Hello User 2" }
        ]
    };

    const response = await fetch('https://your-domain.com/api/send-bulk', {
        method: 'POST',
        headers: {
            'X-API-Key': 'your_api_key_here',
            'Content-Type': 'application/json'
        },
        body: JSON.stringify(data)
    });

    return response.json();
}
import requests
import json

# API Configuration
API_URL = "https://your-domain.com/api"
API_KEY = "your_api_key_here"

headers = {
    "X-API-Key": API_KEY,
    "Content-Type": "application/json"
}

# Send single message
def send_message(number, message, media_url=None, media_type=None):
    data = {
        "number": number,
        "message": message
    }
    
    if media_url:
        data["mediaUrl"] = media_url
        data["mediaType"] = media_type
    
    response = requests.post(
        f"{API_URL}/send",
        headers=headers,
        json=data
    )
    return response.json()

# Send bulk messages
def send_bulk_messages(messages):
    data = {"messages": messages}
    
    response = requests.post(
        f"{API_URL}/send-bulk",
        headers=headers,
        json=data
    )
    return response.json()

# Example usage
if __name__ == "__main__":
    # Single message
    result = send_message(
        "923001234567",
        "Hello! Your order has been shipped."
    )
    print("Single:", result)
    
    # With attachment
    result = send_message(
        "923001234567",
        "Here is your invoice",
        media_url="https://example.com/invoice.pdf",
        media_type="document"
    )
    print("With Media:", result)
    
    # Bulk messages
    messages = [
        {"number": "923001234567", "message": "Hello User 1"},
        {"number": "923009876543", "message": "Hello User 2"}
    ]
    result = send_bulk_messages(messages)
    print("Bulk:", result)
const axios = require('axios');

// API Configuration
const API_URL = 'https://your-domain.com/api';
const API_KEY = 'your_api_key_here';

const client = axios.create({
    baseURL: API_URL,
    headers: {
        'X-API-Key': API_KEY,
        'Content-Type': 'application/json'
    }
});

// Send single message
async function sendMessage(number, message, mediaUrl = null, mediaType = null) {
    const data = { number, message };
    
    if (mediaUrl) {
        data.mediaUrl = mediaUrl;
        data.mediaType = mediaType;
    }
    
    const response = await client.post('/send', data);
    return response.data;
}

// Send bulk messages
async function sendBulkMessages(messages) {
    const response = await client.post('/send-bulk', { messages });
    return response.data;
}

// Get queue status
async function getQueueStatus() {
    const response = await client.get('/queue');
    return response.data;
}

// Get message history
async function getHistory(startDate, endDate) {
    const response = await client.get('/history', {
        params: { startDate, endDate }
    });
    return response.data;
}

// Example usage
(async () => {
    try {
        // Single message
        const result = await sendMessage(
            '923001234567',
            'Hello! Your order has been shipped.'
        );
        console.log('Single:', result);
        
        // With attachment
        const mediaResult = await sendMessage(
            '923001234567',
            'Here is your invoice',
            'https://example.com/invoice.pdf',
            'document'
        );
        console.log('With Media:', mediaResult);
        
        // Bulk messages
        const bulkResult = await sendBulkMessages([
            { number: '923001234567', message: 'Hello User 1' },
            { number: '923009876543', message: 'Hello User 2' }
        ]);
        console.log('Bulk:', bulkResult);
        
    } catch (error) {
        console.error('Error:', error.response?.data || error.message);
    }
})();
using System;
using System.Net.Http;
using System.Text;
using System.Text.Json;
using System.Threading.Tasks;

public class ChatSuiteClient
{
    private readonly HttpClient _client;
    private readonly string _baseUrl;

    public ChatSuiteClient(string baseUrl, string apiKey)
    {
        _baseUrl = baseUrl;
        _client = new HttpClient();
        _client.DefaultRequestHeaders.Add("X-API-Key", apiKey);
    }

    // Send single message
    public async Task<ApiResponse> SendMessageAsync(
        string number, 
        string message, 
        string mediaUrl = null, 
        string mediaType = null)
    {
        var data = new {
            number,
            message,
            mediaUrl,
            mediaType
        };

        var json = JsonSerializer.Serialize(data);
        var content = new StringContent(json, Encoding.UTF8, "application/json");
        
        var response = await _client.PostAsync($"{_baseUrl}/api/send", content);
        var responseBody = await response.Content.ReadAsStringAsync();
        
        return JsonSerializer.Deserialize<ApiResponse>(responseBody);
    }

    // Send bulk messages
    public async Task<ApiResponse> SendBulkMessagesAsync(List<MessageItem> messages)
    {
        var data = new { messages };
        var json = JsonSerializer.Serialize(data);
        var content = new StringContent(json, Encoding.UTF8, "application/json");
        
        var response = await _client.PostAsync($"{_baseUrl}/api/send-bulk", content);
        var responseBody = await response.Content.ReadAsStringAsync();
        
        return JsonSerializer.Deserialize<ApiResponse>(responseBody);
    }
}

public class MessageItem
{
    public string Number { get; set; }
    public string Message { get; set; }
    public string MediaUrl { get; set; }
    public string MediaType { get; set; }
}

public class ApiResponse
{
    public bool Success { get; set; }
    public string Message { get; set; }
    public int? QueueId { get; set; }
}

// Usage Example
class Program
{
    static async Task Main()
    {
        var client = new ChatSuiteClient(
            "https://your-domain.com",
            "your_api_key_here"
        );

        // Send single message
        var result = await client.SendMessageAsync(
            "923001234567",
            "Hello! Your order has been shipped."
        );
        Console.WriteLine($"Result: {result.Success}");

        // Send with attachment
        var mediaResult = await client.SendMessageAsync(
            "923001234567",
            "Here is your invoice",
            "https://example.com/invoice.pdf",
            "document"
        );
        Console.WriteLine($"Media Result: {mediaResult.Success}");
    }
}

Response Examples

Success Response
{
    "success": true,
    "message": "Message queued successfully",
    "queueId": 12345,
    "status": "pending",
    "estimatedDelivery": "5-20 seconds"
}
Bulk Success Response
{
    "success": true,
    "message": "Bulk messages queued",
    "queued": 50,
    "failed": 0,
    "queueIds": [12345, 12346, 12347, ...]
}
Error Response
{
    "success": false,
    "error": "Invalid API key",
    "code": "UNAUTHORIZED"
}
Validation Error Response
{
    "success": false,
    "error": "Phone number is required",
    "code": "VALIDATION_ERROR",
    "field": "number"
}

Message Status Codes

pending processing sent failed cancelled

Live API Tester

Test your API integration directly from here. Enter your API key and send a test message.

Include country code without + or 00
Supports *bold*, _italic_, ~strikethrough~
// Select an endpoint and fill in the fields to see the request preview
// Response will appear here after executing the request

Rate Limits

Limit TypeDefaultDescription
Message Delay5-20 secondsRandom delay between messages to prevent spam detection
Hourly Limit100/deviceMaximum messages per device per hour
Daily Limit1000/deviceMaximum messages per device per day

User Management

System Settings (V25.22)

Rate Limiting & Delays

Minimum wait between messages (V25.22: 10s)
Maximum wait between messages (V25.22: 25s)
Messages before cooldown
Rest between batches
Max messages per hour (warning only)
Max messages per day (warning only)

Anti-Ban Protection (V25.22)

These settings help prevent WhatsApp bans by avoiding suspicious patterns.

Allow occasional fast sends (10% chance). Keep OFF for better ban protection.
Prevents sending multiple messages to same number in short time.
Default: 300s (5 minutes)

Anti-Ban Protection (Human Simulation)

These features simulate human behavior to reduce WhatsApp ban risk.

Shows "typing..." before each message
Verify number exists on WhatsApp before sending. Reduces failed sends which trigger bans.
Shows "online" status before sending each message

Spam Protection

Same message to max N people
Detection window

Device Rate Limit Status

Loading...