Sign In / Get Started

Instant login and auto-registration via WhatsApp OTP.

+91
Enter your 10-digit Indian WhatsApp number. Instant 6-digit OTP code will be sent.
New users are automatically registered and activated instantly.
Enter 6-digit WhatsApp OTP sent to: +91 XXXXXXXXXX

Customer Portal Console

Monitor your active package limits, scan Baileys gateway QR, and manage your bulk campaign contact book.

Messages Sent
0/
Unlimited Mode
Platform Mode
Pro Unlimited
ACTIVE
Saved Contacts
0
Manage & Bulk Send →
Gateway Status
Checking...
Node.js Engine
Your Unique API Secret Key

Use this `x-api-key` header for sending HTTP requests to `https://wa.avinandan.site`

Auth Ready
Checking...
Security Note: Your API key is mapped directly to your account (`user_id`). Webhooks dispatched from Node.js automatically route to your portal session.
Engine Status & Throughput

Active unlimited Baileys messaging node and session metrics

UNLIMITED
Messages Dispatched
0 /
Active Engine
Quota automatically resets at midnight (IST) Refresh Stats
WhatsApp Multi-Device QR

Scan with your phone (Linked Devices) to connect instantly

Fetching live QR...

Syncing with Node.js Engine...
Quick API Test Message

Dispatch a single quick message using your assigned `x-api-key`

COMPLETE API REFERENCE

SaaS Multi-Device Gateway Reference

Automate text messages, rich media (photos/PDFs), anti-ban batch broadcasts, group management, and number verification.

Your Live Header (`x-api-key`):
Checking...
POST `/api/message/send-message` (Standard Text)

Dispatch standard markdown formatted messages (`*bold*`, `_italics_`, `~strikethrough~`, emojis) instantly.

HTTPS POST
POST https://waapi.avinandan.site/api/message/send-message
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`)
HTTP 200 OK (Success Response)
{
  "success": true,
  "message": "Message sent successfully",
  "data": {
    "key": {
      "remoteJid": "919812345678@s.whatsapp.net",
      "fromMe": true,
      "id": "3EB0X9A8B7C6D5E4F3"
    },
    "status": "PENDING"
  }
}
HTTP 400 / 401 (Error Response)
{
  "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.

HTTPS POST
POST https://waapi.avinandan.site/api/message/send-image
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`)
HTTP 200 OK (Success Response)
{
  "success": true,
  "message": "Image sent successfully",
  "data": {
    "key": {
      "remoteJid": "919812345678@s.whatsapp.net",
      "fromMe": true,
      "id": "4FA1Y9B8C7D6E5F4G3"
    },
    "mediaType": "image",
    "status": "PENDING"
  }
}
HTTP 400 / 401 (Error Response)
{
  "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.

HTTPS POST
POST https://waapi.avinandan.site/api/message/send-document
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`)
HTTP 200 OK (Success Response)
{
  "success": true,
  "message": "Document sent successfully",
  "data": {
    "key": {
      "remoteJid": "919812345678@s.whatsapp.net",
      "fromMe": true,
      "id": "5GB2Z0C9D8E7F6G5H4"
    },
    "fileName": "Invoice_1042.pdf",
    "status": "PENDING"
  }
}
HTTP 400 / 401 (Error Response)
{
  "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.

HTTPS POST
POST https://waapi.avinandan.site/api/message/send-batch
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`)
HTTP 200 OK (Success Response)
{
  "success": true,
  "message": "Batch dispatch initiated successfully",
  "data": {
    "batchId": "BATCH_8892_Q",
    "totalMessages": 2,
    "delayRange": "3s - 7s",
    "status": "QUEUED"
  }
}
HTTP 400 / 401 (Error Response)
{
  "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.

HTTPS GET
GET https://waapi.avinandan.site/api/contact/check?number=919812345678
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`)
HTTP 200 OK (Success Response)
{
  "success": true,
  "data": {
    "query": "919812345678",
    "onWhatsApp": true,
    "jid": "919812345678@s.whatsapp.net",
    "profilePictureUrl": "https://pps.whatsapp.net/v/t61.24694...",
    "status": "Available 🚀"
  }
}
HTTP 400 / 404 (Not on WhatsApp / Error)
{
  "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`).

HTTPS GET / POST
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`)
HTTP 200 OK (Success Response)
{
  "success": true,
  "message": "Group created successfully",
  "data": {
    "gid": "120363189211112233@g.us",
    "subject": "VIP Clients Support Group",
    "participantsCount": 2,
    "creationTimestamp": 1719999999
  }
}
HTTP 400 / 401 (Error Response)
{
  "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.

HTTPS GET / POST
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`)
HTTP 200 OK (Connected Status)
{
  "success": true,
  "status": "connected",
  "device": {
    "phone": "919812345678",
    "platform": "smba / android",
    "pushname": "Avinandan eServices"
  }
}
HTTP 200 OK (Disconnected Status)
{
  "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

0 Selected Unselect All
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`)

Total Sent
0
Delivered
0
Read (Seen)
0
Failed
0
Message Ref Recipient Number Message Snippet Delivery Status Type Sent Timestamp
Loading outbox history...