Sign In / Get Started
Instant login and auto-registration via WhatsApp OTP.
Customer Portal Console
Monitor your active package limits, scan Baileys gateway QR, and manage your bulk campaign contact book.
Your Unique API Secret Key
Use this `x-api-key` header for sending HTTP requests to `https://wa.avinandan.site`
Engine Status & Throughput
Active unlimited Baileys messaging node and session metrics
WhatsApp Multi-Device QR
Scan with your phone (Linked Devices) to connect instantly
Fetching live QR...
Quick API Test Message
Dispatch a single quick message using your assigned `x-api-key`
SaaS Multi-Device Gateway Reference
Automate text messages, rich media (photos/PDFs), anti-ban batch broadcasts, group management, and number verification.
Checking...
POST `/api/message/send-message` (Standard Text)
Dispatch standard markdown formatted messages (`*bold*`, `_italics_`, `~strikethrough~`, emojis) instantly.
Request Payload (JSON)
| Parameter | Type | Required | Description & Example |
|---|---|---|---|
number |
String | YES | Recipient WhatsApp phone number with country code (e.g., 919812345678).
|
message |
String | YES | Message content. Example: Hello from our portal! *Have a great day!* 🚀
|
Copy & Paste Snippets (Auto-Populated with Your Key)
<?php
$apiKey = "YOUR_API_KEY";
$payload = json_encode(["number" => "919812345678", "message" => "Hello! Welcome to our SaaS service 🚀"]);
$ch = curl_init("https://waapi.avinandan.site/api/message/send-message");
curl_setopt_array($ch, [CURLOPT_RETURNTRANSFER => true, CURLOPT_POST => true, CURLOPT_POSTFIELDS => $payload, CURLOPT_HTTPHEADER => ["Content-Type: application/json", "x-api-key: " . $apiKey]]);
$response = curl_exec($ch); curl_close($ch); echo $response;
?>
const res = await fetch("https://waapi.avinandan.site/api/message/send-message", {
method: "POST",
headers: { "Content-Type": "application/json", "x-api-key": "YOUR_API_KEY" },
body: JSON.stringify({ number: "919812345678", message: "Hello! Welcome to our SaaS service 🚀" })
});
console.log(await res.json());
import requests
headers = { "Content-Type": "application/json", "x-api-key": "YOUR_API_KEY" }
data = { "number": "919812345678", "message": "Hello! Welcome to our SaaS service 🚀" }
res = requests.post("https://waapi.avinandan.site/api/message/send-message", json=data, headers=headers)
print(res.json())
curl -X POST https://waapi.avinandan.site/api/message/send-message \
-H "Content-Type: application/json" \
-H "x-api-key: YOUR_API_KEY" \
-d '{"number": "919812345678", "message": "Hello! Welcome to our SaaS service 🚀"}'
Standard Gateway JSON Response (`/api/message/send-message`)
{
"success": true,
"message": "Message sent successfully",
"data": {
"key": {
"remoteJid": "919812345678@s.whatsapp.net",
"fromMe": true,
"id": "3EB0X9A8B7C6D5E4F3"
},
"status": "PENDING"
}
}
{
"success": false,
"error": "Invalid API Key or Device disconnected. Please link QR scanner from portal."
}
POST `/api/message/send-image` (Image URL or File Upload)
Send banners, invoices, promotional photos, or receipts (`.jpg`, `.png`, `.webp`) with custom caption text.
Payload Parameters (`application/json`)
| Parameter | Type | Required | Description & Example |
|---|---|---|---|
number |
String | YES | Recipient phone number (e.g., 919812345678). |
imageUrl |
String | YES | Direct public URL of the image (e.g., https://example.com/banner.jpg).
|
caption |
String | OPTIONAL | Caption displayed underneath the image. Example:
Check out our latest offer! 🎉 |
Code Examples (Send Image via Public URL)
<?php
$apiKey = "YOUR_API_KEY";
$payload = json_encode([
"number" => "919812345678",
"imageUrl" => "https://example.com/promo.jpg",
"caption" => "🎉 Special 50% discount just for you!"
]);
$ch = curl_init("https://waapi.avinandan.site/api/message/send-image");
curl_setopt_array($ch, [CURLOPT_RETURNTRANSFER => true, CURLOPT_POST => true, CURLOPT_POSTFIELDS => $payload, CURLOPT_HTTPHEADER => ["Content-Type: application/json", "x-api-key: " . $apiKey]]);
echo curl_exec($ch); curl_close($ch);
?>
curl -X POST https://waapi.avinandan.site/api/message/send-image \
-H "Content-Type: application/json" \
-H "x-api-key: YOUR_API_KEY" \
-d '{"number": "919812345678", "imageUrl": "https://example.com/promo.jpg", "caption": "🎉 Special discount!"}'
Standard Gateway JSON Response (`/api/message/send-image`)
{
"success": true,
"message": "Image sent successfully",
"data": {
"key": {
"remoteJid": "919812345678@s.whatsapp.net",
"fromMe": true,
"id": "4FA1Y9B8C7D6E5F4G3"
},
"mediaType": "image",
"status": "PENDING"
}
}
{
"success": false,
"error": "Failed to download image URL or invalid media format."
}
POST `/api/message/send-document` (PDF, Excel, Zip Reports)
Send downloadable documents (`.pdf`, `.xlsx`, `.zip`, `.doc`) directly to customers' WhatsApp chats.
Payload Parameters (`application/json`)
| Parameter | Type | Required | Description & Example |
|---|---|---|---|
number |
String | YES | Recipient phone number (e.g., 919812345678). |
documentUrl |
String | YES | Public HTTP/HTTPS URL of the document (e.g.,
https://domain.com/invoice.pdf). |
fileName |
String | YES | Filename shown in WhatsApp (e.g., Invoice_July_2026.pdf). |
caption |
String | OPTIONAL | Caption displayed below the file attachment. |
<?php
$apiKey = "YOUR_API_KEY";
$payload = json_encode([
"number" => "919812345678",
"documentUrl" => "https://example.com/reports/Invoice_1042.pdf",
"fileName" => "Invoice_1042.pdf",
"caption" => "📄 Here is your monthly billing statement."
]);
$ch = curl_init("https://waapi.avinandan.site/api/message/send-document");
curl_setopt_array($ch, [CURLOPT_RETURNTRANSFER => true, CURLOPT_POST => true, CURLOPT_POSTFIELDS => $payload, CURLOPT_HTTPHEADER => ["Content-Type: application/json", "x-api-key: " . $apiKey]]);
echo curl_exec($ch); curl_close($ch);
?>
Standard Gateway JSON Response (`/api/message/send-document`)
{
"success": true,
"message": "Document sent successfully",
"data": {
"key": {
"remoteJid": "919812345678@s.whatsapp.net",
"fromMe": true,
"id": "5GB2Z0C9D8E7F6G5H4"
},
"fileName": "Invoice_1042.pdf",
"status": "PENDING"
}
}
{
"success": false,
"error": "Document exceeds maximum allowed upload size (100MB) or URL unreachable."
}
POST `/api/message/send-batch` (Anti-Ban Batch Queue)
Dispatch an array of multiple messages sequentially with randomized human-like delays (3-7 seconds) between dispatches to protect your phone number from getting banned.
curl -X POST https://waapi.avinandan.site/api/message/send-batch \
-H "Content-Type: application/json" \
-H "x-api-key: YOUR_API_KEY" \
-d '{
"messages": [
{"number": "919811111111", "message": "Hi Client 1, your order #101 is shipped!"},
{"number": "917022222222", "message": "Hi Client 2, your order #102 is ready!"}
]
}'
Standard Gateway JSON Response (`/api/message/send-batch`)
{
"success": true,
"message": "Batch dispatch initiated successfully",
"data": {
"batchId": "BATCH_8892_Q",
"totalMessages": 2,
"delayRange": "3s - 7s",
"status": "QUEUED"
}
}
{
"success": false,
"error": "Invalid payload format: 'messages' must be a non-empty array of objects."
}
GET `/api/contact/check` & GET `/api/contact/profile`
Check whether a phone number exists on WhatsApp (`onWhatsApp: true/false`) and fetch Profile DP (`profilePictureUrl`) before messaging.
1. cURL Verification Example (`/api/contact/check`)
curl -X GET "https://waapi.avinandan.site/api/contact/check?number=919812345678" \
-H "x-api-key: YOUR_API_KEY"
2. Fetch Profile DP & Status (`/api/contact/profile`)
curl -X GET "https://waapi.avinandan.site/api/contact/profile?number=919812345678" \
-H "x-api-key: YOUR_API_KEY"
Standard Gateway JSON Response (`/api/contact/check` & `/profile`)
{
"success": true,
"data": {
"query": "919812345678",
"onWhatsApp": true,
"jid": "919812345678@s.whatsapp.net",
"profilePictureUrl": "https://pps.whatsapp.net/v/t61.24694...",
"status": "Available 🚀"
}
}
{
"success": true,
"data": {
"query": "919800000000",
"onWhatsApp": false,
"error": "Number not registered on WhatsApp."
}
}
POST `/api/group/create` & GET `/api/group/list`
Programmatically create WhatsApp groups (`subject`, `participants`) and list your participating group JIDs (`@g.us`).
1. List All Active Groups (`GET /api/group/list`)
curl -X GET https://waapi.avinandan.site/api/group/list \
-H "x-api-key: YOUR_API_KEY"
2. Create New Group (`POST /api/group/create`)
curl -X POST https://waapi.avinandan.site/api/group/create \
-H "Content-Type: application/json" \
-H "x-api-key: YOUR_API_KEY" \
-d '{
"subject": "VIP Clients Support Group",
"participants": ["919812345678", "917012345678"]
}'
Standard Gateway JSON Response (`/api/group/create` & `/list`)
{
"success": true,
"message": "Group created successfully",
"data": {
"gid": "120363189211112233@g.us",
"subject": "VIP Clients Support Group",
"participantsCount": 2,
"creationTimestamp": 1719999999
}
}
{
"success": false,
"error": "Failed to add one or more participants due to privacy settings or invalid JID."
}
GET `/api/status` & POST `/api/status/logout`
Monitor your Baileys gateway connection (`status: connected`) or remotely log out the connected phone from server.
1. Check Live Gateway Status (`GET /api/status`)
curl -X GET https://waapi.avinandan.site/api/status \
-H "x-api-key: YOUR_API_KEY"
2. Remote Logout & Session Clear (`POST /api/status/logout`)
curl -X POST https://waapi.avinandan.site/api/status/logout \
-H "x-api-key: YOUR_API_KEY"
Standard Gateway JSON Response (`/api/status` & `/logout`)
{
"success": true,
"status": "connected",
"device": {
"phone": "919812345678",
"platform": "smba / android",
"pushname": "Avinandan eServices"
}
}
{
"success": true,
"status": "disconnected",
"message": "Device offline or session terminated. Scan QR code to reconnect."
}
Standard Gateway JSON Architecture Summary
Every single API endpoint across all 4 categories strictly adheres to our standardized JSON payload structure shown inside each section above.
Universal Success Guarantee
Whenever an operation succeeds, the top-level
property strictly returns "success": true alongside descriptive
"message" and "data" objects containing the Baileys JID or transaction
ID.
Universal Error Handling
In case of authentication errors (401), invalid
JSON (400), or disconnected sessions, the gateway returns "success": false
alongside a descriptive "error" string explaining the exact reason.
SaaS Contact Book & Bulk Dispatcher
Manage saved WhatsApp numbers, import spreadsheets (`.xlsx`/`.csv`), and broadcast bulk campaigns
| Contact Name & Tag | WhatsApp Number | Notes / Description | Created Date | Quick Actions | |
|---|---|---|---|---|---|
|
Loading saved contacts... |
|||||
Recent Webhook Event Logs
Live incoming callbacks (`QR`, `connection`, `messages`) from Baileys Node.js gateway
| ID | Event Type | Status | Payload Snippet | Timestamp |
|---|---|---|---|---|
| No incoming webhooks recorded yet. | ||||
Outbox & Delivery Analytics
Real-time message dispatch history with live Baileys ACK delivery verification (`Sent`, `Delivered`, `Read/Seen`)
| Message Ref | Recipient Number | Message Snippet | Delivery Status | Type | Sent Timestamp |
|---|---|---|---|---|---|
| Loading outbox history... | |||||