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
Bulk Send
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
| Parameter | Type | Required | Description |
|---|---|---|---|
number | string | ✓ | Phone number with country code (e.g., 923001234567) |
message | string | ✓ | Message text (*bold*, _italic_, ~strike~) |
mediaUrl | string | Public URL of media file | |
mediaType | string | image, video, audio, document | |
sessionId | string | Specific device ID (auto-selected if not provided) |
Supported Media
| Type | Formats | Max Size |
|---|---|---|
image | JPG, PNG, WEBP | 5 MB |
audio | MP3, OGG, AMR | 16 MB |
video | MP4, 3GP | 16 MB |
document | PDF, DOC, XLS | 100 MB |
POST Send Bulk Messages
/api/send-bulk
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
messages | array | ✓ | Array of message objects |
messages[].number | string | ✓ | Phone number with country code |
messages[].message | string | ✓ | Message text |
messages[].mediaUrl | string | Media URL (optional) | |
messages[].mediaType | string | Media 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 Type | Default | Description |
|---|---|---|
| Message Delay | 5-20 seconds | Random delay between messages to prevent spam detection |
| Hourly Limit | 100/device | Maximum messages per device per hour |
| Daily Limit | 1000/device | Maximum messages per device per day |
User Management
System Settings (V25.22)
Rate Limiting & Delays
Anti-Ban Protection (V25.22)
These settings help prevent WhatsApp bans by avoiding suspicious patterns.
Default: 300s (5 minutes)
Anti-Ban Protection (Human Simulation)
These features simulate human behavior to reduce WhatsApp ban risk.
Spam Protection
Device Rate Limit Status
Loading...